kimi-code 深度掌握系列文章-Plan Mode 与 Goal Mode:结构化的自主执行(九)

1. Plan Mode 的设计目标

在 Agent 的日常使用中,一个常见的痛点是:Agent 急于动手,却在执行到一半时发现方向错了。模型在看到用户指令后,本能地想要「做点什么」------调用工具、创建文件、修改代码------但这些动作往往是盲目的。缺少事前的整体规划,会导致大量的无效工作、不必要的返工,甚至破坏已有的正确代码。

Plan Mode 正是为解决这一问题而设计的。它的核心理念是将「先想再做」的工作流形式化:​让 Agent 先制定一个完整的执行计划,呈现给用户审阅,在获得批准后再开始真正执行​。这种设计在几个层面带来了价值:

  • 减少盲目行动:Agent 在动手之前必须回答「我要做什么、分几步做、每步的预期是什么」,这迫使模型进行更深层的任务分析。
  • 用户参与决策:用户可以在计划阶段提出修改意见,纠正 Agent 的错误理解,调整执行策略,避免了事后返工的挫败感。
  • 风险预先识别:计划中明确标注了各步骤的依赖关系和潜在风险,用户可以在高风险操作执行前进行干预。
  • 执行可追溯:有了计划作为参照,Agent 的每一步执行都有明确的目标锚点,偏离计划的行为更容易被发现和纠正。

Plan Mode 本质上是一种​人类在环(Human-in-the-Loop)的决策架构​------它承认模型的规划能力并不完美,因此将最终决策权保留在用户手中。

2. Plan Mode 的工作流程

Plan Mode 的进入和退出由两个特殊的工具调用来控制:enter_plan_modeexit_plan_mode。它们不是普通的业务工具,而是框架层面的控制原语,直接影响 TurnFlow 的行为模式。

2.1 进入 Plan Mode

当用户发出一条复杂度较高的指令(如「重构整个认证模块」或「在项目中集成 OAuth2.0 支持」)时,Agent 可以有多种方式进入 Plan Mode:

  • 用户显式触发:用户在指令中明确要求「先制定一个计划」。
  • 模型主动进入 :模型判断当前任务足够复杂,需要事先规划,主动调用 enter_plan_mode
  • 系统策略触发:某些配置下,超过一定复杂度阈值的任务会自动进入 Plan Mode。

进入 Plan Mode 后,当前 turn 的性质发生变化:Agent 不再执行实际的修改操作,而是专注于分析、拆解、评估。模型会:

  1. 读取相关代码和配置,理解当前状态
  2. 识别任务的核心目标和约束条件
  3. 将任务分解为有序的执行步骤
  4. 分析步骤之间的依赖关系和并行可能性
  5. 评估每步的风险和所需的验证方式
  6. 生成结构化的计划文档

2.2 用户审阅阶段

计划生成后,系统将其呈现给用户。这是一个关键的决策点,用户有几种选择:

操作 效果
批准(Approve) 计划被接受,Agent 开始按步骤执行
修改(Modify) 用户调整某一步骤的内容、顺序或删除不必要的步骤,修改后的计划继续执行
拒绝(Reject) 计划被整体驳回,用户可能重新描述需求,Agent 重新规划
请求澄清 用户对计划中的某部分有疑问,要求 Agent 进一步解释后再做决定

2.3 退出 Plan Mode 并开始执行

一旦用户批准计划,Agent 调用 exit_plan_mode,将计划中的第一步作为当前 turn 的执行目标。后续的每个 turn 会推进计划中的一个步骤,直到所有步骤完成。在执行过程中,如果遇到需要调整计划的情况(如某步骤的预期结果与实际不符),Agent 可以重新进入 Plan Mode 进行修正。

1.用户发起复杂任务

Agent 评估复杂度,决定进入 Plan Mode

2.Agent 分析并生成计划

读取上下文、拆解步骤、评估风险、生成结构化计划

3.用户审阅计划

批准、修改或拒绝计划

4.Agent 按计划逐步执行

每完成一个步骤,检查验证点,推进到下一步

3. 计划的数据结构

Plan 不是一个简单的文本列表,而是一个结构化的数据对象,包含了足够的元信息来支持自动化执行和状态跟踪。

3.1 计划的核心组成

每个计划包含以下核心字段:

  • **目标(Goal)**:用一句话描述计划要达成的最终结果,作为整个执行过程的北极星。
  • **步骤列表(Steps)**:有序的执行步骤,每个步骤包含:
    • description:步骤的详细描述
    • expected_outcome:预期产出和验收标准
    • verification:如何验证此步骤已正确完成
  • **依赖关系(Dependencies)**:步骤之间的依赖图,标明哪些步骤可以并行执行,哪些步骤必须串行等待前序步骤完成。
  • **验证点(Verification Points)**:在关键步骤后设置的检查点,用于确认执行方向正确。如果验证失败,Agent 应暂停并请求用户决策。

3.2 步骤状态跟踪

每个步骤在执行过程中会经历状态流转:

状态 含义
pending 尚未开始,等待前序步骤完成
in_progress 当前正在执行中
completed 已完成并通过验证
skipped 用户或 Agent 决定跳过此步骤(如因条件变化不再需要)
failed 执行失败,需要重新规划或人工介入

3.3 计划的持久化

计划一旦创建,就会被持久化到 session 的上下文中。这意味着:

  • 跨 turn 可用:每一步执行时都能访问完整的计划,确保执行不偏离轨道。
  • session 恢复:如果 session 因故中断(网络问题、超时等),重启后可以恢复到上次执行的步骤。
  • 审计可追溯:完整的计划和执行记录可以用于后续的复盘分析。
Typescript 复制代码
// 计划的简化数据结构
interface Plan {
  id: string;
  goal: string;
  steps: PlanStep[];
  currentStepIndex: number;
  status: 'draft' | 'approved' | 'executing' | 'completed' | 'aborted';
  createdAt: Date;
  updatedAt: Date;
}

interface PlanStep {
  index: number;
  description: string;
  expectedOutcome: string;
  verification: string;
  status: StepStatus;
  dependsOn: number[];        // 依赖的前序步骤索引
  startedAt?: Date;
  completedAt?: Date;
}

4. Plan Mode 与其他模式的交互

4.1 与 TurnFlow 的关系

Plan Mode 从根本上改变了 TurnFlow 的行为。在正常模式下,每个 turn 是一个「接收用户指令 → 执行 → 返回结果」的循环;而在 Plan Mode 下,turn 的行为被修改为「推进计划中的一个步骤」。TurnFlow 会跟踪当前步骤的索引,在每个 turn 开始时注入当前步骤的上下文,在 turn 结束时更新步骤状态并判断是否需要继续执行下一个步骤。

Plan Mode 实际上是在 TurnFlow 之上叠加了一个​步骤调度层​------TurnFlow 仍然管理单轮对话的生命周期,但「下一步做什么」的决策权从用户转移到了计划。

4.2 与 PermissionManager 的关系

计划审阅可以看作 PermissionManager 的一种扩展形式。在常规权限控制中,每个工具调用都可能触发权限检查;而 Plan Mode 将权限检查提前到了计划层面------用户批准计划意味着对计划中所有步骤的「预授权」。这减少了执行过程中的权限确认中断,同时也要求计划本身对高风险操作有明确的标注。

如果计划中的某个步骤在执行时触发了新的权限边界(如访问了计划中未提及的敏感文件),PermissionManager 仍然会介入,确保「预授权」的范围不会超出用户的预期。

4.3 与 Goal Mode 的关系

