ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

拆解 DeepSeek Harness(三):四大模式之标准 / 极简模式,配 TaoToken 的 config.toml 骨架怎么搭

拆解 DeepSeek Harness(三):四大模式之标准 / 极简模式,配 TaoToken 的 config.toml 骨架怎么搭 1. 为什么标准模式和极简模式值得单独拆DeepSeek Harness 的四大模式里标准模式和极简模式是最容易被混着用的两个。很多人第一次跑本地 Agent看到标准模式工具列表长、极简模式提示词短就默认「标准更强、极简更弱」结果在 SWE-bench 类任务上被极简模式反超或者在日常改代码时被标准模式的 Plan 模式绕得头晕。这两个模式的本质差异不在模型而在两件事SystemPrompt 的拼装方式以及 Tool 集合的裁剪边界。标准模式是「功能完整编码 Agent」挂载文件编辑、Shell、检索、Skills、计划模式、子代理、工作流、后台任务、上下文压缩等全套工具链极简模式则刻意把接口收敛到与 Claude 训练时一致的最小集合目的很明确——评估对齐和 RL 训练对齐。我试过在同一个仓库里来回切这两个模式最直观的感受是标准模式像带了一整个工具箱的装修队极简模式像只给你一把螺丝刀和一把锤子。工具箱大不代表效率高关键看你要干的活是什么。这篇就按「先讲清切换逻辑再给可复制的 config.toml 骨架最后用 TaoToken 统一 Key 接入并验证两种模式下 Plan/Agent 的行为差异」这条线走目标是让你一次配好、可复现切换。适合谁看在本地跑 Agent、需要频繁在「通用编码」和「基准评估/训练对齐」之间切换的开发者已经用过 DeepSeek Harness 但没搞清模式差异的人以及想用统一 Key 管理多模型接入、不想每个模式单独配一遍凭证的人。2. TaoToken 前置统一 Key 与 config.toml 的关系在动手写 config.toml 之前先把凭证层理清楚。DeepSeek Harness 本身不绑定某一家模型服务它的模型路由是配置驱动的。也就是说标准模式和极简模式可以共用同一套模型接入配置切换模式时不需要重新配 Key。TaoToken 在这里扮演的角色是统一接入层你只需要在控制台创建一个 API Key然后在 config.toml 里把 base_url 指向https://taotoken.net/api模型名按需填。这样标准模式和极简模式共享同一个 Key切换模式只改 preset不动凭证。具体操作路径打开控制台创建 Keyhttps://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentconsole在 API Keys 页面复制生成的 Keyhttps://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentapi-keys需要确认模型名和可用性时用模型对话页快速试一条https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentmodel-chat注意base_url 用https://taotoken.net/api不要带任何查询参数。Key 只放在环境变量或本地 config 里不要提交到仓库。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentdoc 里面有各语言 SDK 的调用示例配 config.toml 时对照着看字段名不容易写错。3. 可复制的 config.toml 骨架下面这份骨架把「模型接入」和「模式 preset」分成两层。模型接入层两个模式共用preset 层各自独立。你可以直接复制把YOUR_TAOTOKEN_KEY换成自己的 Key。# ~/.dsh/config.toml # 模型接入层标准模式与极简模式共用 [model] provider openai-compatible base_url https://taotoken.net/api api_key ${TAOTOKEN_API_KEY} # 从环境变量读取避免明文 model deepseek-chat timeout_seconds 120 max_retries 2 # 标准模式 preset [agent.presets.standard] persona deepseek-ai/dsh-persona persona_text You are a coding agent powered by the {{model}} model. Your working directory is {{cwd}}. agent_instructions deepseek-ai/dsh-agent-instructions plan_mode deepseek-ai/dsh-plan-mode tools [ tool-bash, tool-fs, tool-fs-search, tool-jobs, tool-skills, tool-goal, tool-subagent-control, tool-workflow, tool-todo, tool-web, compaction-basic, tool-result-pruner ] # 极简模式 preset [agent.presets.minimal] persona deepseek-ai/dsh-persona persona_text You are a helpful software engineer assistant. persona_complete true include_runtime_context false tools [ tool-bash, tool-fs, tool-fs-search ] # 默认启动模式 [agent] default_preset standard几个字段说明避免你踩坑api_key用${TAOTOKEN_API_KEY}引用环境变量而不是写死字符串。这样 config.toml 可以进版本库Key 留在 shell 里。设置方式export TAOTOKEN_API_KEY你的Keypersona_complete true是极简模式的关键。它告诉 Harness 不要再往 persona 后面拼接其他身份段落保持那一行 SystemPrompt 干净。标准模式不设这个字段因为它的提示词本来就是多段动态拼出来的。include_runtime_context false在极简模式下关掉运行时上下文注入避免工作目录、时间戳之类的信息混进提示词影响评估对齐。tools数组就是模式差异的核心。标准模式列了 12 项极简模式只留 3 项。你可以按需增删但建议先按这个骨架跑通再动。4. 验证请求与两种模式的行为差异配好之后先做一次最小验证确认 Key 和 base_url 通了。# 用 curl 直接打一次确认接入层没问题 curl -s https://taotoken.net/api/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: deepseek-chat, messages: [{role: user, content: 回复 OK 两个字母即可}] }返回里有choices[0].message.content就说明接入层通了。接下来验证模式切换。启动标准模式dsh --preset standard进入后输入/plan启用 Plan 模式然后给一个会触发写操作的指令比如「把 README 里的标题改成 DeepSeek Harness 实战」。观察行为标准模式的 Plan 模式只改系统提示词write/edit 工具仍然在工具列表里。模型理论上应该先探索、再通过exit_plan_mode提交计划但因为它手里还有写工具实际使用中确实存在绕过 Plan 直接改文件的情况。这也是原文提到的体验问题——对比 Claude Code 在 Plan 模式下直接不提供 write/edit 工具标准模式的做法偏「软约束」。启动极简模式dsh --preset minimal同样给一个编码任务比如「在 utils.py 里加一个 safe_div 函数除零返回 None」。极简模式只有 bash、fs、fs-search 三个工具模型没有 todo、没有子代理、没有工作流只能靠读写文件和跑命令来完成任务。行为上更接近一个「纯软件工程师助手」不会主动拆解成多步计划也不会派生后台任务。两种模式的验证动作可以对照着做验证项标准模式极简模式SystemPrompt 段数多段动态拼接单行Plan 模式是否禁用写工具否仍提供 write/edit不涉及工具数量12 项3 项是否注入 AGENTS.md是包在 system-reminder 块否典型用途日常通用编码基准评估 / RL 训练对齐如果你要跑 SWE-bench 类评估用极简模式因为它的工具定义与 Claude 一致结果可比较。如果你要日常改仓库、需要子代理和工作流用标准模式。5. 本篇常见错排查报 401 或 invalid api key先确认环境变量在当前 shell 里生效echo $TAOTOKEN_API_KEY看有没有值。如果是在 IDE 里启动 dshIDE 可能没继承 shell 的环境变量需要在启动配置里显式传入。另外确认 base_url 是https://taotoken.net/api不要多写/v1或结尾斜杠。切了 preset 但工具没变检查 config.toml 里[agent.presets.minimal]的tools数组是否被正确解析。TOML 数组换行和逗号容易写错建议用dsh --print-config之类的命令 dump 一下实际生效的配置。如果 default_preset 没改启动时用--preset显式指定。极简模式提示词还是多段确认persona_complete true和include_runtime_context false都写了。只写一个不够前者控制 persona 是否继续拼接后者控制运行时上下文是否注入。Plan 模式下模型直接改文件这是标准模式的已知行为不是配置错误。它的 Plan 模式只改系统提示词不撤工具。如果你需要硬约束要么在 preset 的 tools 数组里手动去掉tool-fs的写权限路径要么等后续 PTC 模式配合容器和权限控制落地。KV Cache 失效导致变慢标准模式的 Plan 模式是在身份标识之后中间插入 SystemPrompt不是 append会导致从插入点开始的 KV Cache 失效。因为只追加一次性能影响可接受。如果你发现每轮都变慢检查是不是有组件在每轮都改系统提示词。AGENTS.md 没被读到标准模式会读项目根目录的 AGENTS.md / CLAUDE.md以及$DSH_HOME/AGENTS.md和.local覆盖文件。确认文件名大小写正确且文件在启动目录的搜索路径上。极简模式不注入 AGENTS.md这是设计如此。6. 长期编码与 Agent 场景的接入建议如果你只是偶尔切模式做评估上面这套 config.toml 够用了。但如果你要长期跑编码 Agent尤其是需要多模型切换、多 preset 并存的场景建议把凭证和 preset 管理分开凭证走 TaoToken 统一 Keypreset 按项目拆成多个 toml 片段用 include 合并。长期编码和 Agent 工作流更适合用 Coding Plan 来管理配额和模型路由https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentcoding-plan如果你用的是 Claude Code 类的客户端Anthropic 兼容接入的配置方式在https://taotoken.net/claude-code?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentclaudecode标准模式和极简模式的切换说到底就是改一行default_preset或者启动时加一个--preset参数。真正花时间的是把工具集裁剪到刚好够用——工具越多Token 消耗越大模型被干扰的概率也越高。我自己的做法是日常改代码用标准模式但手动砍掉tool-web和tool-ralph跑评估用极简模式两边共用同一个 TaoToken Keyconfig.toml 里只维护一份接入配置。这样切换成本最低也最不容易配错。
返回列表