Skip to content

feat(prompts): 为 planner 注入"先核实再假设"的外部知识纪律(从 CLAUDE-FABLE-5 学习 web_fetch when-to-use) #360

@ceilf6

Description

@ceilf6

背景 / Motivation

迭代 16(#357)已为 agent 接入 web_fetch 能力(@frontagent/mcp-web-fetch,URL→清洗文本),并在两处 planner 提示词的工具清单中登记。但目前 web_fetch 在 planner 提示中仅被机械描述("抓取 URL 网页内容…用于查阅库/框架文档"),缺少"何时该 fetch"的纪律——没有任何启发式告诉 planner:遇到不熟悉的库/框架 API、版本特定行为、或最近才出现的技术时,应当先抓取官方文档再下计划,而不是凭部分印象臆测 API。

PROGRESSIVE_EXPLORATION_PROTOCOL 只约束文件系统探索(先 glob→读→bash 确认→才写),对外部知识核实没有对应协议。state 文件在迭代 16 也已显式把"planner when-to-search 启发式注入"记为后续 issue。本 issue 即收口这一缺口。

来源(CLAUDE-FABLE-5.md)

  • ### core_search_behaviorsUNRECOGNIZED ENTITY RULE### critical_reminders:核心教训是"partial recognition is not current knowledge"——对不熟悉/版本特定的实体,先检索/抓取再作答,而非臆测。
  • 前端工程 agent 改编后的等价纪律:在使用不熟悉的库 API、假设框架当前行为、或处理版本特定特性前,优先 web_fetch 官方文档,不要凭记忆臆测;这是对刚交付的 web_fetch 能力补上的"使用纪律",与能力本身形成闭环。

现状证据(gap 已核实)

  • grep -niE 'unfamiliar|不熟悉|查阅文档|verify.*before|when to fetch' packages/core/src/llm packages/sdd/src零命中
  • web_fetchplan-generation.ts 仅出现在三处工具清单(:132 / :275 / :427),均为机械参数描述。
  • 全仓库无 EXTERNAL_KNOWLEDGE/KNOWLEDGE_PROTOCOL 常量。

提议变更(prompt-only,最小增量)

  1. packages/core/src/llm/prompts.ts 新增一个与 PROGRESSIVE_EXPLORATION_PROTOCOL 平行的常量 EXTERNAL_KNOWLEDGE_PROTOCOL:简短约束——遇到不熟悉/版本特定/最近才出现的库·框架·API 时,先用 web_fetch 查阅权威来源(官方文档/参考)再下计划或写代码;不要凭部分印象臆测 API 形状/默认行为;已熟知且稳定的知识无需 fetch(避免无谓抓取)。
  2. generatePlanInTwoPhases 的 outline system 与 generatePlanSinglePhase 的 system 两处注入该常量(紧随 PROGRESSIVE_EXPLORATION_PROTOCOL 之后)。
  3. 单元测试:断言两条 planner system prompt 均包含该协议关键句,且提及 web_fetch 与"不熟悉 API/版本"语义。

范围 / 非目标

  • 仅 prompt 纪律注入;改 executor / schemas / 工具路由 / web_fetch 行为。
  • web_search 仍明确不在范围(需第三方搜索 provider/key,单列后续)。
  • 不引入新的工具枚举或 action(web_fetch 已在 ACTION_ENUM)。

耦合度 & 落点

高耦合(与 FrontAgent planner 内部提示词深度绑定)→ 按用户既定规则直接在 FrontAgent 仓库内集成,不另开 ceilf6 仓库。

影响面(GitNexus)

  • 目标符号:prompts.ts 新增常量(纯新增)+ plan-generation.tsgeneratePlanInTwoPhases / generatePlanSinglePhase 各注入一行模板插值。
  • impact(PROGRESSIVE_EXPLORATION_PROTOCOL, upstream) = LOW,direct=0、processes=0(模板插值非 call 边)。新常量与之平行,纯增量 prompt 内容,无签名/schema/契约变更 → 预期 LOW

验收标准

  • prompts.ts 导出 EXTERNAL_KNOWLEDGE_PROTOCOL 常量,内容含"不熟悉/版本特定→先 web_fetch 权威来源再行动"且含"已熟知稳定知识无需 fetch"的反向约束。
  • 两条 planner system prompt(两阶段 outline + 单阶段)均注入该协议。
  • 新增/扩展测试断言注入与关键语义,且现有 plan 生成测试不回归。
  • pnpm typecheck、相关包测试、biome 全绿。

验证

pnpm --filter @frontagent/core test(plan-generation 相关)+ pnpm typecheck + biome check

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions