3.2 KiB
3.2 KiB
| title | created | updated | type | tags | sources | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Prompt Builder 分层注入系统 | 2026-04-16 | 2026-04-19 | concept |
|
|
Prompt Builder 分层注入系统
定义
8 层分层系统,将 Agent 的系统提示词从多个来源统一组装。它本身是纯函数层,但现在通常接收来自 tool-governance 的最终 toolNames 与 toolPromptHints,不再单独决定运行时工具可见性。
8 层结构
Layer 1: Agent 身份(agentSystemPrompt)
Layer 2: 工具使用纪律(基于 availableToolNames 动态生成)
Layer 3: 模型特定指导(GPT/DeepSeek/MiniMax/豆包/通义千问/GLM)
Layer 4: 工具行为策略(基于工具列表 + Prompt Hint)
Layer 5: Skill 索引(如果有 Skill)
Layer 6: 记忆系统(如果启用记忆)
Layer 7: Crew 编排上下文(如果是 Crew 模式)
Layer 8: 元信息(时间戳、模型ID)
核心文件
| 文件 | 职责 |
|---|---|
runtime/prompt_builder.ts |
buildSystemPrompt() 主函数,8层组装 |
runtime/prompt_guidance.ts |
指导文本常量集中管理 |
controller/agent.ts |
预览接口,展示最终 layers/toolNames/disabledReasons |
关键 API
interface BuildSystemPromptParams {
agentSystemPrompt: string;
modelId: string;
availableToolNames: string[];
skills: string[];
skillLoader: SkillLoaderService;
memoryEnabled: boolean;
memoryContext?: string;
crewContext?: string;
toolPromptHints?: Record<string, string>;
}
buildSystemPrompt(params): { prompt: string, layers: PromptLayer[] }
关键变化
旧模式
Prompt Builder 可直接通过 collectAvailableToolNames() 结合 toolset 推导工具列表。
当前主路径
当前真正用于运行时和预览的主链路是:
Agent 配置 + 全局 Tool 配置 + 模型能力 + 上下文角色
→ tool_resolver.resolve()
→ 输出 toolNames / toolPromptHints / disabledReasons
→ buildSystemPrompt()
因此 Prompt Builder 更像“最终提示词组装器”,而不是“工具决策器”。
模型特定指导
getModelGuidance(modelId) 会为不同模型生成约束性指导,用于减少工具调用和 schema 输出偏差。
Prompt Hint
Layer 4 现在支持从 tool-governance 注入 toolPromptHints,用于覆写单个工具的行为指令。这个能力使运营侧可以不改工具代码就微调模型使用方式。
预览接口
Agent 编辑页通过:
POST /admin/netaclaw/agent/previewPrompt
直接返回:
layerstoolNamesdisabledReasons
这让前端可以同时看到最终提示词和为什么某些工具没生效。
关联页面
- tool-catalog — schema 注册来源
- tool-governance — 最终工具列表与 Prompt Hint 来源
- agent-runtime — 调用 buildSystemPrompt 的执行引擎
- llm-providers — 模型特定指导的适配对象
- skill-system — Layer 5 Skill 索引来源
- memory-system — Layer 6 记忆上下文来源
- crew-orchestration — Layer 7 Crew 编排上下文来源