Plan Mode 和 Goal Mode 是互补的两种自主执行模式。Plan Mode 侧重于事前规划 + 逐步执行,需要用户在规划阶段参与决策;而 Goal Mode 则追求设定目标后的全自动推进。实践中,Plan 可以为 Goal 提供执行蓝图:

  • 用户在 Plan Mode 中审阅并批准计划后,可以将整个计划作为一个 Goal 来执行
  • Goal Driver 参考计划中的步骤顺序和验证点,自动推进执行
  • 当 Goal 执行中遇到需要重新规划的情况时,可以回到 Plan Mode 修正计划后继续

5. Goal Mode 的设计哲学

如果说 Plan Mode 的核心是「让用户在动手前审阅」,那么 Goal Mode 则是走向了另一个方向:​在明确约束下,让 Agent 自主完成多轮任务​。Goal Mode 的设计基于一个关键洞察------对于许多开发任务来说,逐轮交互的效率太低。用户可能希望「把这个功能完整实现」然后离开,让 Agent 在无人干预的情况下持续推进,等到任务完成后再回来检查结果。

但 Goal Mode 绝不是「放养」。它的设计哲学包含三条铁律:

  • 有明确的完成标准:每个 Goal 都有清晰的可验证目标,Agent 不能无限循环。
  • 有严格的停止条件:预算耗尽、遇到阻塞、发生错误时,Goal 必须停下来。
  • 有可恢复的状态:停止不是失败------用户可以检查进展、解除阻塞、恢复执行。

Goal Mode 的设计哲学可以概括为:​信任但要验证​。给 Agent 足够的自主空间去推进任务,但用预算、护栏和状态机确保它不会失控。

6. Goal 状态机

Goal 的生命周期由一个四状态的状态机驱动。理解这个状态机是理解 Goal Mode 全部行为的关键。

scss 复制代码
                ┌──────────┐
创建 Goal ────→ │  active  │ ←─── 用户恢复
                └────┬─────┘
                     │
      ┌──────────────┼──────────────┐
      ↓              ↓              ↓
 ┌─────────┐   ┌──────────┐   ┌──────────┐
 │  paused │   │ blocked  │   │ complete │ (瞬时,随后清除)
 └─────────┘   └──────────┘   └──────────┘
      ↑              ↑
      └────── 用户恢复 ──────┘

active ←→ paused   (用户暂停 / 运行时错误 / 用户恢复)
active ←→ blocked  (业务阻塞 / 预算耗尽 / 用户恢复)
active  → complete (目标完成,瞬时状态,立即清除)

6.1 active(活跃)

active 是 Goal 的「工作状态」。在此状态下,Goal Driver 会在每个 turn 结束自动追加 continuation prompt,触发下一个 turn 的执行。模型在这个连续的执行流中自动推进任务,无需用户逐轮确认。

active 状态的核心行为包括:

  • 每个 turn 被当作 Goal 整体任务的一个执行切片
  • 模型在每个 turn 中需要判断「目标是否已完成」或「是否遇到阻塞」
  • 如果既未完成也未阻塞,模型应推进一个合理的执行切片

6.2 paused(暂停)

paused 表示 Goal 处于暂停状态,其成因可以分为两类:

  • 用户主动暂停:用户需要检查当前进展、修改执行策略,或者只是暂时不想让 Agent 继续运行。
  • 系统自动暂停:遇到运行时错误(如 API rate limit、网络连接断开)时,系统会自动将 Goal 设为 paused,避免在错误状态下继续执行造成更多问题。

paused 状态下的 Goal 不会被清除------所有执行进度、中间结果和上下文都被保留。用户可以在解决问题后恢复执行。

6.3 blocked(阻塞)

blocked 是比 paused 更严重的停止状态,表示 Goal 遇到了自身无法解决的障碍:

  • 业务阻塞:prompt hook 阻止了某个操作、模型判断当前无法继续(如缺少必要信息)、权限被拒绝等。
  • 预算耗尽:turn budget、token budget 或 wall-clock budget 中任意一项达到 100%,Goal 会被 hard stop 并标记为 blocked。

paused 和 blocked 的本质区别在于:paused 通常是外部环境问题(可自动恢复),而 blocked 是业务或资源限制问题(需要人为介入)。

blocked 状态的 Goal 需要显式的用户操作才能恢复------系统不会自动重试。这是为了防止 Agent 在无法前进的情况下反复尝试,浪费资源。

6.4 complete(完成)

complete 是一个​瞬时状态​。当模型判断目标已达成时,Goal 进入 complete 状态,系统会:

  1. 记录完成信息(完成时间、最终结果摘要)
  2. 通知用户目标已完成
  3. 立即清除 Goal(从 active goal 中移除)

complete 状态不持久化------它只是一个过渡信号,防止已完成的目标继续占用系统资源或误导后续交互。

7. Goal 的创建与生命周期

7.1 创建 Goal

Goal 的创建有两种触发方式:

  • 用户发起:用户在对话中明确要求「把这个任务作为 Goal 执行」,系统通过特定的工具或指令创建 Goal。
  • 模型发起:在执行 Plan 或其他复杂任务的过程中,模型可能判断当前任务适合以 Goal 模式自动推进,向用户建议创建 Goal。

创建时需要进行严格验证:

  • 目标不能为空:空目标没有任何意义,直接拒绝。
  • 目标不能过长:过长的目标描述会超出上下文注入的合理范围,也会导致模型难以聚焦。
  • 不能覆盖已有 goal:如果当前已存在一个 active、paused 或 blocked 状态的 goal,默认情况下不允许创建新 goal。用户必须显式确认(如先完成或放弃当前 goal,再创建新 goal)。这是一种保护机制,防止用户无意中丢弃正在执行的任务。

7.2 替换 Goal

如果用户明确要求替换当前 Goal(例如「放弃当前任务,改为做 X」),系统会:

  1. 将当前 Goal 标记为 paused(保留进度以备将来恢复)
  2. 创建新 Goal 并设为 active
  3. 通知用户旧 Goal 已被暂停

7.3 持久化和恢复

Goal 的状态和进度信息被持久化到 session 存储中。当 session 因用户关闭客户端、网络断开等原因重启时:

  • active goal 自动降级为 paused:这是一个关键的安全设计。在 session 重启后,Agent 对之前的执行状态可能有部分信息缺失(如上下文压缩),盲目继续执行 active goal 可能导致不一致的行为。将 active 降级为 paused 要求用户在恢复前确认:是否继续执行?从哪里继续?
  • paused 和 blocked goal 保持原状态:这些状态本身就意味着需要用户干预,重启应该保持。
Typescript 复制代码
// session 重启时的 Goal 状态恢复逻辑
function restoreGoalOnSessionStart(savedGoal: Goal): Goal {
  if (savedGoal.status === 'active') {
    // 关键安全设计:active → paused
    savedGoal.status = 'paused';
    savedGoal.pauseReason = 'session_restart';
  }
  // paused 和 blocked 保持原状态
  return savedGoal;
}

8. Goal Driver 工作机制

Goal Driver 是 Goal Mode 的核心执行引擎。它的职责看似简单,但其设计直接影响 Agent 的执行效率和用户体验:​将 active goal 推进成连续的普通 turn,直到 goal 不再是 active 状态​。

8.1 Goal Driver 的执行循环

Goal Driver 的工作是一个标准的检查-执行-再检查循环:

Typescript 复制代码
// Goal Driver 的简化实现
async function goalDriverLoop(goal: Goal): Promise<void> {
  while (true) {
    // 1. 检查预算
    const budgetStatus = checkBudget(goal);
    if (budgetStatus.exhausted) {
      goal.status = 'blocked';
      goal.blockedReason = `budget_exhausted: ${budgetStatus.reason}`;
      break;
    }
    if (budgetStatus.nearLimit) {
      injectBudgetWarning(budgetStatus);
    }

    // 2. 检查 goal 状态------如果不是 active 就停止
    if (goal.status !== 'active') break;

    // 3. 执行一个 turn
    const turnResult = await executeTurn({
      goal: goal,
      continuationPrompt: buildContinuationPrompt(goal)
    });

    // 4. 分析 turn 结果,更新状态
    if (turnResult.error) {
      goal.status = 'paused';
      goal.pauseReason = turnResult.error.message;
      break;
    }

    // 5. 模型返回的状态判断
    goal.status = turnResult.goalStatus;

    // 6. 继续循环(如果仍然是 active)
  }
}

