Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

轻量化Python代码代理

一个类似Claude Code的轻量化命令行代码代理,使用Python实现,通过自然语言交互帮助开发者进行代码相关操作。支持Anthropic Claude API和DeepSeek API。

功能特性

  • 自然语言理解:支持Anthropic Claude API和DeepSeek API
  • 文件操作:读取、写入、编辑代码文件
  • 命令执行:安全地执行shell命令,带命令黑名单
  • 代码搜索:在代码库中搜索内容
  • 代码生成:根据需求生成代码片段
  • 交互式REPL:命令行交互界面,支持命令历史
  • 跨平台支持:兼容Windows、Linux、macOS

快速开始

安装

  1. 克隆项目:

    git clone <repository>
    cd codeagent
  2. 创建虚拟环境:

    python -m venv venv
  3. 激活虚拟环境:

    # Windows
    venv\Scripts\activate
    # Linux/Mac
    source venv/bin/activate
  4. 安装依赖:

    pip install -r requirements.txt
  5. 配置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密钥

使用

启动交互式REPL

# 使用默认模型(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-xxx

初始化配置

python -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命令

在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  # 代码生成工具

核心模块说明

cli.py

  • 定义命令行接口,使用Click库实现
  • 提供repl、chat、init三个主要命令
  • 处理命令行参数解析和传递

agent.py

  • 核心代理类CodeAgent,处理对话逻辑
  • 管理对话历史
  • 协调工具调用和结果处理
  • 根据配置选择LLM客户端

llm_client.py

  • 定义AnthropicClientDeepSeekClient
  • 封装不同LLM API的调用
  • 实现统一的接口,支持工具格式化和聊天功能
  • 处理API响应解析和错误处理

repl.py

  • 实现交互式REPL界面
  • 处理用户输入和输出
  • 支持命令历史(Linux/macOS)或兼容方案(Windows)
  • 处理特殊命令(help、exit等)

config.py

  • 管理配置信息,包括API密钥、模型、安全设置等
  • 支持从环境变量和配置文件加载配置
  • 实现路径安全检查
  • 管理命令黑名单

tools/目录

  • 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

About

一个简单的agent,基于python实现基本的coding能力

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages