一个轻量级的 CLI Agent 实现,基于 Anthropic SDK 的 ReAct 架构,不依赖 LangChain 等重型框架。
- ReAct 架构 - 完整的 Think → Action → Observation 循环
- Anthropic SDK - 原生支持 Claude 模型和 Extended Thinking
- 命令白名单 - 安全执行,支持用户确认和自定义白名单
- 跨会话记忆 - JSON 持久化存储,自动保存对话历史
- REPL 交互 - 友好的命令行交互界面
# 克隆项目
git clone https://github.com/yourusername/cli-agent.git
cd cli-agent
# 安装依赖
uv sync创建 config.json 文件:
{
"api": {
"base_url": "https://api.anthropic.com/v1",
"api_key": "your-api-key",
"model": "claude-sonnet-4-20250514"
},
"extended_thinking": {
"enabled": false,
"budget_tokens": 10000
},
"allowed_commands": ["python", "dir", "type", "git"]
}| 字段 | 说明 |
|---|---|
api.base_url |
API 地址(支持 OpenAI 兼容接口) |
api.api_key |
你的 API Key |
api.model |
使用的模型 |
extended_thinking.enabled |
是否启用 Extended Thinking |
allowed_commands |
白名单命令,无需确认直接执行 |
# 启动 CLI Agent
uv run python main.py| 命令 | 说明 |
|---|---|
/help |
显示帮助信息 |
/status |
显示当前会话状态 |
/new |
创建新会话 |
/quit |
退出程序 |
You: 帮我创建一个 hello.py 文件
You: 执行 python hello.py
You: 列出当前目录文件
cli-agent/
├── main.py # REPL 入口
├── agent.py # ReAct Agent 核心
├── config.py # 配置管理
├── prompt.py # Prompt 模板
├── tools/ # 工具模块
│ ├── base.py # 工具基类
│ └── bash_tool.py # Bash 工具
├── memory/ # 记忆系统
│ └── session_memory.py
├── sessions/ # 会话存储
├── docs/ # 设计文档
└── config.json # 用户配置(不上传)
| 方面 | LangChain | 本项目 |
|---|---|---|
| LLM 调用 | langchain-openai | anthropic SDK |
| 工具绑定 | llm.bind_tools() | 手动构造 |
| 消息格式 | LangChain Message | OpenAI 原生 dict |
| ReAct 循环 | Agent 抽象 | 手动实现 |
# 运行测试
uv run python -c "from agent import ReactAgent; print('OK')"
# 激活虚拟环境
source .venv/bin/activate # Linux/Mac
.venv\Scripts\activate # WindowsMIT License