# 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 - Pc - Phone