DeepSeek Harness: 四种运行模式

最后更新:2026-08-31

DSH 的四种运行模式就像汽车的不同驾驶模式——经济、运动、越野、赛道——同辆车,不同性格。选对模式,Agent 的行为与你期望的完全一致;选错模式,要么过于保守,要么失控跑偏。

💡 提示:标准模式是默认选择,适合 80% 的场景。PTC 模式适合需要精确控制的任务。极简模式适合纯问答。创造模式适合探索性工作。不确定时用标准模式。

📋 前置知识:已完成 04-model-config.md,模型已配置可用

1. 你将学到


2. 模式总览

(1) ▶ 示例 1

四种运行模式

100%
graph TB
    INPUT[用户输入] --> MODE{选择模式}
    MODE --> STD[标准模式<br/>Agent 自主决策]
    MODE --> PTC[PTC 模式<br/>先规划再执行]
    MODE --> MIN[极简模式<br/>最少工具调用]
    MODE --> CRE[创造模式<br/>探索性输出]
    
    STD --> ACTION1[自主选择工具<br/>自主决定步骤]
    PTC --> ACTION2[先输出计划<br/>用户确认后执行]
    MIN --> ACTION3[优先用自身知识<br/>仅在必要时调用工具]
    CRE --> ACTION4[自由联想<br/>鼓励创意和探索]

(2) 一张对比表看懂四种模式

维度 标准 PTC 极简 创造
工具调用 Agent 自主决定 计划中声明 最少化 自由使用
用户控制 中等(审批) 高(确认计划) 高(少操作) 低(自由发挥)
输出确定性 中等
速度 中等 较慢(两步) 最快 不确定
适用场景 通用编程 复杂任务 简单问答 创意写作
Temperature 0.7 0.3 0.2 1.0+
token 消耗 中等 较高 最低 较高

3. 标准模式(Standard)

(1) 工作原理

标准模式是 DSH 的默认模式。Agent 收到用户指令后,自主分析需要哪些工具、执行什么操作,按最佳判断执行:

标准模式

TEXT 📖 仅展示
👤 Alice: 帮我重构 src/utils/format.ts,提取日期格式化函数到单独文件

🤖 Agent: 
🔍 Using tool: search
  → Searching for src/utils/format.ts

🔍 Using tool: file_edit (read)
  → Reading src/utils/format.ts

📝 Using tool: file_edit (create)
  → Creating src/utils/date-format.ts

📝 Using tool: file_edit (edit)
  → Updating src/utils/format.ts (removing date functions)

📝 Using tool: file_edit (edit)
  → Updating imports in src/index.ts

✅ 完成!日期格式化函数已提取到 src/utils/date-format.ts

(2) 自主决策逻辑

标准模式下,Agent 的决策链:

100%
graph TD
    INPUT[用户指令] --> ANALYZE[分析意图]
    ANALYZE --> PLAN[内部规划步骤]
    PLAN --> DECIDE{需要工具吗?}
    DECIDE -->|是| EXEC[调用工具]
    DECIDE -->|否| RESPOND[直接回复]
    EXEC --> CHECK{完成了吗?}
    CHECK -->|否| PLAN
    CHECK -->|是| RESPOND

(3) 何时使用标准模式


4. PTC 模式(Plan-then-Code)

(1) 工作原理

PTC 模式将 Agent 行为分为两步:

PTC 模式

  1. Plan 阶段:Agent 分析任务,输出详细计划,不执行任何操作
  2. Code 阶段:用户确认计划后,Agent 按计划逐步执行
TEXT 📖 仅展示
👤 Bob: 给项目添加用户认证系统,支持 JWT

🤖 Agent (Plan 阶段):
📋 执行计划:
  1. 安装依赖:jsonwebtoken、bcryptjs
  2. 创建 src/auth/jwt.ts — JWT 签发与验证
  3. 创建 src/auth/middleware.ts — 认证中间件
  4. 创建 src/routes/auth.ts — 登录/注册路由
  5. 修改 src/app.ts — 注册路由和中间件
  6. 添加环境变量 JWT_SECRET

预计修改 5 个文件,新建 3 个文件。
是否执行此计划?

👤 Bob: 执行,但跳过第 1 步,依赖已经安装了

🤖 Agent (Code 阶段):
📝 Step 2: Creating src/auth/jwt.ts...
📝 Step 3: Creating src/auth/middleware.ts...
📝 Step 4: Creating src/routes/auth.ts...
📝 Step 5: Editing src/app.ts...
📝 Step 6: Adding JWT_SECRET to .env.example...

✅ 认证系统添加完成!

(2) PTC 的计划格式

PTC 模式输出的计划包含:

TYPESCRIPT
interface PTCPlan {
  steps: PlanStep[];
  estimatedFiles: { created: number; modified: number; deleted: number };
  riskLevel: 'low' | 'medium' | 'high';
  reversible: boolean;
}

interface PlanStep {
  id: number;
  description: string;
  tool: string;           // 使用的工具
  files: string[];        // 涉及的文件
  dependsOn: number[];    // 依赖的前置步骤
}

(3) ▶ 示例 3

100%
graph TD
    INPUT[用户指令] --> PLAN[Agent 输出计划]
    PLAN --> REVIEW[用户审阅计划]
    REVIEW -->|确认| EXEC[Agent 执行]
    REVIEW -->|修改| MODIFY[用户修改计划]
    MODIFY --> EXEC
    REVIEW -->|拒绝| CANCEL[取消执行]
    EXEC --> STEP[逐步执行]
    STEP --> DONE{全部完成?}
    DONE -->|否| STEP
    DONE -->|是| RESULT[输出结果]

(4) 何时使用 PTC 模式


5. 极简模式(Minimal)

(1) 工作原理

极简模式下,Agent 尽量减少工具调用,优先使用自身知识回答问题:

极简模式

TEXT 📖 仅展示
👤 Alice: JavaScript 中 Promise 和 async/await 的区别是什么?

🤖 Agent: 
Promise 是异步操作的对象表示,async/await 是 Promise 的语法糖:

1. Promise 用 .then() 链式调用:
   fetchData().then(data => process(data)).catch(err => handle(err));

2. async/await 用同步写法:
   const data = await fetchData();
   process(data);

核心区别:
- Promise 是对象,async/await 是语法
- await 只能在 async 函数中使用
- async 函数总是返回 Promise
- 错误处理:.catch() vs try/catch

注意:Agent 没有调用任何工具——直接用知识回答。

(2) ▶ 示例 2

100%
graph TD
    INPUT[用户指令] --> EVAL{能用知识回答吗?}
    EVAL -->|是| RESPOND[直接回复]
    EVAL -->|否| TOOL[调用最少必要工具]
    TOOL --> RESPOND

(3) 极简模式 vs 标准模式对比

场景 标准模式 极简模式
"什么是闭包?" 可能搜索项目中的闭包示例 直接解释概念
"帮我写个排序函数" 先搜索项目代码风格,再写 直接写通用实现
"这个 Bug 怎么修?" 读取文件、搜索相关代码 先给通用方案,用户要求才读文件

(4) 何时使用极简模式


6. 创造模式(Creative)

(1) 工作原理

创造模式给 Agent 最高自由度,鼓励探索性、创意性输出:

创造模式

TEXT 📖 仅展示
👤 Alice: 帮我设计一个独特的 404 页面

🤖 Agent: 
🎨 我来设计一个交互式 404 页面——用 Canvas 画一个小行星带,用户可以移动鼠标躲避陨石!

📝 Using tool: file_edit (create)
  → Creating src/pages/404.html

🎨 功能:
- Canvas 绘制动态星空背景
- 鼠标控制小飞船移动
- 陨石随机生成和碰撞检测
- 随时间增加难度
- 碰撞后显示"你找到了 404!"并跳转首页

🔧 额外想法:
- 加个音效用 Web Audio API
- 移动端触摸支持
- 分数排行榜(localStorage)

(2) 创造模式的特点

特点 说明
高 Temperature 输出更随机、更多样
自由联想 主动给出额外建议和创意
不限于指令 超出用户要求的范围思考
鼓励探索 尝试非常规方案
输出较长 通常比其他模式输出更多内容

(3) 创造模式的适用场景

100%
graph LR
    A[创意写作] --> CRE[创造模式]
    B[UI/UX 设计] --> CRE
    C[头脑风暴] --> CRE
    D[原型探索] --> CRE
    E[学习新框架] --> CRE

(4) 创造模式的注意事项


7. 模式切换与组合

(1) 切换方式

Web UI 切换:

TEXT 📖 仅展示
顶部控制栏 → 模式下拉菜单 → 选择目标模式

CLI 切换:

BASH
# 启动时指定
npx @deepseek-ai/dsh cli --mode ptc

# 运行中切换
/mode creative

配置文件默认模式:

YAML
# dsh.config.yaml
default_mode: ptc

(2) 模式组合策略

实际工作中,不同阶段可以用不同模式:

TEXT 📖 仅展示
项目规划阶段 → PTC 模式(先规划)
  ↓
实现阶段 → 标准模式(自主执行)
  ↓
问题排查 → 极简模式(快速问答)
  ↓
UI 设计 → 创造模式(探索创意)

(3) 模式与模型的最佳搭配

任务 推荐模式 推荐模型 原因
代码编写 标准 deepseek-coder 代码模型 + 自主决策
复杂重构 PTC deepseek-reasoner 推理模型 + 计划确认
技术问答 极简 deepseek-chat 通用模型 + 快速回答
创意设计 创造 gpt-4o 高创造性 + 多样输出
Bug 调试 标准 deepseek-coder 代码理解 + 工具使用

8. 模式实现原理

(1) 模式配置结构

TYPESCRIPT
interface ModeConfig {
  name: string;
  allowTools: boolean;
  requirePlan: boolean;
  temperature: number;
  maxToolCalls: number | null;
  systemPromptExtra: string;
}

const MODES: Record<string, ModeConfig> = {
  standard: {
    name: 'standard',
    allowTools: true,
    requirePlan: false,
    temperature: 0.7,
    maxToolCalls: null,
    systemPromptExtra: 'You have full autonomy to use tools as needed.'
  },
  ptc: {
    name: 'ptc',
    allowTools: true,
    requirePlan: true,
    temperature: 0.3,
    maxToolCalls: null,
    systemPromptExtra: 'Always create a plan first. Do not execute until the user confirms.'
  },
  minimal: {
    name: 'minimal',
    allowTools: true,
    requirePlan: false,
    temperature: 0.2,
    maxToolCalls: 1,
    systemPromptExtra: 'Minimize tool usage. Prefer answering from knowledge.'
  },
  creative: {
    name: 'creative',
    allowTools: true,
    requirePlan: false,
    temperature: 1.0,
    maxToolCalls: null,
    systemPromptExtra: 'Be creative, explore unusual approaches, think beyond the obvious.'
  }
};

(2) 模式如何影响 System Prompt

每种模式在 System Prompt 末尾追加额外指令,引导 Agent 行为:

TEXT 📖 仅展示
标准模式追加:
"Use tools freely when they help accomplish the task."

PTC 模式追加:
"Before any action, output a numbered plan. Wait for user confirmation before executing."

极简模式追加:
"Answer from your knowledge first. Only use tools when absolutely necessary."

创造模式追加:
"Think creatively and explore novel approaches. Offer additional ideas beyond the request."

❓ 常见问题

Q 哪种模式最省 token?
A 极简模式——工具调用最少,输出最精简。PTC 模式最费 token(计划 + 执行两步输出)。
Q PTC 模式的计划可以修改吗?
A 可以。用户可以删除、修改、重新排序计划中的步骤,也可以告诉 Agent "跳过第 3 步"。
Q 创造模式会不会写出不安全的代码?
A 有可能。创造模式鼓励探索,可能使用非常规方案。对安全性要求高的任务不建议使用创造模式。
Q 标准模式下 Agent 的决策是否可预测?
A 基本可预测——相同输入通常产生相似的工具调用序列。但 LLM 输出有随机性,不完全确定性。
Q 可以在同一个会话中切换模式吗?
A 可以。模式切换即时生效,不影响已执行的对话历史。后续消息将按新模式的行为规则处理。
Q 极简模式会完全不使用工具吗?
A 不是完全不使用,而是最少使用。如果问题确实需要读取文件或执行命令,Agent 仍然会调用工具,但频率远低于标准模式。 ---

📖 小节


📝 作业

1. ⭐ 基础题:分别用四种模式向 Agent 提问同一问题:"帮我写一个快速排序函数",对比四种模式的输出差异(工具调用次数、输出长度、代码风格)。

2. ⭐⭐ 进阶题:使用 PTC 模式完成一个 5 步以上的任务(如"给项目添加日志系统"),记录 Agent 的计划内容,手动修改计划(删除或调整步骤),观察执行结果。

3. ⭐⭐⭐ 挑战题:设计一个"模式组合方案"——为一个完整的 Web 开发项目(从设计到部署)的每个阶段选择最合适的模式,并用 Mermaid 流程图展示模式切换的时机和原因。

Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