8.2 Continuation Prompt

continuation prompt 是 Goal Driver 自动追加给模型的消息,它不会替换用户指令,而是在模型的已有上下文中附加一个引导性提示。continuation prompt 的设计非常精妙,它不直接告诉模型要做什么,而是引导模型自我评估当前状态并决定下一步:

continuation prompt 的核心不是命令,而是​让我审视​------它要求模型在每个 turn 回答三个问题:目标达成了吗?遇到障碍了吗?如果没有,下一步该推进什么?

一个典型的 continuation prompt 包含以下元素:

  • 目标重述:提醒模型当前 Goal 是什么,确保模型不会在连续的 turn 中遗忘或偏离目标。
  • 进度概览:简要说明已完成的工作,帮助模型理解当前处于任务的哪个阶段。
  • 自审提示:要求模型判断目标是否已完成、是否遇到了需要暂停的阻塞。
  • 推进指引:提示模型在没有阻塞的情况下,应该继续推进一个合理的执行切片(不要试图一次完成所有,也不要做得太少)。

8.3 Driver 的停止条件

Goal Driver 在以下情况停止循环:

停止条件 结果状态 说明
模型返回 complete complete → 清除 目标已达成
模型返回 blocked blocked 模型判断无法继续
运行时错误 paused 网络/API 错误等
预算耗尽 blocked turn/token/time budget 达到上限
用户手动暂停 paused 用户主动介入

9. 预算系统

预算系统是 Goal Mode 的安全网------它确保 Agent 的自主执行不会无限期地持续下去,消耗大量资源。预算系统提供了三种维度的限制,用户可以按需组合使用。

9.1 三种预算类型

预算类型 计量单位 适用场景
Turn Budget 对话轮数 限制 Agent 的交互次数,防止无限循环
Token Budget 累计 token 消耗 控制 API 调用成本,适合对费用敏感的场景
Wall-Clock Budget 实际经过的时间 确保任务在合理时间内完成,适合有 deadline 的场景

9.2 默认行为与用户设置

默认情况下​没有任何预算限制​。预算系统完全由用户选择启用------如果你不设置预算,Agent 将一直运行直到目标完成或遇到阻塞。

这是一种「默认信任」的设计:相信大多数用户不会滥用(或能判断哪些任务需要预算约束),同时不强制设置默认值来限制绝大多数正常任务的执行。但对于长时间运行的任务,系统建议用户至少设置一项预算作为安全网。

9.3 两级阈值机制

每种预算都有两级阈值来控制 Agent 的行为:

  • **75% 阈值(警告级)**:当预算消耗达到 75% 时,系统向模型注入预算警告提示。这要求模型:
    • 检查当前进度,判断目标是否能在剩余预算内完成
    • 如果判断无法完成,开始收敛------不再启动新的工作,专注于收尾已有工作
    • 如果判断可以完成,继续正常执行但更注意效率
  • **100% 阈值(硬停止)**:预算完全耗尽时,Goal 被标记为 blocked,Driver 停止执行。这是一种硬性保护,确保资源消耗不会超出用户设定的上限。
