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%

🙏 帮我们做得更好

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

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