MCPcopy Create free account
hub / github.com/Louisym/MiniCC / SystemPromptBuilder

Class SystemPromptBuilder

tutorials/16_prompt_building_and_compaction.py:213–373  ·  view source on GitHub ↗

系统提示词构建器 — 源码 prompt.rs:84-185 这是一个 Builder 模式。最终 build() 返回 Vec , 不是一个大字符串。每个 section 是一个独立的字符串。 为什么分成多个 section? 因为 Anthropic API 的 system 参数支持数组。 当使用 prompt caching 时,只有变化的 section 会重新计算, 不变的 section 可以命中缓存。 关键: SYSTEM_PROMPT_DYNAMIC_BOUNDARY 标记分隔了 "静态部分"

Source from the content-addressed store, hash-verified

211
212
213class SystemPromptBuilder:
214 """系统提示词构建器 — 源码 prompt.rs:84-185
215
216 这是一个 Builder 模式。最终 build() 返回 Vec<String>,
217 不是一个大字符串。每个 section 是一个独立的字符串。
218
219 为什么分成多个 section?
220 因为 Anthropic API 的 system 参数支持数组。
221 当使用 prompt caching 时,只有变化的 section 会重新计算,
222 不变的 section 可以命中缓存。
223
224 关键: SYSTEM_PROMPT_DYNAMIC_BOUNDARY 标记分隔了
225 "静态部分"(不变的通用指令)和"动态部分"(每次可能不同的上下文)。
226 """
227
228 def __init__(self):
229 self._output_style_name: Optional[str] = None
230 self._output_style_prompt: Optional[str] = None
231 self._os_name: Optional[str] = None
232 self._os_version: Optional[str] = None
233 self._project_context: Optional[ProjectContext] = None
234 self._append_sections: List[str] = []
235
236 def with_output_style(self, name: str, prompt: str) -> "SystemPromptBuilder":
237 self._output_style_name = name
238 self._output_style_prompt = prompt
239 return self
240
241 def with_os(self, os_name: str, os_version: str) -> "SystemPromptBuilder":
242 self._os_name = os_name
243 self._os_version = os_version
244 return self
245
246 def with_project_context(self, ctx: ProjectContext) -> "SystemPromptBuilder":
247 self._project_context = ctx
248 return self
249
250 def append_section(self, section: str) -> "SystemPromptBuilder":
251 self._append_sections.append(section)
252 return self
253
254 def build(self) -> List[str]:
255 """构建最终的 system prompt sections — 源码 prompt.rs:134-156
256
257 返回的 sections 列表结构:
258
259 [0] 介绍(你是什么)
260 [1] 输出风格(可选)
261 [2] 系统规则
262 [3] 任务指南
263 [4] 行动准则
264 ─── DYNAMIC BOUNDARY ─── ← 缓存边界
265 [5] 环境信息(日期、CWD、平台)
266 [6] 项目上下文(git status、git diff)
267 [7] 指令文件(CLAUDE.md 内容)
268 [8+] 追加的自定义 section
269 """
270 sections = []

Callers 2

demo_prompt_buildingFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected