1. 论文复现为什么总卡在“最后一公里”PaperBench 这类基准测试把论文复现拆成了很细的评分项算法实现对不对、实验配置能不能跑、结果指标是否对齐。我拿同一篇论文做过对照纯靠对话式模型生成代码往往在“依赖版本、数据路径、随机种子”这些细节上翻车最后跑出来的数字和论文差一大截。问题不在模型不够聪明而在于它没有稳定的工具链去读文件、拉仓库、执行命令、回读报错。DeepCode 的思路是把这件事工程化用多代理协作拆解任务再通过 MCP 协议把文件系统、网页抓取、GitHub 克隆、命令执行这些能力接进来同时用 CodeRAG 在代码库里做检索增强让生成的代码有参考、有依据。这套组合拳在 PaperBench 上跑出了 75.9% 的成绩比顶级机器学习博士的 72.4% 还高一点比 Cursor、Claude Code 这类商业代理领先 26 个百分点以上。但官方文档给的是“能跑”的最小路径真正要复现一篇论文、还要对照 PaperBench 指标做验证中间缺的是可复制的配置片段和排障经验。这篇就聚焦这块怎么把 MCP 工具链和 CodeRAG 接进 TaoToken用同一篇论文跑通“论文→代码”再拿指标做对照。适合做算法复现的研究人员、搭 Agent 的开发者以及正在做 RAG 系统、想看看 CodeRAG 怎么落地的工程师。核心检索词先明确DeepCode 论文变代码靠的是 MCP 工具链 CodeRAG 检索增强的协同而不是单纯堆模型参数。下面从环境准备开始一步步给可复制的配置。2. TaoToken 前置把模型入口和工具链解耦DeepCode 本身不绑定某一家模型它通过配置里的 provider 字段切换。我试过直接填各家原生 API切换模型时要改代码、改环境变量复现实验里换模型对照指标特别麻烦。后来把模型入口统一到 TaoTokenBase URL 固定成https://taotoken.net/api换模型只改 Model ID配置结构不动对照实验干净很多。TaoToken 在这里的角色是统一的模型调用入口兼容 OpenAI 风格的接口DeepCode 的配置模板里直接填就行。你需要先拿到 API Key去控制台创建https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentconsole创建完在 API Keys 页面复制https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentapi-keys模型选择上复现论文这种任务对长上下文和代码能力要求高建议选带长上下文的模型。具体可用模型列表在模型对话页能查到https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentmodels如果你打算长期跑编码和 Agent 任务Coding Plan 的额度模型更适合反复实验https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentcoding-plan接入文档在这里MCP 和 CodeRAG 相关的接口说明都能对上https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentdoc这里有个关键点MCP 工具链负责“动手”CodeRAG 负责“找参考”TaoToken 负责“出脑子”。三者解耦之后任何一环出问题都能单独排查不会一锅乱。比如生成代码质量差先看 CodeRAG 有没有检索到对的参考实现工具调用失败先看 MCP 服务有没有起来模型答非所问再回头查 Model ID 和上下文长度。环境准备清单Python 3.10、Node.js部分 MCP 服务依赖、Git、以及一个能访问 GitHub 的网络环境。DeepCode 安装用 pippip install deepcode-hku装完先别急着跑把配置模板拉下来后面所有改动都基于它curl -O https://raw.githubusercontent.com/HKUDS/DeepCode/main/deepcode_config.json.example cp deepcode_config.json.example deepcode_config.json3. 可复制配置MCP 服务 CodeRAG 索引参数这一节是全文最该抄的部分。DeepCode 的配置分两块一块是模型 provider一块是 MCP 服务和 CodeRAG 参数。先给完整的deepcode_config.json片段路径和字段名跟官方模板保持一致你直接替换 Key 和 Model ID 就能用。{ llm: { provider: openai, base_url: https://taotoken.net/api, api_key: sk-你的TaoToken密钥, model: 你的Model ID, max_tokens: 8192, temperature: 0.2 }, mcp_servers: { filesystem: { command: npx, args: [-y, modelcontextprotocol/server-filesystem, ./workspace] }, github: { command: npx, args: [-y, modelcontextprotocol/server-github], env: { GITHUB_PERSONAL_ACCESS_TOKEN: ghp_你的token } }, fetch: { command: npx, args: [-y, modelcontextprotocol/server-fetch] }, shell: { command: npx, args: [-y, modelcontextprotocol/server-shell] } }, coderag: { enabled: true, index_path: ./.coderag_index, chunk_size: 512, chunk_overlap: 64, top_k: 8, embedding_model: 你的Model ID, embedding_base_url: https://taotoken.net/api, embedding_api_key: sk-你的TaoToken密钥, include_patterns: [*.py, *.js, *.ts, *.md], exclude_patterns: [node_modules/**, .git/**, dist/**] } }几个参数值得单独说。temperature设 0.2 是为了复现任务稳定太高会随机改算法细节。chunk_size512 配chunk_overlap64 是我实测下来代码检索的甜点区太小会丢上下文太大检索精度下降。top_k设 8 是给生成代理足够参考又不至于塞爆上下文。include_patterns一定要把论文里可能用到的语言都列上漏了会导致 CodeRAG 检索不到关键实现。MCP 服务这块filesystem的路径参数./workspace是工作目录论文和生成的代码都放这里。github服务需要 Personal Access Token去 GitHub 设置里生成权限勾repo就够。shell服务让代理能执行命令这是跑通“论文→代码→验证”闭环的关键但要注意它只在你指定的工作目录里操作。如果你用 Claude Code 做辅助调试它的配置在~/.claude/settings.jsonBase URL 同样填 TaoToken{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的TaoToken密钥, ANTHROPIC_MODEL: 你的Model ID } }Cline 的 MCP 配置在 VS Code 的settings.json里格式类似把mcpServers字段按上面的结构填进去即可。Codex 用户改~/.codex/auth.json把OPENAI_BASE_URL指向https://taotoken.net/apiOPENAI_API_KEY填 TaoToken 的 Key。这三件套——Base URL、Key、Model ID——在任何工具里都是同一套记牢就不会乱。配置写完先做一次语法校验JSON 里多一个逗号都会让 DeepCode 启动失败python -c import json; json.load(open(deepcode_config.json)); print(config ok)输出config ok再往下走。4. 验证请求同一篇论文跑通论文→代码配置就绪后先做一次最小验证确认模型入口通。用 curl 打一次对话接口curl https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer sk-你的TaoToken密钥 \ -H Content-Type: application/json \ -d { model: 你的Model ID, messages: [{role: user, content: 回复 ok}], max_tokens: 16 }返回里有choices字段且内容是ok说明模型入口没问题。如果这里就报错先别往下走去第 5 节对照排查。模型通了之后构建 CodeRAG 索引。把论文相关的参考仓库克隆到./workspace然后跑索引构建deepcode index --config deepcode_config.json --path ./workspace索引过程会按include_patterns扫描文件、切块、调 embedding 接口。跑完在./.coderag_index下能看到索引文件。这一步耗时取决于仓库大小我拿一个中等规模的算法仓库试大概几分钟。索引好了之后把论文 PDF 放进./workspace/paper.pdf启动复现任务deepcode run \ --config deepcode_config.json \ --paper ./workspace/paper.pdf \ --output ./workspace/output \ --task 复现论文核心算法生成可运行代码并对照论文指标DeepCode 会依次走意图理解、文档解析、代码规划、代码参考挖掘、代码索引、代码生成这几个代理。你会在终端看到流式输出每个代理的阶段结果都会打印。代码参考挖掘这一步就是 CodeRAG 在起作用它从索引里检索相关实现喂给代码生成代理。跑完后./workspace/output下会有生成的代码、依赖文件和运行脚本。先装依赖再跑cd ./workspace/output pip install -r requirements.txt python main.py如果论文里有明确的指标比如准确率、F1、收敛轮数把生成代码跑出来的数字和论文里的对照。PaperBench 的评分逻辑就是看这些指标的对齐程度以及代码能不能在给定配置下复现。我拿同一篇论文做过对照接了 CodeRAG 之后生成代码在数据预处理和超参设置上明显更贴近论文指标差距从原来的十几个点缩到几个点以内。验证阶段建议把每次运行的配置、指标、报错都记下来复现实验最怕的就是“上次能跑这次不行”却找不到差异。5. 本篇常见错排查401、local proxy failed、reading choices复现任务里报错集中在几个地方我按真实遇到的顺序列出来对照着查。401 Unauthorized。最常见的是 Key 填错或过期。先确认deepcode_config.json里api_key是完整的sk-开头字符串没有多余空格。然后单独用 curl 验证 Key 是否有效就是第 4 节那条命令。如果 curl 也 401去 API Keys 页面重新生成一个https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentapi-keys 。还有一种情况是 Base URL 写成了带/v1的完整路径DeepCode 内部会自己拼/v1/chat/completions你只填https://taotoken.net/api就行多填会 404 或 401。local proxy failed。这个报错通常出现在 MCP 服务启动阶段不是模型的问题。检查npx能不能正常拉包先手动跑一次npx -y modelcontextprotocol/server-filesystem ./workspace如果卡住或报网络错是 Node 环境或包源的问题换 npm 镜像源再试。另外filesystem服务的路径参数必须是已存在的目录路径不存在也会报 proxy failed。github服务报这个错多半是GITHUB_PERSONAL_ACCESS_TOKEN没填或权限不够。reading choices 相关报错。这类错误出现在解析模型返回时通常是返回体里没有choices字段。原因有两个一是 Model ID 填错TaoToken 找不到对应模型返回的是错误结构二是max_tokens设得太小模型还没输出完就被截断。先确认 Model ID 和模型对话页里列的一致再把max_tokens调到 4096 以上。如果返回体里有error字段把error.message打出来看一般会直接说明是模型不存在还是额度不足。OAuth 相关报错。如果你在 Claude Code 或 Cline 里看到 OAuth 失败是因为这些工具默认走账号登录流程而你用的是 API Key 模式。Claude Code 里要确保ANTHROPIC_API_KEY和ANTHROPIC_BASE_URL都设了它会优先用 Key 而不是 OAuth。Cline 的 MCP 配置里如果混了 OAuth 字段删掉只留 Base URL、Key、Model ID 三件套。CodeRAG 检索不到结果。索引建了但生成代码还是没参考先看include_patterns有没有覆盖论文用到的语言再看index_path和构建时的--path是否一致。还有一个坑是 embedding 接口的 Key 和对话接口的 Key 用了不同的配置里embedding_api_key要单独确认。排障时把日志级别调高DeepCode 支持--verbose参数能看到每个代理的输入输出定位快很多。6. 把复现实验跑成可重复的流程DeepCode 这套东西真正的价值不在单次生成而在于把“论文→代码→验证”变成可重复的流程。MCP 工具链保证代理能稳定地读文件、拉仓库、跑命令CodeRAG 保证生成的代码有参考依据TaoToken 保证模型入口统一、换模型不影响配置结构。三者协同之后复现实验的变量就只剩论文本身和模型选择对照起来干净。如果你要长期做这类任务建议把配置模板和索引构建脚本一起纳入版本管理每次实验记录 Model ID、CodeRAG 参数、指标结果。Coding Plan 的额度模型适合反复跑对照https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentcoding-plan模型对话页可以快速验证不同模型在同一篇论文上的表现差异https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentmodels接入文档里有 MCP 和 CodeRAG 的接口细节配置字段对不上时去这里查https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentdoc最后给一个实用技巧每次跑复现任务前先单独验证模型入口和 MCP 服务两个都通了再启动完整流程。这样出问题时能立刻定位是模型侧还是工具侧省掉大量来回试的时间。
阅读完成 · 觉得有帮助?