Typescript 复制代码
// 预算检查的简化实现
function checkBudget(goal: Goal): BudgetStatus {
  const turnUsed = goal.turnsExecuted / goal.budget.maxTurns;
  const tokenUsed = goal.tokensConsumed / goal.budget.maxTokens;
  const timeUsed = Date.now() - goal.startTime.getTime();
  const timeRatio = timeUsed / goal.budget.maxDurationMs;

  // 找到消耗比例最高的那个预算维度
  const maxRatio = Math.max(turnUsed, tokenUsed, timeRatio);

  if (maxRatio >= 1.0) {
    return { exhausted: true, nearLimit: true, reason: 'budget_depleted' };
  }

  if (maxRatio >= 0.75) {
    return { exhausted: false, nearLimit: true,
      warning: `预算已消耗 ${Math.round(maxRatio * 100)}%,请收敛当前工作` };
  }

  return { exhausted: false, nearLimit: false };
}

10. 错误与故障处理

Goal Mode 的自主执行特性使得错误处理变得尤为重要------因为没有人在旁边实时监控,错误如果处理不当,可能导致 Agent 在错误状态下反复尝试,造成更大的问题。

10.1 运行时错误 → paused

运行时错误是指在 Goal 执行过程中出现的、与业务逻辑无关的技术故障。这类错误通常具有「可自动恢复」的特性,但系统选择不自动重试,而是降级为 paused------原因有两点:

  • 连续重试可能加剧问题(如 rate limit 场景下持续重试只会延长限流时间)
  • 暂停让用户有机会了解发生了什么、评估影响、决定是否继续

常见的运行时错误包括:

错误类型 处理方式
API Rate Limit (429) paused,用户等待后手动恢复
网络连接超时/断开 paused,连接恢复后用户恢复
Token 超限(非预算) paused,触发上下文压缩后恢复
模型返回非预期格式 paused,提示用户检查后恢复

10.2 业务阻塞 → blocked

业务阻塞与运行时错误不同------它不是技术故障,而是执行逻辑上的障碍,代表 Agent 在当前条件下确实无法继续推进。对于这类阻塞,简单的重试不会产生不同结果,因此系统将其标记为 blocked 而非 paused:

  • prompt hook 阻止:用户配置的 hook 拦截了某个操作,Agent 无法继续。
  • 模型判断无法继续:模型在 continuation prompt 的自我审视中判断目标在当前条件下无法达成(如缺少必要文件、权限不足、前置条件不满足)。
  • 权限拒绝:某工具调用被 PermissionManager 拒绝,且这不是可重试的操作。

10.3 恢复机制

无论是 paused 还是 blocked,Goal 的恢复都需要​显式的用户操作​。这不是为了增加用户负担,而是为了确保:

  • 用户了解 Agent 为何停止
  • 用户可以评估当前状态是否安全、合理
  • 用户有机会在恢复前调整策略或解除阻塞原因

恢复操作会将 Goal 状态从 paused/blocked 切换回 active,Goal Driver 随之重新启动。

Typescript 复制代码
// 错误处理的分类逻辑
function handleTurnError(error: TurnError, goal: Goal): void {
  if (isRuntimeError(error)) {
    // 运行时错误:降级为 paused,用户可恢复
    goal.status = 'paused';
    goal.pauseReason = error.message;
    goal.pauseType = 'runtime_error';
  } else if (isBusinessBlock(error)) {
    // 业务阻塞:标记为 blocked,需要用户介入
    goal.status = 'blocked';
    goal.blockedReason = error.message;
    goal.blockedType = 'business_block';
  }
  // 通知 Goal Driver 停止循环
}

11. Goal 的上下文注入

上下文注入是 Goal Mode 的关键实现细节------它决定了模型在每个 turn 中能感知到多少 Goal 相关的信息,从而影响模型的决策质量。Goal 的上下文注入根据 Goal 的状态不同而有差异。

11.1 Active Goal 的上下文注入

当 Goal 处于 active 状态时,系统会向模型的上下文注入「全量」Goal 信息:

  • 完整的目标描述:模型的每一个 turn 都能重新审视目标,避免在多轮执行中逐渐偏离方向。
  • 进度概览:已完成的工作摘要、当前所处的阶段、还剩余的工作量估算。
  • 自审提示:明确要求模型在执行每一步后评估「目标是否已完成」、「是否遇到阻塞」、「是否需要调整策略」。
  • 预算状态:如果用户设置了预算,当前消耗比例和剩余预算也会被注入,帮助模型做出收敛决策。

Active Goal 的上下文注入是一种​强化锚定​------在多轮自主执行中,模型容易逐渐偏离原始目标(即所谓的「上下文漂移」),而持续注入完整目标可以有效对抗这种漂移。

11.2 Paused/Blocked Goal 的轻量注入

当 Goal 处于 paused 或 blocked 状态时,注入策略切换到轻量模式。这是因为在这两种状态下,Goal Driver 不会自动推进任务,因此不需要全量注入来引导模型决策:

  • 目标提醒:简要说明有一个暂停/阻塞中的 Goal,提醒用户和模型它依然存在。
  • 状态说明:告知为什么 Goal 被暂停或阻塞(如「因 API rate limit 暂停」或「预算耗尽,标记为阻塞」)。
  • 操作指引:提示用户可以如何恢复(如「输入 continue 恢复执行」或「通过 budget 命令调整预算上限」)。

这种差异化注入策略的动机是实用主义的:在 paused/blocked 状态下注入全量 Goal 信息只会浪费上下文空间,而轻量提醒足够让用户了解状态并做出决策。

11.3 上下文注入与 Compaction 的协调

当 session 上下文接近窗口上限时,Compaction 机制会被触发以压缩历史消息。Goal 信息在 Compaction 中有特殊处理:

  • Goal 的核心信息(目标、进度摘要)被保留在压缩后的摘要中,不会被丢弃。
  • 预算信息和自审提示作为压缩后的「系统注解」继续注入。
  • 详细的历史执行记录可以被压缩,但关键阶段的输出会被保留。

总结

Plan Mode 和 Goal Mode 代表了 agent-core 在结构化自主执行方面的两种策略。Plan Mode 侧重于事前规划与人类审阅,通过 enter_plan_mode / exit_plan_mode 控制原语和结构化的计划数据,将复杂任务的执行置于用户的监督之下。Goal Mode 则走向预算约束下的自动推进,通过四状态状态机、Goal Driver 循环和三级预算系统,让 Agent 在安全网的保护下自主完成多轮任务。

两者的关系不是对立,而是互补:Plan 可以为 Goal 提供蓝图,Goal 可以为 Plan 提供高效的执行引擎。在 agent-core 的设计中,这两种模式的交互通过 TurnFlow 的 step scheduling 和 Goal Driver 的 auto-continuation 实现无缝衔接。

理解这些机制的关键在于:​它们不是为了取代用户,而是为了让用户在合适的时机进行合适的干预​------Plan Mode 让干预发生在执行之前,Goal Mode 让干预发生在预算耗尽或遇到阻塞之后。这种「适时干预」的设计,是 kimi-code Agent 在自主性和可控性之间取得平衡的核心。

相关推荐
leeyi1 小时前
Memory 三层设计:为什么 [“session“,id] 最后写成了四元组(第78篇-E64)
aigc·agent·ai编程
为你学会写情书2 小时前
Agent Skills 完全指南:从目录规范到渐进式加载的工程实践
agent
Ai拆代码的曹操2 小时前
Agent 做错了怎么办?Self-Critique 机制拆解
后端·agent·ai编程
ckjoker2 小时前
我把Java多模态链路从0跑通了,结果先被4个坑狠狠干了一顿
后端·agent
提笔了无痕3 小时前
Agent 上下文管理详解、Context设计与构建
数据库·oracle·agent·context
weixin_431600443 小时前
为什么 Agent REPL 要上 Ink:好处、用法与内部设计
前端·学习·ai·agent·ai编程
小当家.1054 小时前
工具并行调用原理与实现:CompletableFuture 实战
java·agent·线程池·工具·并行
苏灿烤鱼4 小时前
AI 论文档案库|大模型与 Agent 周报
人工智能·agent