一个类似Claude Code的轻量化命令行代码代理,使用Python实现,通过自然语言交互帮助开发者进行代码相关操作。支持Anthropic Claude API和DeepSeek API。
- 自然语言理解:支持Anthropic Claude API和DeepSeek API
- 文件操作:读取、写入、编辑代码文件
- 命令执行:安全地执行shell命令,带命令黑名单
- 代码搜索:在代码库中搜索内容
- 代码生成:根据需求生成代码片段
- 交互式REPL:命令行交互界面,支持命令历史
- 跨平台支持:兼容Windows、Linux、macOS
-
克隆项目:
git clone <repository> cd codeagent
-
创建虚拟环境:
python -m venv venv
-
激活虚拟环境:
# Windows venv\Scripts\activate # Linux/Mac source venv/bin/activate
-
安装依赖:
pip install -r requirements.txt
-
配置API密钥:
# 使用Anthropic Claude API export ANTHROPIC_API_KEY="your-claude-api-key" # 或者使用DeepSeek API export ANTHROPIC_API_KEY="your-deepseek-api-key" # 或者创建 .env 文件 cp .env.example .env # 然后在.env文件中设置API密钥
# 使用默认模型(Claude Haiku)
python -m src.cli repl
# 指定API密钥和模型
python -m src.cli repl --api-key sk-xxx --model deepseek-chat# 读取文件
python -m src.cli chat "帮我读取当前目录下的README.md文件" --api-key sk-xxx
# 生成代码
python -m src.cli chat "帮我生成一个Python Hello World程序" --api-key sk-xxx --model deepseek-chat
# 执行命令
python -m src.cli chat "帮我查看当前目录下的文件列表" --api-key sk-xxxpython -m src.cli init这将创建配置文件 ~/.codeagent/config.json,你可以在其中设置默认API密钥和其他配置。
# 查看所有命令
python -m src.cli --help
# 查看chat命令帮助
python -m src.cli chat --help
# 查看repl命令帮助
python -m src.cli repl --help在REPL界面中,你可以使用以下特殊命令:
help:显示帮助信息history:显示对话历史clear:清除对话历史tools:显示可用工具exit/quit/q:退出REPL!<command>:直接执行系统命令(如!ls,!pwd)
codeagent/
├── README.md # 项目说明文档
├── requirements.txt # Python依赖列表
├── .env.example # 环境变量示例
├── .gitignore # Git忽略文件
├── test_imports.py # 模块导入测试
└── src/ # 源代码目录
├── __init__.py # 包初始化
├── cli.py # CLI入口点,定义命令行接口
├── agent.py # 核心代理,处理对话逻辑
├── llm_client.py # LLM客户端,支持Anthropic和DeepSeek API
├── repl.py # REPL交互界面实现
├── config.py # 配置管理,处理API密钥和配置文件
└── tools/ # 工具集目录
├── __init__.py # 工具包初始化
├── base.py # 工具基类,定义工具接口
├── file_tools.py # 文件操作工具(读、写文件)
├── command_tools.py # 命令执行工具
├── search_tools.py # 代码搜索工具
└── generation_tools.py # 代码生成工具
- 定义命令行接口,使用Click库实现
- 提供repl、chat、init三个主要命令
- 处理命令行参数解析和传递
- 核心代理类
CodeAgent,处理对话逻辑 - 管理对话历史
- 协调工具调用和结果处理
- 根据配置选择LLM客户端
- 定义
AnthropicClient和DeepSeekClient类 - 封装不同LLM API的调用
- 实现统一的接口,支持工具格式化和聊天功能
- 处理API响应解析和错误处理
- 实现交互式REPL界面
- 处理用户输入和输出
- 支持命令历史(Linux/macOS)或兼容方案(Windows)
- 处理特殊命令(help、exit等)
- 管理配置信息,包括API密钥、模型、安全设置等
- 支持从环境变量和配置文件加载配置
- 实现路径安全检查
- 管理命令黑名单
base.py:定义Tool抽象基类,所有工具的父类file_tools.py:实现文件读取和写入工具command_tools.py:实现命令执行工具,带安全检查search_tools.py:实现代码搜索工具generation_tools.py:实现代码生成工具
- Python 3.8+
- anthropic >= 0.25.0 # Anthropic Claude API客户端
- deepseek-ai >= 0.0.1 # DeepSeek API客户端
- click >= 8.1.0 # 命令行接口库
- python-dotenv >= 1.0.0 # 环境变量加载
- pyyaml >= 6.0.0 # YAML文件处理
- 路径安全检查:限制文件操作只能在允许的目录内
- 命令黑名单:禁止执行危险命令(如rm -rf、chmod 777等)
- API密钥安全:支持环境变量和配置文件存储,配置文件权限保护
- 有限制的文件系统访问:只能访问允许的目录
- 输入验证:所有工具参数都经过验证
MIT License