1. 为什么要在 Windows 上折腾 DeepCode 论文反推代码
DeepCode 是港大数据智能实验室开源的一个工具,核心能力是:你丢一篇论文 PDF 进去,它自动读论文、抽方法、生成可运行的代码骨架,甚至帮你把实验脚本搭起来。对做科研复现、快速验证 idea 的人来说,这比手动一行行抄公式再翻译成 PyTorch 省太多时间。它适合谁?适合正在读研、做算法工程、需要快速把论文变成可跑代码的人,也适合想体验 Agent 工作流的开发者。
但 Windows 上跑它有几个现实门槛:Python 版本要够、Node.js 要装(因为 MCP 搜索服务器依赖它)、Streamlit 要能起、最麻烦的是模型 API 通道要配通。很多人卡在配置文件那一步,mcp_agent.secrets.yaml和mcp_agent.config.yaml两个文件改来改去,endpoint 写错一个字符就报 401 或连接超时。这篇教程的思路是:用 TaoToken 的统一 Key 和统一 API 通道,把 DeepCode 里所有模型调用收敛到一个入口,你只需要维护一份 Key,不用在 OpenAI、Anthropic、Google 之间来回切换配置。
我试过在 Windows 11 + PowerShell 环境下从零搭一遍,踩过的坑集中在三处:虚拟环境激活策略、MCP 服务器路径斜杠、以及llm_provider和default_model没对齐。下面按可复制的步骤走,每一步都给命令和配置骨架。
2. TaoToken 前置:统一 Key 与 API 通道准备
TaoToken 在这里扮演的角色是「统一模型网关」。DeepCode 本身支持多家 provider,但每家都要单独申请 Key、单独配 base_url,切换模型时改配置很烦。TaoToken 提供一个兼容 OpenAI 协议的 API 入口,你拿一个 Key,就能在 DeepCode 里调用不同模型,base_url 统一指向https://taotoken.net/api。
你需要先做两件事:
第一,注册并拿到 API Key。访问官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 完成账号注册,然后进入控制台创建 Key。控制台地址是 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite ,在 API Keys 页面点新建,复制那串sk-开头的字符串,先存到记事本里,后面要填进配置文件。
第二,确认你要用哪个模型。DeepCode 的论文反推对模型推理能力要求较高,建议选长上下文、代码能力强的模型。你可以在模型对话页面先试一下通道是否通:https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite ,随便发一句「用 Python 写一个快速排序」,能正常返回就说明 Key 和通道没问题。
注意:TaoToken 的 API 入口是
https://taotoken.net/api,这个地址不加任何 UTM 参数,直接写进配置文件即可。官网和控制台的链接才带 UTM,别搞混。
如果你打算长期用 DeepCode 做论文复现、跑 Agent 任务,可以顺带看一下 Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite ,它适合高频编码场景,额度模型和按量付费不一样,按自己用量选。
3. Windows 环境搭建与可复制配置
3.1 Python、Node.js、Git 三件套检查
打开 PowerShell(建议管理员身份),逐条执行:
python --version pip --version node -v npm -v git --versionPython 要求 3.10 以上,官方推荐 3.13,3.11/3.12 实测也能跑。Node.js 是给 MCP 的 Brave Search 和 filesystem 服务器用的,不装的话搜索类工具会报command not found。Git 用于克隆源码。
如果 Python 没装,去 python.org 下 3.12 的 Windows installer,安装时勾选「Add Python to PATH」。Node.js 去 nodejs.org 下 LTS 版,一路下一步即可。
3.2 拉源码与虚拟环境
cd /d D:\ git clone https://github.com/HKUDS/DeepCode.git cd /d D:\DeepCode python -m venv .venv .venv\Scripts\Activate.ps1如果激活时报「无法加载脚本,因为在此系统上禁止运行脚本」,执行:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser按 Y 确认,再重新激活。激活成功后提示符前面会出现(.venv)。
3.3 安装依赖
pip install --upgrade pip pip install -r requirements.txt这一步会拉 Streamlit、mcp-agent 等包,网络慢的话可以加国内镜像:
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple3.4 配置文件骨架:secrets 与 config
DeepCode 根目录下需要两个文件:mcp_agent.secrets.yaml和mcp_agent.config.yaml。如果仓库里没有,从模板复制:
copy mcp_agent.secrets.yaml.example mcp_agent.secrets.yaml copy mcp_agent.config.yaml.example mcp_agent.config.yaml没有 example 的话直接新建。mcp_agent.secrets.yaml填 Key,骨架如下:
openai: api_key: "sk-你的TaoTokenKey" base_url: "https://taotoken.net/api" anthropic: api_key: "" google: api_key: ""三个 provider 只填一个就行。用 TaoToken 统一通道时,填在openai段,base_url指向 TaoToken 的 API 入口。
mcp_agent.config.yaml关键改动:
llm_provider: openai openai: default_model: gpt-4o base_url: "https://taotoken.net/api"llm_provider必须和上面填 Key 的段名一致,default_model写你在 TaoToken 通道里能调用的模型名。模型名不确定的话,用 curl 列一下:
curl -s -H "Authorization: Bearer sk-你的TaoTokenKey" https://taotoken.net/api/models返回的 JSON 里data数组的id字段就是可用模型名。
3.5 MCP Servers(Node)路径配置
如果你要用 Brave Search 或 filesystem 工具,先装全局包:
npm i -g @modelcontextprotocol/server-brave-search npm i -g @modelcontextprotocol/server-filesystem npm root -gnpm root -g会输出类似C:\Users\你的用户名\AppData\Roaming\npm\node_modules的路径。把它拼进mcp_agent.config.yaml的mcp.servers段:
mcp: servers: brave: command: "node" args: ["C:/Users/你的用户名/AppData/Roaming/npm/node_modules/@modelcontextprotocol/server-brave-search/dist/index.js"] filesystem: command: "node" args: ["C:/Users/你的用户名/AppData/Roaming/npm/node_modules/@modelcontextprotocol/server-filesystem/dist/index.js", "."]路径用正斜杠/或双反斜杠\\,别用单反斜杠,YAML 里单反斜杠是转义字符,会解析失败。
4. 启动 Streamlit 并验证论文反推
配置改完后,在激活的虚拟环境里启动:
cd /d D:\DeepCode streamlit run ui/streamlit_app.py终端出现You can now view your Streamlit app in your browser和http://localhost:8501就说明起来了。浏览器打开这个地址,你会看到 DeepCode 的 Web 界面。
验证动作:在界面上传一篇论文 PDF(建议先用 5 页以内的短文试),在输入框里写清楚任务,比如「请阅读这篇论文,提取核心方法,用 PyTorch 实现模型结构,并给出训练脚本骨架」。点提交后,界面会显示 Agent 的思考过程和工具调用日志。
成功的结果长这样:Agent 先调用 PDF 解析工具读取内容,然后调用搜索工具补充背景,最后生成代码文件。你会在输出区看到完整的 Python 代码块,包含import torch、模型类定义、forward方法。如果代码能直接复制到本地跑通,说明整条链路通了。
提示:第一次跑建议把
default_model设成推理能力强的模型,生成质量差别很明显。模型对话页面可以先对比几个模型的表现:https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite
5. 本篇常见报错排查
报错一:openai.AuthenticationError: 401Key 填错或 base_url 写成了https://taotoken.net/api/(末尾多斜杠)。检查mcp_agent.secrets.yaml里api_key是否完整,base_url是否精确为https://taotoken.net/api。改完保存,重启 Streamlit。
报错二:ModuleNotFoundError: No module named 'mcp_agent'依赖没装全,或者虚拟环境没激活。确认提示符前有(.venv),然后重跑pip install -r requirements.txt。
报错三:llm_provider 'openai' not foundmcp_agent.config.yaml里llm_provider的值和 secrets 里的段名不一致。比如 secrets 里写的是openai,config 里写成了OpenAI,大小写敏感,改成一致。
报错四:MCP 服务器启动失败,Cannot find modulenpm root -g输出的路径没拼对,或者用户名写错了。重新执行npm root -g,把完整路径复制进args,注意斜杠方向。
报错五:Streamlit 端口被占用换端口启动:streamlit run ui/streamlit_app.py --server.port 8502。
报错六:PDF 上传后无响应模型上下文不够或 PDF 太大。换长上下文模型,或者先用小论文测试。也可以在模型对话页面单独测一下模型是否能处理长文本。
6. 后续接入与 Key 管理
整条链路跑通后,你日常只需要维护一份 TaoToken Key。换模型时改default_model一个字段,不用动 base_url,也不用重新申请别家 Key。如果要做更复杂的 Agent 编码任务,比如让 DeepCode 自动迭代代码、跑测试、修 bug,可以看 Coding Plan 的额度方案:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite
Key 的管理和轮换在控制台完成:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite ,建议给 DeepCode 单独建一个 Key,方便按项目统计用量。接入文档里有完整的参数说明和兼容性列表:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite
如果你用 Claude Code 做编码,TaoToken 也支持 Anthropic 协议接入,配置方式在文档里有专门章节:https://taotoken.net/claude-code?utm_source=taotoken_aicg_blog_end&utm_content=claude_code&utm_campaign=rewrite
最后给一个实用技巧:把mcp_agent.secrets.yaml和mcp_agent.config.yaml加入.gitignore,别把 Key 提交到仓库。改配置前先备份一份,改坏了能快速回滚。Streamlit 启动后如果界面卡住,先看终端日志,90% 的问题在日志里都有明确报错行。