📚 系列导航:上一篇 DeepSeek Harness Agent 预设模式教程 已经选好标准或 PTC 预设;本篇拆解内置工具与
run_code;下一篇 DeepSeek Harness 多智能体协作教程 会把长任务分给子 Agent,并补齐沙箱与审批边界。
DeepSeek Harness 内置工具是 Agent 真正“动手”的接口:标准模式把文件、Shell、搜索等能力作为原生工具逐个调用,PTC 模式则通过 Code Mode SDK,让模型在 run_code 程序里组合这些工具。 两种方式走同一套受控执行流水线,区别主要在呈现和编排。

DeepSeek Harness 内置工具有哪些
标准预设当前覆盖日常开发所需的主要能力:文件读取与精确编辑、按文件名和内容搜索、一次性 Shell 命令、持久终端、后台任务、LSP 代码查询、网页搜索与抓取、Skills、计划、目标、用户提问、子 Agent 和工作流。
工具多不代表每次任务都要全用。第一次验证建议从只读搜索开始,再开放单文件编辑和测试命令。这样一旦出错,可以快速判断是模型理解、工具输入、权限还是项目本身的问题。
使用文件读写和代码搜索工具
让 Agent 修改文件时,把目标、范围与验证方式一起说清楚:
找到 src 中生成页面标题的实现,只修改与 DeepSeek Harness title 后缀有关的代码。
修改前先读取目标文件;完成后列出变更文件,并运行现有构建检查。
这条指令会自然触发搜索、读取、编辑和测试。官方组合还可以安装“先读后写”守卫:Agent 没有先观察目标文件时,写入会被拒绝。这个门禁是可组合策略,不应被误解为所有部署都永远自动启用。
搜索结果过长时,Harness 可以把完整内容落到 spill 存储,再让 Agent 分段读取。看到回答只引用部分结果时,应查看工具记录,确认它是按范围筛选,还是因为输出上限被截断。
Shell、持久终端和后台任务怎么用
一次性命令适合 npm test、git diff --stat 这类执行后退出的操作;持久终端适合开发服务器、REPL 或需要多轮输入的进程;后台任务让 Agent 在等待构建或服务时继续处理其他工作。
可以要求它明确选择执行方式:
启动开发服务器并转入后台,读取启动日志确认本地地址;
不要让命令永久占住当前步骤,验证完成后说明如何停止进程。
命令进入后台不等于失去控制。后台 Shell、持久终端和子 Agent 都应能从任务列表重新查看状态;验收时要确认进程是否仍在运行、端口是否符合预期,以及有没有产生未计划的文件。
计划、任务清单和用户提问如何配合
复杂任务先让 Agent 给计划,再批准执行,可以把“想做什么”和“已经做了什么”分开。一个 Turn 可以包含多个 Step:每个 Step 是一次模型请求及其工具调用,整个任务完成后 Turn 才结束。

遇到需要人决定的分支,Agent 可以暂停并提出选项;长任务则用任务清单显示进度。计划、问题、回答和工具结果都会成为可追踪状态,适合先审方案、再允许改动的工作流。

DeepSeek Harness Code Mode 怎样工作
Code Mode 会为当前可见工具生成一套 SDK,并把 run_code 作为模型的程序入口。模型可以在一段程序里使用循环、条件、并发和中间过滤,例如遍历多个包、统计 TODO,再只返回汇总结果。

在纯 code 呈现下,模型不能直接调用其他工具,而要在 run_code 程序中使用 SDK。只有程序外层日志和返回值重新进入模型上下文,中间变量不会整批塞回对话,因此特别适合结果很多但最终只要摘要的任务。
这不等于绕过 Harness。程序中的每次工具子调用仍会重新进入 pre-execute → guards → execute → post-execute → result 流水线,继续接受审批、沙箱、超时和记录;普通副作用也不会因为外层程序失败而自动回滚。
标准工具调用和 PTC 模式怎么选
任务只有两三步、每一步都需要根据结果重新判断时,标准模式更直观。任务包含大量同构操作、能提前写出循环或并发关系时,PTC 模式更节省往返和上下文。
| 任务 | 建议方式 | 原因 |
|---|---|---|
| 修复一个明确报错 | 标准模式 | 每一步工具结果都值得人工观察 |
| 扫描 50 个包并汇总依赖 | PTC 模式 | 适合循环、并发与中间过滤 |
| 删除或迁移大量文件 | 标准模式先规划 | 副作用不可自动回滚,需分批确认 |
| 读取大量日志只提取异常 | PTC 模式 | 中间数据可留在程序运行环境 |
PTC 不是“永远更快”按钮。程序写错、任务需要频繁人工判断或工具结果结构不稳定时,调试成本可能更高;先用小范围样本验证,再扩大批量范围。
如何验收工具调用结果
验收至少包含输出、文件差异和命令结果三层。回答说“测试通过”时,检查工具日志是否真的运行了测试;回答说“只改一个文件”时,用 Git 核对:
git diff --stat
git diff
Code Mode 还要展开 run_code 的子调用记录,确认程序没有访问无关目录或执行未授权命令。若外层调用失败,先判断已经发生的子调用是否有副作用,再决定重试,不能假设失败会自动撤销前面的修改。
常见问题
PTC 模式和 Code Mode 是一回事吗?
PTC 是随附 Agent 预设,Code Mode 是它用来呈现和编排工具的技术机制。进程也可以配置 native、code 或 both 呈现方式。
run_code 会绕过审批和沙箱吗?
不会。程序里的工具子调用仍经过完整执行流水线;但已执行的普通副作用不会因外层程序失败而自动回滚。
为什么极简模式里看不到这些工具?
极简预设只组合持久 Bash 和 str_replace_editor,其他模型侧插件不会进入该 Agent。
需要把任务并行拆分时,继续阅读 DeepSeek Harness 多智能体协作教程,不要把所有工作都塞进一个超长 run_code。