# open-cli-agent
**Repository Path**: beau0303/open-cli-agent
## Basic Information
- **Project Name**: open-cli-agent
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-04-07
- **Last Updated**: 2026-04-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# open-cli-agent
> **将任意 AI CLI 直接变成强大的服务器 Agent。**
>
> 没看到你需要的服务器CLI管理界面?增加支持通常只要 10 行代码。
>
> [English](./README.md) | 中文
---
## 简介
**open-cli-agent** 将任何AI命令行界面(CLI)转变为强大的服务器Agent。
没找到你需要的服务器命令行界面(CLI)?只需10行代码即可添加支持。你可以直接在你的服务器上安装任意AI CLI和open-cli-agent,然后通过open-cli-agent自带的对话页面使用服务器上的AI CLI,你可以利用它取代你开发的各种大同小异的Agent。拥抱变化,你应该直接拥有世界上所有的skills、mcp以及未来更多的能力
### 支持的 AI CLI 工具
| CLI 工具 | 命令 | 流式输出 | 权限参数 |
|---------|------|---------|---------|
| **GitHub Copilot CLI** | `copilot` | ✅ JSON Lines | `--allow-all` |
| **Qwen CLI** | `qwen` | ✅ stream-json | `--yolo` |
| **Claude Code** | `claude` | ✅ stream-json | `--dangerously-skip-permissions` |
| **Gemini CLI** | `gemini` | ✅ stream-json | `--all-tools` |
| **OpenAI Codex CLI** | `codex` | ✅ JSON Lines | `--dangerously-bypass-approvals-and-sandbox` |
| **Aider** | `aider` | ⚠️ 纯文本 | `--yes` |
| **OpenCode** | `opencode` | ✅ JSON | `--yolo` |
| **Amazon Q Developer** | `q` | ⚠️ 纯文本 | `--accept-all` |
| **Ollama** | `ollama` | ⚠️ 纯文本 | 无需参数 |
> 详细 CLI 配置请查看 [CLI 支持文档](./CLI_SUPPORT.md)。
### 主要特性
- 无缝升级:将现有的 AI CLI 工具(如 Copilot、Claude、Qwen、codex 等 9 种)瞬间转换为服务器级 Agent。
- 拒绝重复造轮子:直接复用成熟的 AI CLI 工具,无需重写底层逻辑
- 上限极高:让你的 Agent 能力上限直接对齐业界顶尖工具(如 Claude Code、Copilot、Codex)。
- 业务自动化:不仅仅是开发助手,更能升级为处理复杂业务的自动化 Agent。
- 灵活性强:支持电脑和手机浏览器对话界面
- 安全可控:可以对各种CLI配置各种灵活的权限控制
---
## 快速开始
### 前置要求
- **Node.js** `20.19+` 或 `22.12+`
- **任意一个支持的 AI CLI**,例如:
- **GitHub Copilot CLI**(`copilot`)
- **Qwen CLI**(`qwen`)
- **Claude Code**(`claude`)
- **Gemini CLI**(`gemini`)
- **OpenAI Codex CLI**(`codex`)
- **Aider**(`aider`)
- **OpenCode**(`opencode`)
- **Amazon Q Developer**(`q`)
- **Ollama**(`ollama`)
### 安装步骤
1. **克隆项目**
```bash
git clone https://github.com/zyh-future/open-cli-agent.git
cd open-cli-agent
```
2. **切换到兼容的 Node.js 版本**
```bash
nvm install 20
nvm use 20
```
3. **安装依赖**
```bash
cd server && npm install && cd ..
cd web && npm install && cd ..
```
4. **配置服务**
编辑 `server/config.json`:
```json
{
"password": "your_password",
"ai_cli_path": "copilot",
"permissions": {
"preset": "full"
}
}
```
`ai_cli_path` 支持的值:
- `"copilot"` 对应 GitHub Copilot CLI
- `"qwen"` 对应 Qwen CLI
- `"claude"` 对应 Claude Code
- `"gemini"` 对应 Gemini CLI
- `"codex"` 对应 OpenAI Codex CLI
- `"aider"` 对应 Aider
- `"opencode"` 对应 OpenCode
- `"q"` 对应 Amazon Q Developer
- `"ollama"` 对应 Ollama
> 详细配置请查看 [CLI 支持文档](./CLI_SUPPORT.md)。
5. **构建前端**
```bash
cd web && npm run build && cd ..
```
6. **启动服务**
```bash
./start.sh
```
7. **访问网页**
打开 `http://localhost:3000`
> 如果执行 `npm run build` 时看到 `Vite requires Node.js version 20.19+ or 22.12+`,说明当前 Node.js 版本过低。请先切换到 Node 20,再重新安装依赖并构建。
---
## 项目结构
```text
open-cli-agent/
├── server/ # 后端服务
│ ├── index.js # Express + WebSocket 服务器
│ ├── cli-manager.js # CLI 调用管理器
│ ├── session-manager.js # 会话管理
│ ├── config.json # 运行时配置
│ └── package.json
├── web/ # 前端应用
│ ├── src/
│ │ ├── components/
│ │ │ ├── Chat.vue
│ │ │ ├── Sidebar.vue
│ │ │ ├── Login.vue
│ │ │ └── LanguageSwitcher.vue
│ │ ├── i18n/
│ │ ├── locales/
│ │ ├── App.vue
│ │ └── main.js
│ ├── dist/ # 构建产物
│ └── package.json
├── session/ # 会话数据
│ ├── sessions-index.json
│ └── session-*.jsonl
├── start.sh # 启动脚本
├── CLI_SUPPORT.md # CLI 支持说明
├── PERMISSIONS.md # 权限说明
└── README.md
```
---
## 配置说明
### 基础配置
编辑 `server/config.json`:
```json
{
"password": "aaa",
"ai_cli_path": "copilot",
"permissions": {
"preset": "full"
}
}
```
### 权限配置
**问题**:使用 open-cli-agent 时遇到 `Permission denied`?
**解决方案**:配置 `permissions` 字段。
> 不同 CLI 使用不同的权限参数。open-cli-agent 会根据 `ai_cli_path` 自动选择正确的参数。
>
> 详细权限行为请查看 [CLI_SUPPORT.md](./CLI_SUPPORT.md) 和 [PERMISSIONS.md](./PERMISSIONS.md)。
#### 预设模式
1. **`full`**:完全权限,推荐个人使用
```json
{ "permissions": { "preset": "full" } }
```
允许浏览器访问、文件读写、Shell 命令、URL 访问等能力。
2. **`tools-only`**:允许工具执行,但限制 URL 和路径访问
```json
{ "permissions": { "preset": "tools-only" } }
```
3. **`safe`**:最小权限,适合更严格的环境
```json
{ "permissions": { "preset": "safe" } }
```
4. **`custom`**:高级自定义配置
```json
{
"permissions": {
"preset": "custom",
"custom": {
"allowed_dirs": ["/path/to/project"],
"allowed_urls": ["github.com"],
"allowed_tools": ["chrome-devtools", "write"]
}
}
}
```
---
## 使用说明
1. 使用 `server/config.json` 里配置的密码登录。
2. 通过侧边栏创建新会话。
3. 输入消息后按 `Enter` 发送。
4. 在会话列表里切换会话。
5. 点击右侧删除按钮删除会话。
6. 通过侧边栏顶部的 `中文 / EN` 按钮切换语言。
---
## 技术栈
### 后端
- **Node.js** + **Express** 用于 HTTP 服务
- **ws** 用于 WebSocket 通信
- **child_process** 用于 AI CLI 进程管理
### 前端
- **Vue 3** 用于响应式界面
- **Vite** 用于构建
- **WebSocket** 用于实时更新
- **i18n** 用于双语界面文本
---
## API 端点
### REST API
- `GET /api/sessions` 获取所有会话
- `POST /api/sessions` 创建新会话
- `DELETE /api/sessions/:id` 删除会话
- `GET /api/sessions/:id/history` 获取会话历史
- `PATCH /api/sessions/:id` 重命名会话
### WebSocket
- `ws://localhost:3000/ws` 用于实时聊天连接
消息示例:
```json
{ "type": "auth", "password": "..." }
{ "type": "select_session", "sessionId": "..." }
{ "type": "message", "text": "..." }
```
---
## 开发
### 前端开发模式
```bash
cd web
npm run dev
```
然后访问 `http://localhost:5173`。
### 后端开发模式
```bash
cd server
node index.js
```
---
## 故障排查
### 1. `Permission denied`
原因:CLI 在非交互模式下没有拿到必需的权限参数。
解决:
将 `config.json` 中的 `permissions.preset` 设置为 `full`,或者改成更适合当前环境的权限预设。
### 2. 连接失败
原因:服务未启动、正在重启,或者端口已被占用。
解决:
- 检查后端是否监听在 `3000` 端口
- 查看服务日志
- 确认浏览器访问的主机和端口正确
### 3. 找不到 CLI
原因:AI CLI 未安装,或不在 `PATH` 中。
解决:
- 安装目标 CLI
- 或者把 `ai_cli_path` 配置成完整可执行文件路径
- 查看 [CLI_SUPPORT.md](./CLI_SUPPORT.md) 确认支持范围
---
## 贡献
欢迎提交 Issue 和 Pull Request。
### 添加新的 CLI 支持
如果要添加新的 CLI,只需要修改 `server/cli-manager.js`:
1. 在 `detectCliType()` 中加入 CLI 类型识别
2. 在 `buildPermissionArgs()` 中加入对应权限参数映射
3. 确认输出格式行为,例如 JSON Lines、JSON 数组或纯文本
很多情况下,大约 **10 行代码** 就能加完支持。
---
## 许可证
[MIT](./LICENSE)
---
## 相关文档
- [CLI 支持文档](./CLI_SUPPORT.md)
- [权限说明](./PERMISSIONS.md)
## Show
-
- 