Prompt版本真源在代码而不是平台

**Prompt 的版本真源是代码仓库里的 `.md` 文件(frontmatter 手写 `version` 整数 + 内容 SHA 算出的 `revision`),平台侧(Langfuse)只是只读投影:在平台网页或 Playground 改 prompt 不会改变 Agent 行为。**

生效路径

apps/*/prompts/*.md   ← frontmatter: id / task / version(手动递增)
    │  loadWorkflowPrompt() 读文件 + 解析 frontmatter
    │  revision = SHA-256(全文) 前 16 位(自动,改一个字就变)
    ▼
workflow 用文件内容作 system prompt(代码里没有任何 getPrompt() 调用)

单向同步与它带来的安全边界

  • 部署前跑同步脚本,把代码里的 prompt 推到平台:内容没变不产生新版本,变了才产生新版本;模型调用会标注用了哪个 prompt、哪个版本。
  • 因此在平台里调试 prompt 是完全安全的沙盒:看 trace、开 playground、甚至建 prompt 都不影响生产行为;真正生效的唯一方式是改文件并部署。
  • 反过来,如果产品要的是「网页改 prompt、不重新部署就立即生效」,那是另一套机制(运行时拉取 + 版本绑定),当前没有做 —— 选之前先明确谁是真源,否则会同时存在两个可写的版本源。

排查提示

「线上 prompt 行为不对」先确认生效的是哪一份:改的是文件还是平台?部署是否带上了这次改动?(见 改配置后要确认部署真的用了新配置)

相关