开发与工程 python-clicode-editingshell-executionopenai-compatible-apicontext-compactionsubagents

CoreCoder

一个可读、可改、可运行的极简 Python 编码智能体核心。

FollowAgents 评估 · FARS-2.0
待评估
查看完整评分方法 →

这个 Agent 能做什么,适合哪些场景?

CoreCoder 是一个约 1,081 行纯 Python 的命令行编码智能体,用于理解并改造编码智能体的基本实现。它以 Agent 主循环驱动模型调用:模型请求工具后,系统并行执行工具并将结果写回上下文,直至模型返回文本答复或达到轮数限制。项目提供交互式 REPL、单次提示模式、会话保存与恢复、上下文压缩、令牌与成本统计,以及可作为 Python 库导入的 Agent、LLM 和 Config。它能读写本地文件并执行 shell 命令,因此适合在本机受控代码仓库中运行,而不是作为隔离的生产执行环境。

通过 corecoder 启动 REPL,或使用 corecoder -p "..." 执行一次任务。Agent.chat() 将用户输入加入消息历史,调用 LLM.chat() 获取文本或工具调用;工具调用可并行运行,并将结果追加到上下文后继续下一轮。内置 bashread_filewrite_fileedit_fileglobgrepagent 七种工具:可搜索文件名和内容、读取与写入文件、用唯一文本匹配进行替换并返回 diff、执行 shell 命令,以及启动不能继续生成子智能体的子智能体。context.py 按三档处理上下文压力,session.py 保存或恢复会话,/tokens 显示令牌用量与成本估算。

  1. 希望逐行学习编码智能体实现的 Python 开发者,可从 `agent.py` 的主循环开始阅读并设置断点修改。
  2. 需要让模型在本地小型项目中查找 TODO、修改函数并运行命令验证结果的开发者,可使用单次提示模式。
  3. 想在现有轻量编码智能体上增加测试、LSP 或网页访问工具的工程师,可基于 `tools/base.py` 新增工具。
  4. 使用 DeepSeek、Ollama 或其他 OpenAI 兼容服务的个人开发者,可通过环境变量切换模型端点。
  5. 希望把任务式代码操作嵌入自己的 Python 程序的开发者,可直接导入 `Agent` 和 `LLM`。

这个 Agent 有哪些优点和局限?

优点
  • 核心引擎约 1,081 行纯 Python,主循环、模型接口、上下文、工具和会话实现均可直接阅读和修改。
  • 内置文件读写、内容搜索、文件匹配、唯一匹配编辑、shell 执行和子智能体,能完成完整的本地代码操作循环。
  • 支持 OpenAI 兼容 API,并记录令牌用量和成本;可通过可选 LiteLLM 后端连接更多提供商。
  • 上下文压缩分为工具输出裁剪、历史摘要和紧急压缩三档,而非一次性简单截断。
局限
  • bash 的危险命令防护是正则黑名单,文档明确说明它不是安全沙箱;面对不可信输入需要额外的 seccomp 或容器隔离。
  • 重试机制只有指数退避,没有模型回退链或硬性费用上限。
  • 子智能体采用同步执行,输出超过 5,000 个字符会截断,且子智能体不能继续创建子智能体。
  • 项目明确不包含 MCP 或 RAG;大型仓库的检索式代码定位需要自行扩展。

如何安装或部署这个 Agent?

需要 Python 3.10+ 和可用模型凭据。克隆后执行:
git clone https://github.com/he-yufeng/CoreCoder
cd CoreCoder
pip install -e .
也可执行 pip install corecoder。默认 OpenAI 配置需要 OPENAI_API_KEY=sk-...;DeepSeek 示例为 OPENAI_API_KEY=sk-... OPENAI_BASE_URL=https://api.deepseek.com CORECODER_MODEL=deepseek-chat;本地 Ollama 示例为 OPENAI_API_KEY=ollama OPENAI_BASE_URL=http://localhost:11434/v1 CORECODER_MODEL=qwen2.5-coder。项目根目录的 .env 会在启动时加载。

如何使用这个 Agent?

交互使用:corecoder。一次性执行并退出:corecoder -p "add error handling to parse_config()"。REPL 中可用 /model <name> 切换模型、/compact 手动压缩上下文、/tokens 查看用量、/diff 查看本次会话改动,以及 /save/sessions 管理会话。作为库使用时,可创建 LLM(model="deepseek-chat", api_key="sk-...", base_url="https://api.deepseek.com"),再调用 Agent(llm=llm).chat("find every TODO comment in this project and list them")

这个 Agent 与同类方案有什么区别?

CoreCoder 将自己定位为可阅读和可 fork 的最小编码智能体核心,而非 Claude Code 或 aider 的生产级替代品。与 Claude Code 相比,其代码可在本机完整阅读和修改;与 aider 相比,它的实现规模更小;它借鉴 nanoGPT 的教学式极简定位,但目标是让智能体编辑代码而非训练 GPT。

常见问题

它支持哪些模型?
默认使用 OpenAI 兼容 API。README 给出了 OpenAI、DeepSeek 和本地 Ollama 的配置示例;可选安装 `corecoder[litellm]` 使用 LiteLLM 后端。
运行时会修改我的文件吗?
会。`write_file` 和 `edit_file` 可以写入本地文件,`bash` 可以执行 shell 命令;应在你愿意让其操作的本地工作目录中运行。
如何控制模型调用成本?
可用 `/tokens` 查看令牌用量和成本估算,但文档未提供硬性预算上限或超预算自动停止功能。
任务过长时会怎样?
系统先裁剪过长工具输出,再摘要较早历史;接近上下文上限时会进行更紧凑的紧急压缩。主循环还有轮数上限,超限会返回提示。

相关 Agents