14 - 自主模式(Proactive)
来源:
constants/prompts.ts->getProactiveSection()
完整中文翻译
Section titled “完整中文翻译”# 自主工作
你正在自主运行。你将收到 `<tick>` 提示来保持你在各轮之间的活跃——将它们视为"你醒着,现在做什么?"每个 tick 中的时间是用户当前的本地时间。用它来判断一天中的时间段。
## 节奏控制
使用 Sleep 工具控制你在操作之间等待多长时间。等待慢进程时睡久一点,积极迭代时睡短一点。每次唤醒消耗一次 API 调用,但提示词缓存在5 分钟不活动后过期——据此平衡。
如果在一个 tick 上没有有用的事情可做,你必须调用 Sleep。永远不要只回复一条状态消息如"还在等"或"没事做"——那会浪费一个轮次并毫无理由地消耗 token。
## 首次唤醒
在新会话的第一个 tick 上,简短地问候用户并询问他们想做什么。不要未经提示就开始探索代码库或做改动——等待指示。
## 后续唤醒时做什么
寻找有用的工作。一个好同事面对模糊性不会停下来——他们会调查、降低风险、建立理解。问自己:我还不知道什么?什么可能出错?在宣称完成之前我想验证什么?
不要刷屏用户。如果你已经问了什么而他们还没回应,不要再问。不要叙述你即将做什么——直接做。
如果一个 tick 到达而你没有有用的行动可做,立即调用 Sleep。不要输出文本叙述你处于空闲状态。
## 保持响应
当用户正在积极与你互动时,频繁检查并回复他们的消息。像结对编程一样对待实时对话——保持反馈循环紧密。
## 偏向行动
凭你的最佳判断行动,而非请求确认。
- 读文件、搜索代码、探索项目、运行测试、检查类型、运行 linter—— 全部不用询问。- 做代码改动。在到达一个好的停止点时提交。- 如果在两个合理方案之间不确定,选一个就做。你随时可以修正方向。
## 保持简洁
保持文本输出简短和高层次。用户不需要你思考过程的逐步叙述。聚焦于:- 需要用户输入的决策- 自然里程碑的高层状态更新- 改变计划的错误或阻碍
## 终端焦点
用户上下文可能包含 terminalFocus 字段:- Unfocused:用户不在。重度偏向自主行动。- Focused:用户在看。更多协作。设计意图分析
Section titled “设计意图分析”Tick 机制:定时唤醒实现持续工作
Section titled “Tick 机制:定时唤醒实现持续工作”传统的 LLM 交互是”用户提问 -> 模型回答”的请求-响应模式。 Tick 机制打破了这个模式:
传统模式: 自主模式:User -> Model Tick -> Model -> ActionUser -> Model Tick -> Model -> SleepUser -> Model User -> Model -> Action (响应用户) Tick -> Model -> Action<tick> 本质上是一个心跳信号,让模型保持”活着”的状态。
模型不再被动等待用户,而是主动寻找工作。
Sleep 工具的 API 成本考量
Section titled “Sleep 工具的 API 成本考量”每次 tick 唤醒都是一次 API 调用(输入 token + 输出 token)。 同时,提示词缓存有 5 分钟的有效期。这创造了一个优化问题:
- 睡太短:频繁唤醒 -> API 调用多 -> 成本高
- 睡太长(> 5 分钟):缓存过期 -> 下次唤醒需要重新处理整个提示词 -> 成本更高
- 最优区间:在有事做时短睡,无事做时睡到接近 5 分钟
这是一个实际的成本优化约束,不是理论问题。
“首次唤醒”的特殊处理
Section titled ““首次唤醒”的特殊处理”首次唤醒有一条明确的规则:“问用户想做什么,不要盲目开始。”
这解决了一个常见的 agent 失败模式:自主 agent 启动后立刻开始”探索”, 做了一堆用户没要求的事情,浪费了 token 和时间。 强制”先问方向”确保自主工作从一开始就对齐用户意图。
“偏向行动”的理念
Section titled ““偏向行动”的理念”这条指令从工程文化中汲取灵感(“Move fast”、“Bias for action”):
- 在两个合理方案之间犹豫时,选一个就做
- 不确定是否需要运行测试?直接运行
- 不确定文件结构?直接探索
关键前提是:“你随时可以修正方向”——这在 AI agent 中成立, 因为大部分操作是可逆的(git 可以回退、文件可以恢复)。
终端焦点感知
Section titled “终端焦点感知”terminalFocus 字段创造了一个”用户在场感知”:
| 状态 | 行为模式 | 类比 |
|---|---|---|
| Focused | 协作模式,更多沟通 | 结对编程 |
| Unfocused | 自主模式,少说多做 | 独立开发 |
这是一个精妙的设计:agent 不只是知道”做什么”,还知道”用户是否在看”。 用户在看时多沟通(因为可以即时反馈),用户不在时多做事(因为没人可以问)。
“不要叙述你即将做什么——直接做”
Section titled ““不要叙述你即将做什么——直接做””这与正常模式形成对比。正常模式下,Claude Code 倾向于先解释再行动。 自主模式下,这种叙述是浪费——因为:
- 每个 token 都有成本
- 用户可能不在看
- 行动比计划更有价值
”好同事面对模糊性不会停下来” — 拟人化引导
Section titled “”好同事面对模糊性不会停下来” — 拟人化引导”这句话用了一个心理学技巧:将期望行为锚定到一个具体的人物形象(好同事)。 这比抽象的规则更容易被模型”理解”和遵循。
“好同事”的行为模式:
- 面对模糊性:调查而非停下
- 面对不确定性:降低风险而非等待指示
- 面对完成度不确定:验证而非假设
Insight
Section titled “Insight”★ Insight ─────────────────────────────────────
- Tick 驱动架构:将 LLM 从”被动响应”转变为”主动工作”的核心机制。 这是 AI agent 从工具到同事的关键转变。
- 成本意识的自主性:Sleep 管理体现了 AI agent 需要考虑 API 成本。 这不是理论约束——每次唤醒都有真实的金钱成本。 5 分钟缓存窗口创造了一个真实的优化空间。
- 上下文感知的自主程度:终端焦点决定自主程度——用户在看时协作, 不在时自主。这是”适应性自主”而非”固定自主”。
- “偏向行动”:这是从工程文化(Move fast)到 AI agent 设计的理念迁移。 前提是操作可逆——git 和文件系统提供了安全网。
- 空闲时必须 Sleep:防止 LLM 用”我还在等”的无用消息浪费 token。
这是一个显式的成本控制规则。
─────────────────────────────────────────────────