DeepSeek Harness

DeepSeek Harness 内置工具与 Code Mode 教程

DeepSeek Harness 内置工具覆盖文件读写、代码搜索、Shell、持久终端、LSP、网页访问、计划和后台任务,PTC 预设还会通过 Code Mode 让模型用程序组合多次调用。本篇讲清原生工具与 run_code 的区别、执行流水线、上下文占用、安全审批和适用任务,帮助你选择可验证的执行方式。

写代码 进阶

📚 系列导航:上一篇 DeepSeek Harness Agent 预设模式教程 已经选好标准或 PTC 预设;本篇拆解内置工具与 run_code;下一篇 DeepSeek Harness 多智能体协作教程 会把长任务分给子 Agent,并补齐沙箱与审批边界。

DeepSeek Harness 内置工具是 Agent 真正“动手”的接口:标准模式把文件、Shell、搜索等能力作为原生工具逐个调用,PTC 模式则通过 Code Mode SDK,让模型在 run_code 程序里组合这些工具。 两种方式走同一套受控执行流水线,区别主要在呈现和编排。

DeepSeek Harness 内置工具集包含文件、搜索、终端和网页能力

DeepSeek Harness 内置工具有哪些

标准预设当前覆盖日常开发所需的主要能力:文件读取与精确编辑、按文件名和内容搜索、一次性 Shell 命令、持久终端、后台任务、LSP 代码查询、网页搜索与抓取、Skills、计划、目标、用户提问、子 Agent 和工作流。

工具多不代表每次任务都要全用。第一次验证建议从只读搜索开始,再开放单文件编辑和测试命令。这样一旦出错,可以快速判断是模型理解、工具输入、权限还是项目本身的问题。

使用文件读写和代码搜索工具

让 Agent 修改文件时,把目标、范围与验证方式一起说清楚:

找到 src 中生成页面标题的实现,只修改与 DeepSeek Harness title 后缀有关的代码。
修改前先读取目标文件;完成后列出变更文件,并运行现有构建检查。

这条指令会自然触发搜索、读取、编辑和测试。官方组合还可以安装“先读后写”守卫:Agent 没有先观察目标文件时,写入会被拒绝。这个门禁是可组合策略,不应被误解为所有部署都永远自动启用。

搜索结果过长时,Harness 可以把完整内容落到 spill 存储,再让 Agent 分段读取。看到回答只引用部分结果时,应查看工具记录,确认它是按范围筛选,还是因为输出上限被截断。

Shell、持久终端和后台任务怎么用

一次性命令适合 npm testgit diff --stat 这类执行后退出的操作;持久终端适合开发服务器、REPL 或需要多轮输入的进程;后台任务让 Agent 在等待构建或服务时继续处理其他工作。

可以要求它明确选择执行方式:

启动开发服务器并转入后台,读取启动日志确认本地地址;
不要让命令永久占住当前步骤,验证完成后说明如何停止进程。

命令进入后台不等于失去控制。后台 Shell、持久终端和子 Agent 都应能从任务列表重新查看状态;验收时要确认进程是否仍在运行、端口是否符合预期,以及有没有产生未计划的文件。

计划、任务清单和用户提问如何配合

复杂任务先让 Agent 给计划,再批准执行,可以把“想做什么”和“已经做了什么”分开。一个 Turn 可以包含多个 Step:每个 Step 是一次模型请求及其工具调用,整个任务完成后 Turn 才结束。

DeepSeek Harness 的轮次与步骤组成一个连续 Agent 工作循环

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

DeepSeek Harness 计划、清单和提问功能示意图

DeepSeek Harness Code Mode 怎样工作

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

DeepSeek Harness Code Mode 用 TypeScript 程序组合多步工具调用

在纯 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 是它用来呈现和编排工具的技术机制。进程也可以配置 nativecodeboth 呈现方式。

run_code 会绕过审批和沙箱吗?

不会。程序里的工具子调用仍经过完整执行流水线;但已执行的普通副作用不会因外层程序失败而自动回滚。

为什么极简模式里看不到这些工具?

极简预设只组合持久 Bash 和 str_replace_editor,其他模型侧插件不会进入该 Agent。

需要把任务并行拆分时,继续阅读 DeepSeek Harness 多智能体协作教程,不要把所有工作都塞进一个超长 run_code