Documentation
¶
Overview ¶
Package sysprompt system prompt 分段组装:Section 化收集 → stable/dynamic 边界分块 → 计量。对标 ZCode context/builder.ts。
为什么分段:provider 的前缀缓存按「消息前缀相同」命中——身份/行为约束等 **stable** 段放前且内容不变,缓存持续命中;环境信息/git 快照/日期等 **dynamic** 段隔离在后,变化时不击穿前面的缓存。字符串拼接式组装没有 边界概念,每次注入都全量失效。
边界约定:块内内容组装后即冻结(Build 产物只读);dynamic 段内容每次会话 重建时可以变,stable 段必须字节级不变(含空行)——调用方纪律,本包保证 排序与计量确定性。
用法:
b := &sysprompt.Builder{}
b.Add(sysprompt.IdentitySection("你是审查助手…")) // stable
b.Add(sysprompt.EnvSection(env)) // dynamic
b.Add(sysprompt.DateSection(time.Now())) // user_context
res := b.Build()
// res.System[0] = stable 块(缓存断点),res.System[1] = dynamic 块
// res.UserContext = 用户消息前缀的附加上下文(含「未必相关」免责句)
Index ¶
Constants ¶
const DefaultUserContextDisclaimer = "重要:这些上下文未必与当前任务相关,除非高度相关,否则不要针对它们作答。"
DefaultUserContextDisclaimer 附加上下文的免责句(对齐 ZCode:明示材料未必 相关,防止模型对参考材料过度反应)。
const DefaultUserContextIntro = "回答用户问题时可参考以下上下文:"
DefaultUserContextIntro 附加上下文的引导句缺省。
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Builder ¶
type Builder struct {
// UserContextIntro / UserContextDisclaimer 附加上下文引导/免责句覆写
// (空 = 缺省常量)。
UserContextIntro string
UserContextDisclaimer string
// contains filtered or unexported fields
}
Builder 分段收集器。零值可用。
type EnvInfo ¶
type EnvInfo struct {
Cwd string
IsGitRepo bool
Platform string // runtime.GOOS
Shell string // $SHELL
OSVersion string // 采集可得则填(uname),缺省留空
ModelID string // "provider/model" 展示(可空)
}
EnvInfo 运行环境快照。
type GitInfo ¶
type GitInfo struct {
Branch string
MainBranch string // PR 通常基准的分支(可空)
User string
StatusLines []string // git status --porcelain -b 输出(空+非 unknown = clean)
StatusUnknown bool
RecentCommits []string
}
GitInfo git 仓快照。
type Result ¶
type Result struct {
// Sections 排序后的全量段(system-stable → system-dynamic →
// user_context-stable → user_context-dynamic;组内保持插入序——确定性)。
Sections []Section
// System system 块序列:stable 块在前、dynamic 块在后(空块跳过)。
System []Block
// UserContext 用户消息前缀附加文本(无 user_context 段时为空串)。
UserContext string
// TotalChars / TotalTokens 全段计量。
TotalChars int
TotalTokens int
}
Result 组装产物。
type Section ¶
type Section struct {
Name string
Target Target
Boundary Boundary
Content string
Chars int
Tokens int
}
Section 一段提示词内容(自计量:Chars/Tokens 组装即算,供预算观测)。
func DateSection ¶
DateSection 当前日期段(user_context——日期是参考信息,不进 system)。
func GitSection ¶
GitSection git 快照段(dynamic)。必须带「会话开始时的快照」免责——模型对 过期状态自信是真实事故面(对标 ZCode 同款措辞)。
func IdentitySection ¶
IdentitySection 身份/行为约束段(stable——本包唯一约定为 stable 的内置段, 其余内置段全 dynamic;调用方自定义段自行声明)。