catalog/repos/0xmsc--coding-assistant.md

189 lines
5.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Python 编程助手 CLI
`CLI工具` `编程助手` `AI代理` `MCP服务器` `Python`
# 编程助手
编程助手是一个基于 Python 的命令行工具,专为编程工作流设计。它集成了基于边界的智能代理循环、内置本地工具,以及可选的外部 MCP 服务器支持。
## 核心特性
- 内置本地工具Shell 命令、Python 执行、文件系统操作、TODO 管理和后台任务工具。
- 支持通过 stdio 或 SSE 连接外部 MCP 服务器。
- 基于 Prompt-toolkit 的交互式命令行界面。
- 内置默认指令和技能包,支持配置额外的技能目录。
- 无内置沙箱隔离;如需隔离,请在外部沙箱中运行。
## 环境要求
- Python 3.12+。
- 推荐使用 `uv` 进行安装和运行。
- 所选 OpenAI 兼容服务商的 API 密钥,例如 `OPENAI_API_KEY``OPENROUTER_API_KEY`
- 外部 MCP 服务器的可选依赖,例如基于 NPM 的服务器需要 Node.js/npm。
## 安装
使用 `uv` 安装:
```bash
uv tool install coding-assistant-cli
```
本地开发:
```bash
uv sync
```
## 快速开始
启动交互式会话:
```bash
coding-assistant --model "openai/gpt-5-mini"
```
查看可用选项:
```bash
coding-assistant --help
```
公开支持的接口为 CLI 命令行界面。内部 Python 模块可能在不通知的情况下发生变更。
## CLI 参数说明
- `--model`:选择使用的模型(必填)。
- `--instructions`:追加自定义指令。
- `--mcp-servers`:以 JSON 字符串形式配置外部 MCP 服务器。
- `--trace`:记录模型请求和响应的追踪日志。
- `--wait-for-debugger`:在 `1234` 端口等待调试器连接。
- `--skills-directories`:加载额外的技能目录。
CLI 为交互式模式。启动时会打印一个本地 WebSocket 端点;当会话空闲时,远程客户端可通过该端点向同一会话发送提示、接收流式更新并取消当前运行。
交互式 CLI 还支持以下命令:
- `/exit`
- `/help`
- `/compact`
- `/image <路径或URL>`
## MCP 服务器
通过重复使用 `--mcp-servers` 参数并传入 JSON 字符串来配置 MCP 服务器。同时支持基于 stdio 的服务器和远程 SSE 服务器。
stdio 服务器示例:
```json
{
"name": "filesystem",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "{home_directory}"]
}
```
SSE 服务器示例:
```json
{
"name": "remote-mcp",
"url": "http://localhost:8000/sse"
}
```
参数支持变量替换,可用变量包括 `{home_directory}``{working_directory}`
示例:
```bash
coding-assistant \
--model "openrouter/openai/gpt-4o-mini" \
--mcp-servers \
'{"name": "filesystem", "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "{home_directory}"]}' \
'{"name": "fetch", "command": "uvx", "args": ["mcp-server-fetch"]}'
```
## 内置本地工具
默认 CLI 包含以下本地工具:
- `shell_execute`:执行 Shell 命令。
- `python_execute`:运行 Python 代码片段。
- `filesystem_write_file``filesystem_edit_file`:针对性的文件修改操作。
- `todo_add``todo_list_todos``todo_complete`TODO 任务跟踪。
- `tasks_list_tasks``tasks_get_status``tasks_get_output``tasks_kill_task``tasks_remove_task`:后台任务管理。
核心运行时还内置了辅助工具,例如 `compact_conversation``redirect_tool_call`
## 技能Skills
编程助手目前内置了一个示例技能:
- `example`
该示例用于演示技能打包机制和 `SKILL.md` 的预期布局。项目有实际内置技能后,可以替换或删除此示例。
通过 `--skills-directories` 可添加更多技能。每个额外的技能目录下应包含含有 `SKILL.md` 文件的子目录:
```text
skills-root/
├── my-skill/
│ ├── SKILL.md
│ ├── references/
│ └── scripts/
└── another-skill/
└── SKILL.md
```
默认 CLI 提供以下技能工具:
- `skills_list_resources`
- `skills_read`
这些工具仅暴露内置及已配置技能目录中的文件。
技能名称在内置技能和用户自定义技能中必须唯一。如发生冲突CLI 会立即报错并提示冲突目录。
## 外部沙箱隔离
本项目已移除内置沙箱功能。如需文件系统隔离,请在外部沙箱(如 `bubblewrap`)中运行助手。
参见 [docs/sandboxing.md](docs/sandboxing.md) 获取最简 `bubblewrap` 使用示例。
## Shell 与 Python 工具行为说明
内置的 `shell_execute``python_execute` 工具:
- 支持多行脚本;
- 将 stderr 合并到 stdout 输出;
- 仅在非零退出码时在输出前加上退出码头部信息;
- 支持 `truncate_at` 参数以限制输出大小;
- 支持 `timeout` 参数,默认超时为 30 秒;
- 可将长时间运行的任务交给后台任务管理器处理。
不支持交互式终端程序,例如 `git rebase -i`
## 开发
运行测试:
```bash
just test
```
运行代码检查、格式化和类型检查:
```bash
just lint
```
还提供集成测试目标:
```bash
just test-integration
```
## 许可证
MIT