从分析 Claude Code 源码到自己写一个:AnyCoder,支持 DeepSeek/Qwen 等任意大模型的开源 AI 编程 Agent

张开发
2026/4/16 10:50:12 15 分钟阅读

分享文章

从分析 Claude Code 源码到自己写一个:AnyCoder,支持 DeepSeek/Qwen 等任意大模型的开源 AI 编程 Agent
上周 Claude Code 源码泄露我写了篇分析发在知乎20 万阅读 8000 收藏。后来又把核心逻辑用 1300 行 Python 重写了一遍就是 CoreCoder300 Stars。这两件事让我收到了大量私信和评论归纳起来就一句话“我用不了 Anthropic 的 API国产模型能不能跑你这个”说实话 CoreCoder 已经支持了但我觉得做得不够彻底。CoreCoder 的定位是”教学用的精简实现”1300 行代码是个优势但也是限制。很多人想要的是一个真正能日常用的工具不是一个用来学习的 demo。所以我又做了一个。AnyCoder用你手里的任何模型写代码AnyCoder 是一个终端里的 AI 编程 Agent。你可以理解为”不挑模型的 Claude Code”。pip install anycoder # 用 Kimi默认便宜好用 export DEEPSEEK_API_KEYsk-... anycoder # Use Kimi K2.5 anycoder -m kimi # 用 Claude anycoder -m claude # 用 Qwen anycoder -m qwen # 用本地 Ollama数据不出机器 anycoder -m ollama/llama3.1就这么简单。一行安装一个环境变量开始干活。它能做什么跟 Claude Code 一样的事情读代码。你说”帮我看看 auth.py 的登录逻辑”它打开文件带行号地读给你看。大文件自动分段读不会一次性塞爆上下文。改代码。不是把整个文件覆盖是精准的搜索替换。你说”把这个函数里的同步调用改成异步”它找到那几行改了其他的不动。改之前还会检查搜索字符串是不是唯一的不唯一就让你给更多上下文避免改错地方。跑命令。“跑一下测试”、”看看 git log”、”安装 requests”。shell 命令直接执行输出直接拿来分析。搜代码库。“这个项目里哪些文件用了 Redis”两种搜索按文件名模式找文件glob按内容正则搜索grep。自己循环。这是 Agent 的关键。它不是回答一次就停了。改完代码之后它自己会想”是不是该跑个测试看看”然后真的去跑看到报错了自己修修完再跑直到通过。一个请求可能背后跑了十几轮工具调用。100 模型随便切底层用的 litellm几乎市面上所有 LLM 都能接简写模型厂商deepseekDeepSeek Chat深度求索qwenQwen Plus阿里通义gptChatGPTOpenAIclaudeClaudeAnthropicgeminiGeminiGooglekimiMoonshot月之暗面glmGLM智谱 AI在 REPL 里还能用/model deepseek随时切换不用退出重启。不在列表里的也能用只要是 OpenAI 兼容 API 就行export ANYCODER_API_BASEhttps://your-api.com/v1 export ANYCODER_API_KEYyour-key anycoder -m your-model-name本地模型更简单anycoder -m ollama/codestral anycoder -m ollama/deepseek-coder-v2数据完全不出你的机器。为什么是 Python两个原因。第一国内开发者最熟悉的语言。Claude Code 是 TypeScript 写的想看懂源码还得先懂 TypeScript 的异步模型和类型系统。Python 代码看一眼就明白在干嘛。想改fork 了直接改。第二生态好。litellm 这种统一 LLM 接口的库在 Python 生态最成熟。Rich 做终端渲染、Pydantic 做数据验证都是拿来就能用的轮子。整个项目依赖就四个包litellm、rich、prompt_toolkit、pydantic。没有奇怪的间接依赖链pip install不会把你的环境搞乱。跟现有工具的对比vs Claude Code功能类似但 Claude Code 只能用 Claude。AnyCoder 支持任意模型。而且 AnyCoder 是纯 Python改起来容易。vs Cursor/Windsurf那些是 IDE 插件绑定了编辑器。AnyCoder 是终端工具在服务器上 SSH 进去也能用。vs AiderAider 也是终端 AI 编程工具做得很好。AnyCoder 的区别是架构更简单直接代码量小想自己 fork 改造很方便。vs 直接聊天窗口粘代码Agent 模式的核心区别是它能自己操作文件系统。你不用复制粘贴了它直接在你的项目里读、改、跑。架构四层很清晰CLI 层Rich 渲染输出prompt_toolkit 处理输入支持历史记录和自动补全Agent 层核心循环。用户输入 → LLM 决策 → 工具执行 → 结果反馈 → LLM 继续决策LLM 层litellm 封装流式输出自动汇总 tool_calls 的 delta chunks工具层6 个工具每个都有 JSON Schema 描述注册到工具表里上下文管理器在后面盯着。对话接近 token 上限时自动把中间的旧消息压缩成摘要保留系统提示和最近几轮对话。你感觉不到这个过程但它让长对话不会因为超限而崩掉。如果你读过我之前写的 Claude Code 源码分析会发现 AnyCoder 实现了里面提到的几个核心设计Agent 循环多轮工具调用流式 tool_calls 组装搜索替换式文件编辑唯一性校验上下文窗口压缩和 CoreCoder 的关系CoreCoder 是”教学用途的极简实现”1300 行代码重点在于让你看懂 Claude Code 的架构。AnyCoder 是”日常使用的生产工具”该有的功能都有该做的打磨都做了。一个是解剖学教材一个是能上手术台的手术刀。两个项目互补不冲突。试试看pip install anycoder # 设个 key 就能用 export DEEPSEEK_API_KEYsk-... anycoder

更多文章