Chapter 09

System Prompt:提示词、变量与工具 schema 如何组装

目标不是背 API,而是建立能从顶层设计一路推导到源码细节的心智模型。读完本章,你应该能解释“为什么这样设计”,而不仅是“代码在哪里”。

1. Prompt 不是一大段字符串

DSH 把 system prompt 看成一组有序 section + variables + tool schemas 的组装结果。插件只贡献自己拥有的那一段知识,最终由 ctx.systemPrompt 在每个 step 组装。

2. 为什么 section 化

如果所有工具都修改一个中央 prompt.ts,你会得到强耦合。section registry 让 bash 插件只维护 bash 的长期指导,persona 插件维护 persona,agent loop 提供 model/cwd 变量。

3. Tool schema 为什么和 prompt 同属 assembly

从模型体验看,“你是谁”和“你能做什么”共同构成一次请求的能力边界。即使 wire protocol 把 tool schema 放在独立字段,架构上仍应在同一组装点确定。

4. scoped shadow

全局 persona 可以被某 agent 的 scoped persona 遮蔽;同理工具集合也可以按 agent 过滤。于是“同进程多种 agent 配置”不需要复制整套 runtime。

5. Prefix/KV cache 意识

系统提示词、工具 schema 的字节稳定性影响 provider 的前缀缓存。DSH 对工具排序和 section 顺序强调确定性,本质上是在做运行时性能工程,而不只是代码洁癖。

源码定位:System Prompt · packages/core/system-prompt/README.zh.md
打开官方源码/文档