DSH 四种 Preset 区别与用法:极简 / 标准 / PTC / 创造,该选哪个?
DSH(DeepSeek Harness)内置四种 Agent Preset——极简(Minimal)、标准(Standard)、PTC、创造(Cordis)——每个 Preset 是一份 agent.cordis.yml 组装文件,决定当前会话拥有哪些工具、提示词段落和 Skill,不同 Preset 的会话在同一进程中完全隔离运行。极简模式只加载持久 bash 和 str_replace_editor 两个工具,无上下文压缩,适合低 token 消耗的基准测试和轻量修改;标准模式是默认选项,集成文件、Shell、网页检索、Skill、规划、目标、子 Agent、Workflow 等完整能力;PTC 模式在标准模式全部能力的基础上增加 run_code 工具,让模型用一段 TypeScript 程序批量组合多个工具调用,把原本需要五次往返的操作压缩为一次;创造(Cordis)模式同样基于标准模式,额外开放 cordis_* 运行时自检工具集,让模型直接读写自身运行的 Harness 组装,等同于 shell 级访问权限。本文基于 DSH 官方 GitHub 源码(packages/preset/agent-presets/presets/)对四种 Preset 逐一拆解,给出工具差异对比、适用场景和切换方法。

什么是 Preset
DSH 的每个会话在启动时选定一个 Preset,Preset 决定这个会话能用什么工具、看到哪些提示词段落、加载哪些 Skill。不同 Preset 的会话彼此隔离——共用同一进程,但各自的工具注册表和提示词互不干扰。
会话在启动后无法更换 Preset(一旦发出了第一条消息,Preset 就锁定了),但可以开一个新会话选不同的 Preset。
四种内置 Preset 按顺序展示在 UI 的选择器中:
极简模式(Minimal):最小化工具集
工具清单:bash(持久 PTY Shell)+ str_replace_editor
没有的东西:无网页检索、无 Skill、无子 Agent(subagent / workflow / ralph)、无规划模式(exit_plan_mode)、无目标(goal)、无上下文压缩。
关键细节:这里的 bash 是持久 PTY 版本(dsh-tool-bash-persistent),与标准模式的一次性 bash 不同——状态在多次调用之间保持,不会随每次调用重置工作目录和变量。文件系统直接使用 dsh-fs-local,绕过沙箱 fs,权限模型与其他模式有细微差异。提示词极简——You are a helpful software engineer assistant.——没有任何注入的工具说明或上下文段落。
适合的场景:
Benchmark / 评测:官方 BENCHMARK.md 明确指定用 minimal 变体跑
jsonrpc-agent,其他 preset 加载的额外工具会让评测结果不可比快速单文件编辑:只需要改一个文件、运行一条命令的轻量任务,标准模式的完整工具目录是浪费
调试 DSH 自身:排查 harness 问题时用极简模式跑任务,避免其他插件的干扰
不适合的场景:长任务(无上下文压缩,长会话会超出模型窗口)、需要联网查资料、需要子 Agent 分发工作。
标准模式(Standard):日常的默认选项
工具清单(完整):
这是绝大多数用户 90% 时间应该用的模式。
子 Agent 的两种后台行为:subagent 支持模型选择(modelSelectionSettings: true);subagent_fork 继承父会话的模型路由,有利于 KV Cache 复用。两者均为 backgroundMode: continuable,可以在后台运行并被 send_message 继续通信。
PTC 模式:把五次往返压成一次
与标准模式的差别:在标准模式全部工具之外,增加一个呈现层插件 @deepseek-ai/dsh-agent-tool-presentation(mode: ptc),将工具的暴露方式从 JSON Schema 函数定义改为 TypeScript SDK——模型不再每步发出一个 tool-call,而是写一段 TypeScript 程序一次性提交,由沙箱运行时(worker thread)执行。
为什么叫 PTC:来自 Cloudflare 提出的 Program-Tool-Call 概念,核心观察是:LLM 见过数百万行真实代码,编程能力强于发出结构化 tool-call,让它写程序比让它"填表单"更自然。
PTC 模式的工具是 run_code:
// 模型会这样写(TypeScript 异步函数体)
const result1 = await tools.bash({ command: 'ls src/', description: 'List source files' });
const result2 = await tools.bash({ command: 'cat src/index.ts', description: 'Read entry file' });
// 只 return 需要模型看到的内容,中间结果不占 context
return `目录内容: ${result1}\n入口文件: ${result2}`;核心优势:
减少往返次数:5 个独立的 bash 调用,在标准模式需要 5 次模型请求;在 PTC 模式写一个程序一次提交
中间结果不污染 context:程序内部的中间值不会进入模型上下文,只有
return或console.log的内容才返回支持并发:
Promise.all([tools.read({...}), tools.read({...})])并行执行,标准模式按调用顺序串行
注意事项:
程序跑在 Node.js worker thread 中,信任等级与 bash 相同——模型代码有全部 Node API 权限,不是沙箱隔离
只支持可擦除 TypeScript 语法(不能用
enum、namespace),运行前会做 type-strip
适合的场景:多步骤的读-分析-写任务(如读 10 个文件再汇总)、需要在程序内部做分支和循环的任务、想节省 API token 往返成本的场景。
创造模式(Cordis):让 Agent 改写自己
与标准模式的差别:在标准模式全部工具之外,增加 @deepseek-ai/dsh-tool-cordis 工具集(7 个工具:cordis_define、cordis_inspect_list、cordis_inspect_query、cordis_inspect_self、cordis_run、cordis_stop、cordis_undefine),并加载一个 editing-cordis-compositions Skill。
能做什么:Agent 可以实时查看 Harness 进程内的插件注册表(inspect)、编写一段新的 Cordis 插件代码(define)、在运行时挂载执行(run)——实际上是让模型直接给自己添加新工具或修改行为。
风险说明:官方文档原文:"Treat a session on this preset as shell access"(视为 shell 级访问权限)。cordis_run 执行模型写的 JavaScript,权限等同于运行任意 shell 命令。
主要用途:
开发自定义 Preset:按官方流程,先用创造模式让 Agent 辅助编写
agent.cordis.yml,再保存到~/.dsh/.agent-presets/下实验性插件调试:动态挂载一个临时插件,测试完再
cordis_stop/cordis_undefine了解 DSH 架构:通过
cordis_inspect_*探索当前进程内的所有服务和事件
不适合普通用户日常编码任务——全部能力都在标准模式里有,创造模式的额外工具只对"想改造 Harness 本身"的开发者有价值。
四种模式对比速查

如何切换 Preset
新建会话时选择:打开 DSH Web UI(http://127.0.0.1:3080),新会话启动前在会话选择器中选 Preset,下拉菜单显示四种内置 Preset 的显示名和描述。
修改默认 Preset:编辑 DSH 配置,找到 @deepseek-ai/dsh-agent-presets 的 default 字段,改为对应的 Preset ID(minimal / standard / ptc / cordis)。修改只影响之后新建的会话,已运行的会话不受影响。
创建自定义 Preset:在创造模式下,可以让 Agent 辅助创建一个自定义 Preset,或者直接在 $DSH_HOME/.agent-presets/ 下手写一个目录,放入 agent.cordis.yml 和 preset.yml(包含显示名和描述)。自定义 Preset 与内置 Preset 同级列出。
FAQ
Q:默认就该用标准模式吗? A:是的,官方默认值就是 standard。除非有明确理由(跑评测用极简、想减少 API 往返用 PTC、想改造 Harness 用创造),标准模式就是日常使用的正确选择。
Q:PTC 模式适合所有人吗? A:适合理解 TypeScript 并且任务以"多步骤批量操作"为主的用户。如果日常任务以单步骤问答为主,PTC 模式的优势不明显,还需要模型"以函数体而非对话"的方式思考,可能带来新的心智负担。
Q:极简模式是 Benchmark 专用的吗? A:不完全是,它也适合任何不需要联网、不需要子 Agent、只需要改文件和跑命令的轻量任务。DSH 官方的 Benchmark 用的是 jsonrpc-agent minimal 变体,这是因为极简模式的工具集固定,评测结果可复现。
Q:四种 Preset 对应同一个 API Key 的费用一样吗? A:工具数量不同,系统提示词长度不同,token 消耗会有差异。极简模式提示词最短,往往最省;PTC 模式虽然减少往返次数,但 SDK 声明本身增加了系统提示词长度。接入七牛云 AI 大模型广场(qiniu.com/ai/models)可以统一监控不同模式的实际 token 消耗,方便对比。
Q:cordis_run 执行的代码安全吗? A:官方原文说明:信任等级与 bash 相同,等同于 shell 访问权限。模型写的 JavaScript 跑在 Node.js worker thread 中,可以调用全部 Node API。只在信任 DSH 自身模型输出的前提下使用。
总结
DSH 的四种 Preset 是同一套"一切皆插件"架构下的不同组装方案:极简模式两个工具、无压缩,适合轻量任务和 Benchmark;标准模式是功能完整的默认配置,覆盖日常 90% 的场景;PTC 模式在标准之上引入 TypeScript 程序批量执行,减少多步任务的 API 往返次数;创造模式在标准之上开放运行时自检和插件挂载,是开发自定义 Preset 和探索 Harness 架构的专用工具。会话启动后 Preset 不可更换,选好再开工。
延伸阅读
DeepSeek Harness GitHub 仓库:https://github.com/deepseek-ai/deepseek-harness
DSH 工具目录文档:https://deepseek-harness.github.io/deepseek-harness/
七牛云 AI 大模型广场(dsh可接入):https://www.qiniu.com/ai/models