提示词组装与上下文投影:buildPrompt 流水线

提示词组装与上下文投影:buildPrompt 流水线 由 Archify 生成的架构图。 AgentContext · systemPrompt/instructions/参数 · 架构组件 AgentContext systemPrompt/instructions/参数 AgentMemory.items · 对话+工具输出历史 · 架构组件 AgentMemory.items 对话+工具输出历史 ToolRegistry · + ToolVisibility.filter · 架构组件 ToolRegistry + ToolVisibility.filter ContextProjector · Default / TypeAware · 投影子系统(context 包) · project ContextProjector Default / TypeAware project ContextBudget · 四档裁剪参数 · 投影子系统(context 包) · project ContextBudget 四档裁剪参数 project buildPrompt · BaseAgentRuntime · 架构组件 buildPrompt BaseAgentRuntime AgentPrompt · model/items/tools/… · 架构组件 AgentPrompt model/items/tools/… ContextReport · → MEMORY_COMPRESS 事件 · 投影子系统(context 包) · project ContextReport → MEMORY_COMPRESS 事件 project ModelRequestHook · beforeModelRequest · 架构组件 ModelRequestHook beforeModelRequest ModelClient → LLM · executeModel · 架构组件 ModelClient → LLM executeModel ① prompt+参数 ② items ③ 裁剪参数 ④ 投影后 items ⑤ visibleTools ⑥ 装配字段 ⑦ hook 改写 ⑧ 最终 prompt ⑨ Report→事件 投影子系统(context 包)

ContextBudget 四档

  • • maxItems:保留 pinnedPrefixItems 前缀 + 尾部若干,中间丢弃;maxApproxChars:按估算字符数再裁一刀
  • • maxRecentToolResults(Tier-1 微压缩):老 tool 输出变占位符,保留结构去掉体积;trimOldReasoning(Tier-2):裁历史推理

投影 ≠ 删除

  • • projector.project 只作用于本次 prompt 的 items 视图——memory 本体不动,下一轮原始历史仍在
  • • ContextReport 记录 source/projected/dropped 计数与触发的限制,经 MEMORY_COMPRESS 事件可观测

组装次序(源码序)

  • • systemPrompt = mergeText(context.systemPrompt, runtimeInstructions);instructions 独立字段进 prompt
  • • visibleTools = registry 经 AgentToolVisibility.filter——是请求投影而非授权;最后 ModelRequestHook 还能整体改写