1. Devika 本地部署到底解决什么问题
Devin 刚发布那阵子,我身边不少做后端和全栈的朋友都在讨论:一个能自己拆任务、查资料、写代码、跑测试的 AI 程序员,到底离日常开发有多远。现实是 Devin 属于闭源商业产品,排队、额度、网络条件都是门槛。于是 Devika 这个项目进入了视野——它是 stitionai 团队做的开源实现,定位就是「Devin 的开源替代品」,能理解一句高层指令,把它拆成可执行步骤,做关键词研究、浏览网页、生成代码,并在 Web 界面里把整个 agent 状态可视化出来。
Devika 能做什么?简单说,你给它一句「帮我写一个 FastAPI 的待办事项服务,带 SQLite 存储和单元测试」,它会自己规划步骤、去网上查资料、生成文件、把项目落到本地目录。适合谁?适合想自建 AI 程序员、又不想被闭源产品绑死的开发者;适合想研究 agent 任务分解与代码生成链路的同学;也适合团队里想搭一个内部编码助手原型的人。
这篇不讲空话,直接给两条本地部署路径:Docker 一把梭和源码启动,再把模型 API 统一接到 TaoToken 的 Key 上,最后用一个真实编码任务验证任务分解和代码生成是否真的跑通。踩过的坑我也会写清楚,尤其是配置文件和报错那部分。
Devika 的系统架构值得先理一下,不然后面配置容易懵。它由几块组成:Web 聊天界面负责交互和状态展示;Agent 核心协调规划、推理、执行;LLM 层支持 Claude、GPT、Gemini、Mistral、Groq,也能通过 Ollama 跑本地模型;规划与推理引擎把高层目标拆成步骤;研究模块做关键词提取和网页浏览;代码编写模块生成多语言代码;浏览器交互模块负责导航和提取信息;再加知识库和数据库存项目数据与 agent 状态。理解了这个分层,你就知道为什么配置里既有 API Keys 又有 STORAGE 目录,还有 WEB_SEARCH 选项。
2. TaoToken 前置准备与统一 Key 获取
Devika 默认要你分别填 OpenAI、Claude、Gemini 等一堆 Key,管理起来很烦。我的做法是统一走 TaoToken,一个 Key 覆盖多家模型,配置里只改 Base URL 和 Model ID 就行。TaoToken 是一个模型 API 聚合网关,兼容 OpenAI 风格的接口,所以 Devika 里凡是走 OpenAI 协议的地方都能接。
先拿 Key。打开控制台 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite ,注册登录后在 API Keys 页面创建一个新 Key,复制保存。注意 Key 只在创建时完整显示一次,丢了就重建。
拿到 Key 后,你需要知道两个地址:
- Base URL:https://taotoken.net/api
- 模型对话入口(用来先验证 Key 是否可用):https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite
在正式配 Devika 之前,强烈建议先用模型对话页面发一条消息,确认 Key 有额度、能正常返回。这一步能帮你排除掉后面 401 报错里「到底是 Key 错还是配置错」的干扰。
如果你打算长期跑编码 agent、频繁调用,可以看下 Coding Plan https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite ,按套餐走比按量更省心。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite ,遇到参数不确定时对着查。
这里要强调一点:TaoToken 是合规的模型 API 接入服务,不是所谓的中转黑产,配置时按官方文档填 Base URL 即可,不要自己臆造地址。Key 属于敏感信息,别提交到 Git 仓库,Devika 的 config.toml 建议加进 .gitignore。
3. Docker 与源码两种启动配置
3.1 Docker 方式启动 Devika
Docker 方式最省事,适合不想折腾 Python 和 Node 环境的同学。先确认本机装了 Docker 和 Docker Compose:
docker --version docker compose version然后拉代码、进目录:
git clone https://github.com/stitionai/devika.git cd devikaDevika 仓库里带了 docker-compose 相关文件,直接起:
docker compose up -d起来之后访问 http://127.0.0.1:3000 就能看到 Web 界面。第一次启动它会自动在根目录生成 config.toml,你需要把里面的 API Keys 改成 TaoToken 的配置。Docker 方式下配置文件是挂载进容器的,改完重启容器生效:
docker compose restart3.2 源码方式启动 Devika
源码方式更灵活,方便你改代码、调 agent 逻辑。按官方推荐,先装 uv(Python 包管理)和 bun(前端构建):
# 安装 uv curl -LsSf https://astral.sh/uv/install.sh | sh # 安装 bun curl -fsSL https://bun.sh/install | bash然后克隆、建虚拟环境、装依赖:
git clone https://github.com/stitionai/devika.git cd devika uv venv source .venv/bin/activate uv pip install -r requirements.txt playwright install --with-deps前端部分:
cd ui/ bun install bun run dev cd ..最后启动后端主程序:
python3 devika.py浏览器打开 http://127.0.0.1:3000 即可。如果你不需要网页浏览能力,Ollama 那步可以跳过;但 Devika 的研究模块依赖浏览器交互,建议还是把 playwright 装全。
3.3 config.toml 接入 TaoToken 的写法
Devika 第一次运行会在根目录生成 config.toml。关键是把模型 API 指向 TaoToken。下面是我实测可用的片段,路径就是项目根目录的config.toml:
[STORAGE] SQLITE_DB = "devika.db" SCREENSHOTS_DIR = "screenshots" PDFS_DIR = "pdfs" PROJECTS_DIR = "projects" LOGS_DIR = "logs" REPOS_DIR = "repos" WEB_SEARCH = "ddgs" [API_KEYS] OPENAI = "sk-你的TaoTokenKey" CLAUDE = "sk-你的TaoTokenKey" GEMINI = "sk-你的TaoTokenKey" MISTRAL = "sk-你的TaoTokenKey" GROQ = "sk-你的TaoTokenKey" [API_BASE] OPENAI = "https://taotoken.net/api" CLAUDE = "https://taotoken.net/api"注意三件套必须齐全:Base URL 填https://taotoken.net/api,Key 填你创建的那串,Model ID 在 Devika 的模型选择里填 TaoToken 支持的模型名(比如gpt-4o、claude-3-5-sonnet这类)。三者缺一,请求就会失败。WEB_SEARCH 我用的 ddgs,不需要额外申请搜索 Key,省事。
改完配置后,源码方式直接重启python3 devika.py,Docker 方式docker compose restart。
4. 验证请求与真实编码任务跑通
配置好之后,先做一次最小验证:在 Web 界面新建一个项目,输入一句简单指令,比如「用 Python 写一个计算斐波那契数列的函数,并加一个 pytest 测试」。观察 agent 状态面板,正常流程是:规划 → 研究 → 编码 → 完成。
如果任务分解正常,你会在界面看到它把目标拆成了「创建项目结构」「编写函数」「编写测试」「运行验证」几个步骤。代码生成模块会把文件写到projects/目录下。你可以直接去本地看:
ls projects/ cat projects/你的项目名/fib.py我实测下来,一个稍复杂的任务——「写一个 FastAPI 待办事项服务,带 SQLite 存储、增删改查接口和单元测试」——Devika 能拆出 6 到 8 个步骤,生成main.py、models.py、test_main.py等文件。生成完可以自己跑一遍:
cd projects/你的项目名 pip install fastapi uvicorn pytest pytest -q uvicorn main:app --reload如果测试通过、服务能起,说明任务分解和代码生成链路是通的。这一步也是判断模型能力的关键:模型太弱,拆出来的步骤会乱、代码跑不起来;用 TaoToken 接 Claude 或 GPT-4 级别模型,成功率明显更高。
验证模型是否正常返回,也可以直接在模型对话页面发一条编码问题对比输出质量:https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 。如果那边正常、Devika 里报错,问题基本就在 config.toml。
5. 本篇常见错误排查
401 Unauthorized:最常见。原因通常是 Key 填错、Key 前后有空格、或者 Base URL 没改成 TaoToken 的地址。检查 config.toml 里OPENAI和API_BASE两处,Key 用引号包住,别带换行。如果 Key 是从控制台复制的,确认没漏字符。
local proxy failed / connection refused:这类报错多半是 Base URL 写成了本地地址,或者网络层有额外代理干扰。把API_BASE明确写成https://taotoken.net/api,不要留空、不要写 localhost。
reading 'choices' of undefined:这是 OpenAI 兼容接口返回结构不符合预期时的典型报错。一般是 Model ID 填了一个 TaoToken 不支持的模型名,或者请求根本没到网关。先在模型对话页面确认该模型可用,再把 Model ID 原样填进 Devika。
OAuth / 认证相关报错:如果你在配置 Claude 时看到 OAuth 字样,说明走的是 Anthropic 原生认证路径,而 Devika 这里应该走 API Key 模式。确认CLAUDE字段填的是 TaoToken Key,API_BASE指向 TaoToken,而不是 Anthropic 官方地址。
playwright 浏览器启动失败:源码方式下如果研究模块报浏览器错误,重跑playwright install --with-deps,Linux 上缺系统依赖时这条命令会补上。
前端 3000 端口打不开:确认bun run dev还在前台运行,或者 Docker 容器状态是 Up。端口被占用时换一个端口,同时改后端对应配置。
排查顺序建议:先看模型对话页面能不能通 → 再看 config.toml 三件套 → 最后看 Devika 日志(logs/目录)。这样能快速定位是 Key 问题、配置问题还是模型问题。
6. 长期使用与接入入口
跑通之后,如果你打算把 Devika 当成日常编码助手长期用,建议做两件事:一是把 config.toml 里的 Key 换成独立 Key,方便轮换和限额管理;二是关注调用量,编码 agent 一次任务可能触发几十次模型请求,按量计费容易超预期,长期高频的话 Coding Plan 更合适:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 。
需要新建或轮换 Key 时去 API Keys 页面:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 。参数和接入细节对着文档看:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 。官网入口:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 。
最后给个实用技巧:Devika 的任务分解质量高度依赖模型,同一个任务换模型结果差别很大。我的做法是先用强模型跑规划和关键代码,简单重复步骤再切到便宜模型,config.toml 里保留多组 Key 方便切换。另外projects/目录会越堆越多,定期清理,别让它把磁盘塞满。