From 452dddcea3618ef3dfaa7f3a428fdc48bc190de8 Mon Sep 17 00:00:00 2001 From: weichen Date: Tue, 29 Sep 2026 16:17:03 +0000 Subject: [PATCH] Record the scope boundaries for compound instructions, slot states, and multi-turn dialog. --- ...-scope-boundaries-compound-slots-dialog.md | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 docs/records/2026-09-29-scope-boundaries-compound-slots-dialog.md diff --git a/docs/records/2026-09-29-scope-boundaries-compound-slots-dialog.md b/docs/records/2026-09-29-scope-boundaries-compound-slots-dialog.md new file mode 100644 index 0000000..2d56945 --- /dev/null +++ b/docs/records/2026-09-29-scope-boundaries-compound-slots-dialog.md @@ -0,0 +1,72 @@ +# 复合指令、槽位与多轮对话的职责边界(识别器 / 会话层 / 编排层) + +状态:待审(设计结论,未实施);owner:weichen。 +触发问题:复合串并行多意图指令、槽位模糊/缺失/错误/复杂、多轮描述与意图切换/叠加——哪些进本模块,哪些由其他层维护。 +关联:[2026-09-29-decoupling-and-llm-layering.md](2026-09-29-decoupling-and-llm-layering.md)、[2026-09-29-squad-native-integration-report.md](2026-09-29-squad-native-integration-report.md)。 + +## 总原则:三层职责 + +``` +L4 对话管理层(有状态):会话上下文、DST、多轮澄清流程、意图切换/叠加决策、超时清理 + —— 宿主会话层。Agent-System 的 session/TaskState/intentflow 是现成先例; + Squad / Native 直宿主需要时再抽独立 Dialog-Session 模块(判据见文末)。 +L3 任务编排层(有状态):拆解、串行/并行依赖、系统功能×通用智能体混合调度、执行与故障 + —— Agent-Squad(Planner/蓝图/leader 委派)本来就是这一层。 +L2 意图识别层(无状态,本模块):单句(或单段)→ 分支/意图/槽位;提供分句、挂起预期、 + L2 分类器等机制接口;同输入同快照同结果。 +``` + +经验证据:Agent-System 中 `internal/intent`(识别器)无状态逐句;多意图计划(intentflow 的 HandleTurn/DispatchEligible/RulesCanDecide 门控)与对话状态机(TaskState.UpdateFromTurn、PendingExpectation)全部位于 session/coordinator 层。**即便在意图层最重的 Agent-System 里,识别与会话管理也是分开的**——本模块沿用同一边界。 + +## 一、复合指令("先 A,然后 B,接着 C,最后 D,并且要满足 E") + +**本模块做的**:分句(`Segmenter`)→ 逐段 `Recognize` → 每段得到独立的(分支/意图/槽位/候选)。"这段是系统功能还是自由任务"正是逐段识别的直接输出:`Matched + handler` = 系统特有功能;`Fallback` = 交给通用智能体。模块可补一个组合助手(见建议 E1),本质仍是纯函数。 + +**不进本模块、归编排层的**:段间串行/并行/依赖决策、执行顺序、失败传播、系统功能段与 agent 段的混合调度。这些是任务规划的状态与责任,天然属于 Agent-Squad(Planner/蓝图/leader)。Squad 侧的未来增强形态:分段结果 → 系统功能段转 handler/蓝图步骤、自由段聚合为自主 goal,由 Planner 统一定序。这是 Squad 的演进项,不是 agent-intent 的内部功能。 + +**为什么**:串并行判断需要的是规划语义(依赖、资源、故障责任),不是识别语义;把它塞进识别器会让无状态确定性承诺破裂(识别结果依赖执行状态)。 + +## 二、槽位四态的归属 + +| 槽位状态 | 归属 | 机制 | +|---|---|---| +| 缺失 | **模块已支持** | `MissingRequiredSlots` + `ExpectationProvider`:宿主据缺失发起澄清,下一轮 expectation 命中即续上。澄清对话流程本身属宿主 | +| 表面模糊(大小写、别名、格式不一致) | **模块可确定性扩展(建议 E2)** | SlotSpec 增加归一化/约束(enum / range / format / Go 注册的 validator、normalizer),编译期确定性不变 | +| 语义模糊(指代"它"、"上次的任务"、相对时间"下周") | 宿主 LLM 层或功能方 | 需要会话上下文与模型判断(LLM 分层文档的异步重层)或系统功能自身 API 的解析;模块只负责抽出原文 span | +| 用户输入错误 | 模块做确定性校验(E2 的一部分);业务真伪的权威在系统功能方 | 校验失败与"缺失"同路处理(澄清),但带 `invalid:value` 原因,宿主可区分"没给"与"给错了" | +| 极复杂槽位(嵌套结构、多字段) | 系统功能方(handler) | 模块抽取 span/整段;结构化解析依据 handler 自己的契约(只有它知道 schema) | + +原则:**槽位的"识别与确定性校验"进模块,槽位的"语义消解与结构化"不进**——后者要么需要上下文(会话层),要么需要领域 schema(功能方)。 + +## 三、多轮描述、意图切换、意图叠加 + +**判断信号本模块已在单次识别里全部给出**: + +| 用户行为 | 识别输出信号 | 谁决策 | +|---|---|---| +| 多轮描述同一意图(逐轮补细节) | 上一轮澄清后:本轮 `ExpectationHit`;或 `Matched` 同一意图 + `MissingRequiredSlots` 持续收敛 | 宿主 DST 维护"活动意图",决定何时收敛执行 | +| 说一半切新意图 | `ExpectationProvider` 有挂起但未命中 + 本轮 `Matched` 不同意图 | 宿主决定:丢弃旧意图 / 挂起保留 / 询问用户 | +| 在原意图上叠加新要求 | `ExpectationHit` + 候选列表里出现其他过阈意图;或多段分句结果混合 | 宿主决定合并方式(并入活动意图 / 拆两个任务) | + +**不进本模块的**:活动意图状态、切换/叠加策略、多轮上下文存储、澄清超时清理——这是 DST(对话状态管理),有状态且策略随产品而异,属宿主会话层。模块刻意不持有会话状态(挂起预期都是宿主经接口注入的),这正是它能被 Squad、Native、Agent-System 等不同形态宿主共用的前提。 + +**如果未来需要独立的会话层模块**(如 Squad 直宿主做对话产品时):抽一个小仓(暂名 Dialog-Session),组合 agent-intent 为识别引擎 + 自维护 DST 与期望管理。抽仓判据沿用模块契约规范:**至少两个宿主需要同一套 DST 时才抽**,不为单一宿主预建公共仓。 + +## 结论 + +| 问题 | 本模块 | 其他层 | +|---|---|---| +| 复合串并行多指令 | 分句 + 逐段识别(机制已有,补组合助手 E1) | 串并行与混合调度 → Agent-Squad/编排层 | +| 槽位缺失 | MissingRequiredSlots + 挂起预期(已有) | 澄清对话流程 → 会话层 | +| 槽位模糊/错误 | 确定性归一与校验(建议扩展 E2) | 语义消解/复杂结构 → LLM 层 / 功能方 | +| 多轮/切换/叠加 | 单次识别给出全部判断信号(已有) | DST 与策略 → 会话层(Agent-System 先例;必要时抽 Dialog-Session) | + +### 建议的模块内扩展(待批,均保持机制化与确定性) + +- **E1** `SegmentAndRecognize`:分句 + 逐段识别的组合助手,结果带段序号与原文段,宿主免写循环。 +- **E2** SlotSpec 确定性约束与归一:`enum` / `range` / `format` 声明式约束 + Go 注册自定义 validator/normalizer;校验失败区分 `missing` 与 `invalid`。 +- **E3**(可选)Result 附带 segment 元数据,便于宿主对账与审计。 + +### 明确不做清单 + +串并行规划、系统功能×agent 混合调度(→编排层);会话状态、DST、切换/叠加策略、澄清流程(→会话层);热路径 LLM 槽位解析(→LLM 分层策略的异步层)。