Skip to main content
嗨站  /  Tools 工具组 /  EnterPlanModeTool:进入 Plan Mode

EnterPlanModeTool:进入 Plan Mode

EnterPlanModeTool:进入 Plan Mode

它的本质是状态切换,不是提示词切换

EnterPlanModeTool 的作用不是“让模型多想一会儿”,而是把当前会话切到一种新的运行状态:plan

这意味着系统会同时改变:

  • 权限模式
  • 会话目标
  • 用户交互预期

所以它本质上是一个 运行时状态切换工具

关键源码

tools/EnterPlanModeTool/EnterPlanModeTool.ts

import { handlePlanModeTransition } from '../../bootstrap/state.js'
import { applyPermissionUpdate } from '../../utils/permissions/PermissionUpdate.js'
import { prepareContextForPlanMode } from '../../utils/permissions/permissionSetup.js'

真正的核心逻辑在 call()

context.setAppState(prev => ({
  ...prev,
  toolPermissionContext: applyPermissionUpdate(
    prepareContextForPlanMode(prev.toolPermissionContext),
    { type: 'setMode', mode: 'plan', destination: 'session' },
  ),
}))

调用链

加载图表中…

为什么它不能在 agent context 里随便用

源码里有一条硬限制:

if (context.agentId) {
  throw new Error('EnterPlanMode tool cannot be used in agent contexts')
}

这说明 Anthropic 不希望子 Agent 随便把自己切进 Plan Mode,
而是把这种流程控制留给主线程。

它和 AskUserQuestionTool 的关系

Plan Mode 不是闭门写计划。
如果需求没搞清楚,仍然要用 AskUserQuestionTool 先补信息,再继续计划。

小结

EnterPlanModeTool 的价值在于:

它把“先规划再编码”从一种提示习惯,升级成了 Claude Code 运行时里的正式状态机切换。

Leave a Comment

您的邮箱地址不会被公开。 必填项已用 * 标注