Features: - Opencode AI chat interface - SSH tunnel for secure API communication - Auto-install Opencode on remote servers - API key management with server-side storage - Session history and management - Integration with flutter_server_box server list
126 lines
3.2 KiB
Markdown
126 lines
3.2 KiB
Markdown
# Flutter Opencode Client
|
||
|
||
基于 [flutter_server_box](https://github.com/lollipopkit/flutter_server_box) 修改的 Android Opencode (opencode.ai) API 访问客户端。
|
||
|
||
## 功能特性
|
||
|
||
- 🔐 **SSH 隧道连接**: 通过 SSH 安全连接到远程服务器
|
||
- 🤖 **Opencode AI**: 集成 opencode.ai API,提供智能助手功能
|
||
- 📲 **自动安装**: 一键自动在服务器上安装 Opencode
|
||
- 🔑 **密钥管理**: 安全存储 API 密钥到服务器端(明文存储)
|
||
- 💬 **聊天界面**: 现代化的聊天界面,支持会话历史
|
||
- 📱 **Android 支持**: 专为 Android 优化的原生体验
|
||
|
||
## 安装
|
||
|
||
### 要求
|
||
|
||
- Flutter 3.11.0+
|
||
- Dart 3.0+
|
||
- Android SDK 21+
|
||
|
||
### 克隆项目
|
||
|
||
```bash
|
||
git clone https://github.com/yourusername/flutter_opencode_client.git
|
||
cd flutter_opencode_client
|
||
```
|
||
|
||
### 安装依赖
|
||
|
||
```bash
|
||
flutter pub get
|
||
```
|
||
|
||
### 运行
|
||
|
||
```bash
|
||
flutter run
|
||
```
|
||
|
||
### 构建 APK
|
||
|
||
```bash
|
||
flutter build apk --release
|
||
```
|
||
|
||
## 使用说明
|
||
|
||
### 1. 添加服务器
|
||
|
||
在 ServerBox 界面添加你的 SSH 服务器信息:
|
||
- 服务器 IP/域名
|
||
- 端口 (默认 22)
|
||
- 用户名
|
||
- 密码或私钥
|
||
|
||
### 2. 启动 Opencode
|
||
|
||
在服务器详情页点击 **Opencode** 按钮:
|
||
- 首次使用会显示安装向导
|
||
- 配置 Opencode 安装路径(默认 `/usr/local/bin/opencode`)
|
||
- 配置 API 端口(默认 `8080`)
|
||
- 输入 Opencode API Key(可选)
|
||
- 点击 "Quick Install & Connect"
|
||
|
||
### 3. 开始对话
|
||
|
||
安装完成后自动进入聊天界面:
|
||
- 输入消息与 Opencode AI 对话
|
||
- 查看会话历史
|
||
- 创建多个独立会话
|
||
|
||
### 4. API 密钥管理
|
||
|
||
在设置中管理 API 密钥:
|
||
- 密钥以明文形式存储在服务器 `~/.config/opencode/api_key.txt`
|
||
- 文件权限设置为 600(仅所有者可读写)
|
||
- 每个服务器可配置独立密钥
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
lib/
|
||
├── data/
|
||
│ ├── model/opencode/
|
||
│ │ ├── models.dart # 数据模型
|
||
│ │ └── ssh_tunnel.dart # SSH 隧道管理
|
||
│ ├── provider/opencode/
|
||
│ │ └── opencode.dart # Riverpod 状态管理
|
||
│ ├── store/
|
||
│ │ └── opencode_store.dart # 本地存储
|
||
│ └── model/app/menu/
|
||
│ └── server_func.dart # 服务器功能按钮
|
||
├── view/page/opencode/
|
||
│ ├── chat_page.dart # 聊天界面
|
||
│ ├── setup_page.dart # 安装向导
|
||
│ └── key_manager_page.dart # 密钥管理
|
||
└── main.dart
|
||
```
|
||
|
||
## 安全性说明
|
||
|
||
⚠️ **重要提示**
|
||
|
||
1. **API 密钥存储**: 密钥以明文形式存储在服务器端,文件权限设置为 600
|
||
2. **SSH 连接**: 所有通信通过 SSH 隧道加密
|
||
3. **服务器安全**: 请确保您的服务器已妥善保护,仅允许授权访问
|
||
4. **密钥传输**: 密钥通过 SSH 通道传输到服务器,不在公网明文传输
|
||
|
||
## 依赖项
|
||
|
||
- `dartssh2`: SSH 客户端
|
||
- `flutter_riverpod`: 状态管理
|
||
- `hive_ce_flutter`: 本地存储
|
||
- `freezed_annotation`: 代码生成
|
||
- 其他 flutter_server_box 原有依赖
|
||
|
||
## 许可证
|
||
|
||
基于 flutter_server_box 的许可证 (GPL-3.0)
|
||
|
||
## 致谢
|
||
|
||
- [flutter_server_box](https://github.com/lollipopkit/flutter_server_box) - 基础项目
|
||
- [Opencode](https://opencode.ai) - AI 助手平台
|