| name | prompt-template-guide |
| description | 查看、创建、修改、删除或排查 DeterminFlow Prompt Template 与 system prompt section 时必须加载此技能;也适用于 section 顺序、workflow_only/chat_only、cache break、自定义 template_variables、系统变量渲染以及 Agent Definition 的 prompt_template 绑定。 |
| metadata | {"display_name":"prompt-template-guide","version":"1.0.0","author":"system","category":"general","priority":50,"workflow_only":false} |
Prompt Template 指南
数据边界
config/prompts_config.json 是所有 Prompt Template 的唯一配置源。顶层
agents.{template_name} 包含 description、sections、preambles,可选
template_variables。data/system_prompt.json 是 main Prompt 缓存,
data/prompt_history.json 是修改历史,二者都不是编辑源。
Agent Definition 的 prompt_template 引用模板 key。涉及 Agent 类型或工具权限时加载
agent-definition-guide;涉及 Workflow 节点变量块时同时加载 workflow-guide。
修改前检查
- 用
list_agent_types 或 GET /api/prompt-templates 列出模板。
- 用
get_system_prompt(agent_type=...) 或
GET /api/prompt-sections?prompt_type=...&include_content=true 读取完整 sections。
- 检查 Agent Definition 对模板的引用;删除或改名必须先迁移引用。
- 区分通用 section、仅聊天 section、仅 Workflow section 和类型级追加指令。
- 明确要改变内容、顺序、启用状态还是变量声明,避免整份配置重写。
Section 字段
| 字段 | 作用 |
|---|
name | 模板内唯一稳定标识;重命名使用专用 API |
content | Markdown 内容,可包含已注册占位符 |
enabled | 是否参与组装 |
order | 升序组装顺序 |
workflow_only | 只在 Workflow 上下文注入 |
chat_only | 只在非 Workflow 上下文注入 |
cache_break | 标记缓存边界 |
cache_break_reason | 解释为何此处需要缓存边界 |
不要同时把 workflow_only 与 chat_only 设为 true。缓存边界会影响成本和命中率,只有
内容确实随会话或运行频繁变化时才启用。
占位符规则
Section 中的 {{name}} 不会自动读取任意 Workflow 变量。可渲染的值来自两类:
- Core 注册的系统变量,如
session_meta、workflow_overview、skills_section;
- 当前模板在
template_variables 中声明的自定义变量块。
Workflow Agent 节点通过 node_params.template_values 给自定义变量块赋值;变量块的值
本身可再引用 Workflow 变量。未注册占位符会保留为字面量,不能把未替换文本当成成功。
自定义变量声明保持最小:稳定 key、清晰展示名、用途说明和必要默认值。删除变量前搜索
全部 section 内容与 Workflow 节点 template_values。
操作面
工具适合读取和精确更新已有 section:
get_system_prompt(agent_type=...)
update_system_prompt(section_name=..., new_content=..., reason=..., agent_type=...)
list_agent_types
完整管理使用 Web 或 API:
| 操作 | API |
|---|
| 列出 sections | GET /api/prompt-sections?prompt_type={type} |
| 读取配置与变量 | GET /api/prompt-sections/config?prompt_type={type} |
| 更新单个/批量 | PUT /api/prompt-sections/{name}、PUT /api/prompt-sections |
| 新增/删除 | POST /api/prompt-sections、DELETE /api/prompt-sections/{name} |
| 重命名 | POST /api/prompt-sections/{name}/rename |
| 更新变量声明 | PUT /api/prompt-sections/template-variables |
| 重载 | POST /api/prompt-sections/reload |
所有 sections API 都要传正确的 prompt_type。使用更新工具时提供 reason,让 main 模板
修改进入历史。直接编辑配置仅用于项目级版本变更;编辑后必须 reload。
设计原则
- 一个 section 只承担一个稳定职责,名称描述目的,不描述临时内容。
- 通用行为放模板,某个 Agent 类型的短差异放 Agent Definition
system_prompt_template,单次任务上下文放任务消息。
- 通过结构和工具描述传递已知信息,避免在多个 section 重复同一规则。
order 留出间隔不是必要设计;排序只依赖数值。
- 修改时优先 patch 单个 section,避免覆盖其他并发配置变更。
验收清单
- JSON 可解析,模板 key 唯一,section name 在模板内唯一。
- Agent Definition 的每个
prompt_template 都存在。
- reload 成功,读取 API 返回更新后内容与顺序。
- 分别在 Chat 与 Workflow 上下文验证
workflow_only/chat_only 过滤。
- 自定义变量被实际渲染,未知占位符没有意外残留。
- main 模板修改后新建或刷新会话;不要只检查缓存文件。
常见错误
- 把模板名与 Agent 类型强制同名:它们可以不同,但引用必须存在。
- 编辑
data/system_prompt.json:下次重建会覆盖。
- 在 section 中直接写
{{workflow_input}} 却未声明自定义变量块。
- 删除 section 后仍有工具或治理指令引用其语义。
- 为静态内容设置
cache_break,无收益地降低缓存效率。