背景 / 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_behaviors 的 UNRECOGNIZED 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_fetch 在 plan-generation.ts 仅出现在三处工具清单(:132 / :275 / :427),均为机械参数描述。
- 全仓库无
EXTERNAL_KNOWLEDGE/KNOWLEDGE_PROTOCOL 常量。
提议变更(prompt-only,最小增量)
- 在
packages/core/src/llm/prompts.ts 新增一个与 PROGRESSIVE_EXPLORATION_PROTOCOL 平行的常量 EXTERNAL_KNOWLEDGE_PROTOCOL:简短约束——遇到不熟悉/版本特定/最近才出现的库·框架·API 时,先用 web_fetch 查阅权威来源(官方文档/参考)再下计划或写代码;不要凭部分印象臆测 API 形状/默认行为;已熟知且稳定的知识无需 fetch(避免无谓抓取)。
- 在
generatePlanInTwoPhases 的 outline system 与 generatePlanSinglePhase 的 system 两处注入该常量(紧随 PROGRESSIVE_EXPLORATION_PROTOCOL 之后)。
- 单元测试:断言两条 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.ts 的 generatePlanInTwoPhases / generatePlanSinglePhase 各注入一行模板插值。
impact(PROGRESSIVE_EXPLORATION_PROTOCOL, upstream) = LOW,direct=0、processes=0(模板插值非 call 边)。新常量与之平行,纯增量 prompt 内容,无签名/schema/契约变更 → 预期 LOW。
验收标准
验证
pnpm --filter @frontagent/core test(plan-generation 相关)+ pnpm typecheck + biome check。
背景 / 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_behaviors的 UNRECOGNIZED ENTITY RULE 与### critical_reminders:核心教训是"partial recognition is not current knowledge"——对不熟悉/版本特定的实体,先检索/抓取再作答,而非臆测。web_fetch官方文档,不要凭记忆臆测;这是对刚交付的web_fetch能力补上的"使用纪律",与能力本身形成闭环。现状证据(gap 已核实)
grep -niE 'unfamiliar|不熟悉|查阅文档|verify.*before|when to fetch' packages/core/src/llm packages/sdd/src→ 零命中。web_fetch在plan-generation.ts仅出现在三处工具清单(:132 / :275 / :427),均为机械参数描述。EXTERNAL_KNOWLEDGE/KNOWLEDGE_PROTOCOL常量。提议变更(prompt-only,最小增量)
packages/core/src/llm/prompts.ts新增一个与PROGRESSIVE_EXPLORATION_PROTOCOL平行的常量EXTERNAL_KNOWLEDGE_PROTOCOL:简短约束——遇到不熟悉/版本特定/最近才出现的库·框架·API 时,先用web_fetch查阅权威来源(官方文档/参考)再下计划或写代码;不要凭部分印象臆测 API 形状/默认行为;已熟知且稳定的知识无需 fetch(避免无谓抓取)。generatePlanInTwoPhases的 outline system 与generatePlanSinglePhase的 system 两处注入该常量(紧随PROGRESSIVE_EXPLORATION_PROTOCOL之后)。web_fetch与"不熟悉 API/版本"语义。范围 / 非目标
web_fetch行为。web_fetch已在ACTION_ENUM)。耦合度 & 落点
高耦合(与 FrontAgent planner 内部提示词深度绑定)→ 按用户既定规则直接在 FrontAgent 仓库内集成,不另开 ceilf6 仓库。
影响面(GitNexus)
prompts.ts新增常量(纯新增)+plan-generation.ts的generatePlanInTwoPhases/generatePlanSinglePhase各注入一行模板插值。impact(PROGRESSIVE_EXPLORATION_PROTOCOL, upstream)= LOW,direct=0、processes=0(模板插值非 call 边)。新常量与之平行,纯增量 prompt 内容,无签名/schema/契约变更 → 预期 LOW。验收标准
prompts.ts导出EXTERNAL_KNOWLEDGE_PROTOCOL常量,内容含"不熟悉/版本特定→先web_fetch权威来源再行动"且含"已熟知稳定知识无需 fetch"的反向约束。pnpm typecheck、相关包测试、biome全绿。验证
pnpm --filter @frontagent/core test(plan-generation 相关)+pnpm typecheck+biome check。