Complete the selective V2 checkpoint with its minimal AgentBus, object-storage, replay persistence, and validated-workbench shared dependency closure.
119 lines
7.0 KiB
Markdown
119 lines
7.0 KiB
Markdown
# M012 / QBD+LianTai 共享 Parsing Agent v1.0 契约
|
||
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| 状态 | **IMPLEMENTED OFFLINE — v1.0 pre-release correction applied; runtime pending** |
|
||
| 契约 | `fixed-channel-parsing-agent-v1` |
|
||
| Agent 版本 | `fixed-channel-core-parsing-agent-v1.0` |
|
||
| 渠道 | QBD、LianTai |
|
||
| Profile | `QBD_CORE_V1_0`、`LIANTAI_CORE_V1_0` |
|
||
| 发布 | `HOLD` / `INTERNAL_ONLY` |
|
||
| Main Prompt | 独立中文 v1.0,不进入 Skill 读取链或 `.skill` |
|
||
| 运行时 | 未接 Provider、AgentBus、Merger、Booking Agent、PMS 或 Opera |
|
||
|
||
## 1. 分层职责
|
||
|
||
```text
|
||
Current/History + fixed-channel-parser-fact-material-v1
|
||
→ shared Parsing Agent v1.0(中立来源结构)
|
||
→ local Merger/Validator(STRUCTURED_MENTION 有效视图)
|
||
→ Layer 5 Booking Agent(业务类型、Trace、linked action、部门候选)
|
||
→ Layer 6 Validator / 员工确认
|
||
```
|
||
|
||
Parsing Agent只负责来源内容的结构化提取。Parser facts是只读输入;Agent不得删除、覆盖或伪装成
|
||
Parser事实。Parsing Agent不判断最终业务类型、是否形成Trace、linked action或负责部门。
|
||
|
||
## 2. 输入与调用前门禁
|
||
|
||
- 完整Current subject/body和系统预生成的稳定evidence registry;
|
||
- 完整、严格有序且不含附件信息的History body;
|
||
- 当前附件全部Parser Results,遵循`fixed-channel-parser-fact-material-v1`;
|
||
- 系统显式授权的Current-only fallback;Parser `FAILED`时不得携带partial facts/materials;
|
||
- `channel_code`、`profile_code`及全部版本字段作为已验证审计元数据。
|
||
|
||
QBD/LianTai渠道/Profile精确配对、版本栅栏、未知字段和引用闭合由JSON Schema及本地调用前校验器负责。
|
||
Main Prompt只要求使用系统选定Profile,不重复白名单判断,也不得从正文改判渠道。
|
||
|
||
Evidence ID由source message、revision、区段、Unicode code-point span、文本Hash和evidence schema version
|
||
稳定生成。Agent只能引用输入已有ID。
|
||
|
||
## 3. 输出顶层结构
|
||
|
||
结果是严格JSON,必需数组为:
|
||
|
||
- `agent_targets[]`:正文-only目标候选;
|
||
- `candidate_facts[]`:仅冻结十类公共fact role的附加候选;
|
||
- `target_bindings[]`:正文目标到唯一Parser target的关联;
|
||
- `relationships[]`:例如Allotment source-to-actual;
|
||
- `structured_mentions[]`:中立的来源服务结构;
|
||
- `display_information[]`:员工需要知晓的原文、范围和顺序;
|
||
- `material_dispositions[]`:每个Parser/fallback material恰好一次处置;
|
||
- `review_requests[]`:冲突、目标不唯一、必要参数不清或fallback不足。
|
||
|
||
Agent不输出`effective_facts[]`或`review_items[]`。
|
||
|
||
## 4. `structured_mentions[]`
|
||
|
||
每项固定包含:
|
||
|
||
| 字段 | 规则 |
|
||
|---|---|
|
||
| `mention_id` | 本次结果内唯一ID |
|
||
| `scope` | `MESSAGE`或`TARGET` |
|
||
| `target_ref` | 消息级必须为空;目标级必须引用已知目标 |
|
||
| `semantic_type` | `EXTRA_BED / HONEYMOON_SETUP / ROOM_SETUP / NAME_SIGN / MEETING_ROOM / OTHER_SERVICE` |
|
||
| `source_text` | 来源原文,不改写 |
|
||
| `source_room_ref` | 可为空;有值时必须引用已知来源房型项 |
|
||
| `quantity` | 可为空;有值时为正整数 |
|
||
| `source_label`、`sequence` | 准确来源类型和顺序 |
|
||
| `evidence_refs[]` | 只引用已登记Current evidence |
|
||
| `material_refs[]` | 来自Parser/fallback material时必须同时引用material ID |
|
||
|
||
Parsing Agent可以提取“加床、数量2、关联某来源房型”等已知结构,但不得称其为Trace或分配部门。
|
||
必要参数不完整时保留已知结构并生成`review_request`,不得猜数量、房型或目标。
|
||
|
||
## 5. 业务与证据规则
|
||
|
||
- 绑定具体Tour Code的附件Parser action优先于邮件级subject/body action;同Tour Code冲突时保留Parser fact并review。
|
||
- Current明确New/Update/Cancel可形成`SOURCE_ACTION_KIND`来源候选,但不是最终`action_kind`或业务事件。
|
||
- History只能辅助,不能单独产生本次fact、structured mention、display或relationship。
|
||
- FINAL、LINE、办公室付款、已确认和普通非动作信息原文进入`display_information[]`,不继续拆参数或动作。
|
||
- 唯一目标才可目标级绑定/展示;无Tour Code保持消息级;点名但不能唯一关联则review。
|
||
- 每个material只能是`CONSUMED`、`PARTIALLY_CONSUMED_REVIEW`、`REVIEW_REQUIRED`或`REDUNDANT_WITH_PARSER_FACTS`。
|
||
- 缺价格不猜价格,不输出GRPA1。
|
||
|
||
## 6. 禁止的Parsing Agent输出
|
||
|
||
结果在任何层级都不得出现`business_type`、最终`action_kind`、Trace字段、部门字段、linked action、
|
||
CandidateDecision或TaskCard;也不得输出FIT/GROUP、canonical Room/Rate、库存/预订状态或外部副作用指令。
|
||
|
||
未来Merger只能把合法mention以中立`STRUCTURED_MENTION`带入有效视图,不得在Layer 3转换为Trace或部门。
|
||
Layer 5 Booking Agent决定是否形成`TRACE_RESERVATION_NOTES`并提出部门候选;证据不明确时部门留空,
|
||
由Validator阻断并交员工确认。
|
||
|
||
## 7. Skill交付边界
|
||
|
||
- `.skill`固定包含15个标准Skill成员;包格式只使用`.skill`,不创建`.skll`。
|
||
- `prompts/main-prompt.md`是独立中文资产,不属于Skill读取链、archive或成员Hash。
|
||
- Main Prompt明确要求完整解析Current主题/正文,并按顺序完整阅读系统提供的全部History正文;Agent不得自行
|
||
筛选、截断或判断某封History是否可用,但History仍只能辅助理解Current。表格侧逐项读取只读`facts[]`与
|
||
必须处置的`agent_materials[]`,不接收整份工作簿无界文本。
|
||
- Main Prompt SHA-256:`8ad0a914c1596563122d94efff084419204524c6fa48acc721704d6b3786b5f6`。
|
||
- 当前确定性`.skill` SHA-256:`94bb65b6a7af75b1c6e5edf5496d3c66e12058362a735c2402136628e91ba22d`。
|
||
- 本次包Hash变化仅来自Skill中邮件/表格完整读取说明及其防回退校验;三份Schema、fixtures业务结果、独立
|
||
Main Prompt、Agent/Parser版本和15成员集合均未改变。
|
||
- 包和sidecar保持`HOLD`/`INTERNAL_ONLY`;不代表真实Profile发布或运行时接线。
|
||
- 本次发布前纠错原地替换旧Trace/部门输出契约,不创建v1.1或双写兼容。
|
||
- 2026-08-12 runtime integration preflight确认Parser业务/Java契约允许message-level material的
|
||
`target_ref=null`,而包内Parser dependency schema误写为只允许对象。因v1.0从未发布且持续HOLD,按同一
|
||
pre-release correction原则原地修正为“字段必有、值可空”;Parser fact target仍必须为对象,Main Prompt不变。
|
||
- 2026-08-12 CP1双侧request preflight进一步发现canonical evidence的QBD 3段、LianTai 4段Unicode span
|
||
与完整原文错位或越界;已只纠正synthetic fixture坐标,并让Python/Java都强制source identity、span不越界、
|
||
exact source slice。Agent expected result、Main Prompt、业务规则、15成员和`HOLD/INTERNAL_ONLY`均不变。
|
||
|
||
## 8. 固定非范围
|
||
|
||
不修改任何Server Java、Parser/Core/Profile/DTO、Merger运行时、Provider、AgentBus、数据库、前端或真实
|
||
Booking Agent Profile;不调用PMS、Opera或任何外部业务系统。
|