# Prompts Module Rules

## 适用范围

适用于 `src/host/prompts/`。本文件定义提示词组装模块特有的治理边界与修改规则；**提示词文案、语言政策与文案写作规范以同目录 `README.md` 为准，本文件不重复**，通用规范遵循根 `AGENTS.md`。

本文件描述稳定治理原则，不是当前源码结构说明。除非模块边界或输出契约变化，否则不因文件移动、重命名或内部重构而修改。

## 核心职责

作为全插件提示词组装的**唯一基线**：把编排事实（图、节点、连线、运行态、组织预算）与稳定模板结构组装成注入给模型的文本——父代理指令、子代理任务块、协作清单、规划提示词、运行期通知。

判断归属：该修改是否改变「注入给模型的文本如何由事实组装」？若是纯粹的 Agent 语义判断、工具 Schema / 可见性、或运行态事实（状态、锁、生命周期），应放到对应模块。

## 非职责

- 不做模型语义判断与运行态决策（属 agent / orchestrator）；
- 不注册工具、不定义工具 Schema 与工具 description（属 tools）；
- 不读运行时状态、存储、设置、文件或时钟——构建器只接收调用方传入的事实与动态值；
- 不依赖 orchestrator / agent / tools / storage / api / service / scheduler：本模块处于依赖链末端。

## 公共边界

- 模块外只能从模块**公共入口**导入；内部文件之间使用相对路径，不得反向导入公共入口（避免 barrel 循环）。
- 公共入口只公开外部真实消费的契约：构建器、段落锚点、约束常量、入参类型。仅供模块内部使用的措辞与渲染 helper 不得进入公共入口，也不得为「看起来完整」扩大导出面。
- 新增对外可见的构建器或契约常量，必须在同一变更中进入公共入口。

## 输出契约

- **提示词文本即模型输入契约**：改动模板正文或段落顺序属于行为变化，必须记录「旧行为 → 新行为 → 原因 → 影响范围 → 测试变化」。
- 段落稳定与关键约束双位的口径见 `README.md`；因此结构治理必须能证明「输出逐字节不变」后才能提交，纯重构不得夹带文案变化。
- 共享措辞、共享段落锚点、共享约束句必须有单一来源；禁止在某个构建器内复制另一个构建器的模板正文或约束句。
- 不同画布形态 / 阶段的变体共享同一段落结构，差异只允许是身份措辞与已声明的差异条目，禁止为个别变体复制整份模板。

## 组装与依赖

- 构建器是纯计算：入参即全部输入，同入参必同输出；图推导、节点上下文、预算口径等事实由调用方或本模块的纯计算提供，构建器不自行读图、读盘、读设置。
- 动态值只允许出现在末段；不得把不稳定内容（时间、id、随机值）注入稳定前缀。

## 测试归属

- 单模块测试归属本模块对应的测试位置；跨模块真实协作（编排器 + 提示词 + 运行态）的断言归 `tests/integration/`。
- 断言只引用导出的约束常量与段落锚点，不硬编码提示词正文文案：文案修订不应破坏基线测试。
- 文案或结构变更必须同步更新基线测试；禁止通过放宽断言掩盖输出变化。

## 修改前确认

1. 这是模板结构 / 组装逻辑，还是文案润色？
2. 是否改变注入给模型的实际文本（行为变化）？
3. 是否同步了公共入口、调用方、测试与 `README.md`？
4. 是否引入了对外部运行时模块的依赖（本模块必须保持末端）？

## 核心原则

1. 提示词基线单一来源；文案规范以 `README.md` 为准。
2. 公共边界显式：模块外只走公共入口，入口只公开真实契约。
3. 输出即契约：结构可重构，但字节必须可证不变。
4. 纯函数：无时钟、无随机、无 IO、无隐式全局状态。
5. 共享措辞与锚点单一源，变体之间不复制模板。
6. 处于依赖链末端，不反向依赖运行时模块。
