Преглед изворни кода

文档:明确智能体建设顺序与卡片定位

WangKang пре 1 недеља
родитељ
комит
585d3d10fc

+ 4 - 0
docs/adr/ADR-202606-001-semantic-response-command-runtime.md

@@ -94,6 +94,10 @@ Card Runtime 使用 `nextCard` 形成流程。该方案验证了演示闭环,
 7. `emoon-ai-card` 在实施阶段重命名为 `emoon-ai-command`。
 8. v2 API 删除 `nextCard` 和通用 `card_created` 语义。
 9. 不提供生产运行期新旧协议双轨;开发按能力验证、查询链、命令链分阶段完成,最后单次切换。
+10. 本决策作为后续智能体的前置架构基线;在新架构验收完成前,不按旧链式 Card 模式扩展
+    生产业务智能体。
+11. 后续智能体先定义目标、TaskState、只读工具和 Command,再按终端需要增加可选 Card;
+    Card 不得成为流程节点、状态事实、模型强制输出协议或唯一交互通道。
 
 ## 后果
 

+ 21 - 3
docs/initiatives/FEAT-202606-006-agent-semantic-interaction/meeting-notes/设计交叉评审记录.md

@@ -61,19 +61,21 @@ FastGPT 联调负责人正式评审的条件,但尚未获得这些角色的批
 6. MVP 不建设动态展示模板表或 DSL,领域 ViewModel 随代码版本管理;
 7. 实施采用阶段零到阶段三门禁,最终单次切换,不维护生产双轨;
 8. 当前强制工程规约与历史 Card/Dify 基线已经物理分离。
+9. 本专题是批量业务智能体建设的前置能力,完成前不扩展旧链式 Card 模式;
+10. 后续智能体先设计目标、TaskState、工具和 Command,最后按需增加可选 Card。
 
 ## 文档评审检查
 
 | 文档 | 检查重点 | 结论 |
 |---|---|---|
-| `PRD-202606-002` | 目标、非目标、范围、15 条验收标准 | 通过交叉评审 |
+| `PRD-202606-002` | 目标、非目标、范围、18 条验收标准 | 原 15 条通过交叉评审;新增 3 条待正式确认 |
 | `ODS-202606-002` | 模块边界、主链路、外部依赖、风险 | 通过交叉评审 |
 | `DDS-202606-004` | 数据、状态机、ToolCatalog、异常、安全、测试 | 通过交叉评审 |
 | `ADR-202606-001` | 备选方案、决策、正负后果、迁移原则 | 通过交叉评审 |
 | `API-202606-004` | 路径、鉴权、SSE、错误码、幂等 | 通过交叉评审 |
 | OpenAPI v2 | 5 个路径、最小 SemanticResponse、Schema/$ref | 通过自动校验 |
 | `DES-202606-003` | 分阶段门禁、单次切换、整体回退 | 通过交叉评审 |
-| `TST-202606-001` | 33 个用例、回归、安全和阶段零门禁 | 通过交叉评审 |
+| `TST-202606-001` | 35 个用例、回归、安全和阶段零门禁 | 原 33 个通过交叉评审;新增 2 个待正式确认 |
 | `STD-202605-001/002` | 当前规则纯 v3、历史基线隔离 | 通过交叉评审 |
 
 ## Claude 反馈处理
@@ -97,7 +99,7 @@ FastGPT 联调负责人正式评审的条件,但尚未获得这些角色的批
 | 数据模型、状态机和异常策略 | 后端负责人 | 批准 `DDS-202606-004` | open |
 | SSE、interaction 和命令确认 | 终端负责人 | 批准 `API-202606-004` | open |
 | ToolCatalog 实际下发方式 | FastGPT 联调负责人 | 确认阶段零验证方案 | open |
-| 33 个用例和回归范围 | 开发/测试负责人 | 批准 `TST-202606-001` | open |
+| 35 个用例和回归范围 | 开发/测试负责人 | 批准 `TST-202606-001` | open |
 
 ## 非阻塞实施前提
 
@@ -105,6 +107,22 @@ FastGPT 联调负责人正式评审的条件,但尚未获得这些角色的批
 - 性能阈值需在实际测试环境建立基线后填写;当前只固定“不阻塞文本”的原则。
 - 现有 Card/Dify 代码仍是仓库事实;在最终切换前不得继续扩展,但不在本轮修改。
 
+## 平台与智能体建设顺序结论
+
+经补充评审,确认本专题不是普通挂号功能优化,而是后续智能体共同依赖的平台协议迁移。
+如果先建设大量智能体,旧 Card 协议会进入每个 Agent 工作流、后端编排、终端交互和测试,
+后续迁移成本随智能体数量增长。
+
+因此,实施顺序固定为:
+
+1. 完成本专题中台公共能力;
+2. 使用挂号 Agent 完成无 Card 依赖的纵向验收;
+3. 达到迁移方案定义的批量智能体建设准入门槛;
+4. 再启动后续智能体规模化设计与开发。
+
+Card 在后续智能体中仅作为可选 Presentation:可以提升候选对比、快捷选择和确认摘要的可读性,
+不得定义流程、保存任务事实、控制状态迁移、承载可信写参数或成为唯一交互通道。
+
 ## 下一步
 
 1. 由上述负责人逐项确认并在本文待办表留痕;

+ 14 - 0
docs/initiatives/FEAT-202606-006-agent-semantic-interaction/专题索引.md

@@ -20,6 +20,20 @@ tags:
 将 AI 中台从“卡片串联 Agent 流程”调整为“任务状态、可信工具结果和受控命令驱动”,
 保留卡片的可读性与交互效率,同时解除卡片 JSON 对模型推理、查询和异常处理的约束。
 
+## 优先级结论
+
+本专题是后续批量建设智能体的中台前置能力,优先级高于新增业务智能体。现有
+`cardKey/cardData/nextCard` 同时承担输出协议、流程推进和状态判断;如果先按该模式扩展智能体,
+后续必须逐个迁移 Agent 工作流、后端编排、终端交互和测试,且新智能体的异常处理与工具规划仍会
+被 Card Schema 限制。
+
+因此,在本专题完成验收前:
+
+1. 不按旧链式卡片模式新增或扩展业务智能体;
+2. 挂号 Agent 仅作为查询、命令和可选展示的纵向验收样板;
+3. 纯知识问答可以进行探索验证,但不得依赖旧卡片协议形成新的生产基线;
+4. 达到 [迁移方案](迁移方案.md) 的“批量智能体建设准入门槛”后,再启动规模化智能体建设。
+
 ## 文档索引
 
 | 类型 | Doc ID | 文档 | 状态 |

+ 29 - 0
docs/initiatives/FEAT-202606-006-agent-semantic-interaction/概要设计.md

@@ -64,6 +64,35 @@ flowchart TD
 4. 写操作只由医梦后端创建并执行。
 5. 文本、展示和命令事件相互解耦但共享同一业务事实。
 
+## 后续智能体统一设计方法
+
+本设计是后续业务智能体的公共运行时基线。新智能体必须从业务目标和状态开始设计,不从页面或
+Card 开始设计:
+
+```text
+业务目标与完成条件
+→ TaskState 与约束
+→ 只读 ToolCatalog/MCP
+→ 有副作用的 Command 与风险策略
+→ 完整文本/语音交互
+→ 可选 Presentation/Card
+```
+
+只读型智能体无需定义业务 Command;包含锁号、挂号、缴费、取消等动作的事务型智能体必须进入
+Command Runtime。两类智能体都不得创建独立的卡片工作流。
+
+Card 是 Presentation 的一种终端表现,不是中台领域对象或 Agent 编排原语:
+
+| Card 可以承担 | Card 不得承担 |
+|---|---|
+| 候选结果对比与信息分组 | 定义 Agent 步骤和先后顺序 |
+| 快捷选择入口 | 作为 TaskState 或完成条件 |
+| Command 确认摘要的可视化 | 生成或携带可信 Command 参数 |
+| 执行结果和状态展示 | 成为文本/语音之外的唯一业务通道 |
+
+领域 ViewModel 只能投影 ResultSnapshot 或 Command 摘要。Card 点击必须转换为标准 interaction
+或 Command 确认请求,再进入与自然语言相同的后端校验链路。
+
 ## 模块边界
 
 | 模块 | 职责 | 不负责 |

+ 2 - 0
docs/initiatives/FEAT-202606-006-agent-semantic-interaction/测试计划.md

@@ -112,6 +112,8 @@ tags:
 | TST-031 | ToolCatalog 过滤 | 注册读写混合工具 | FastGPT 只看到授权只读工具 | planned |
 | TST-032 | 查询参数无效 | FastGPT 提交非法日期/字段 | 最多修复一次,否则自然语言澄清 | planned |
 | TST-033 | 阶段零门禁 | 模拟工具正常/空结果/参数错误/超时 | 能力验证有明确通过或停止结论 | planned |
+| TST-034 | 无 Card 端到端 | 关闭 Presentation,完成查询、选择、锁号和挂号 | 文本/语音与 Command 可独立完成全链路 | planned |
+| TST-035 | Card 控制信号清理 | 检索运行代码并执行任务状态测试 | cardKey/cardData/nextCard/Card 类型不参与完成判断和状态迁移 | planned |
 
 ## 性能基线
 

+ 17 - 0
docs/initiatives/FEAT-202606-006-agent-semantic-interaction/迁移方案.md

@@ -145,3 +145,20 @@ tags:
 - v2 契约和测试全部通过;
 - 旧链式语义在有效工程约束中清零;
 - 测试结果文档记录真实执行证据后才能标记迁移完成。
+
+## 批量智能体建设准入门槛
+
+本专题完成前,不以旧 Card Runtime 为基础继续建设生产业务智能体。只有同时满足以下条件,
+后续智能体才能进入规模化开发:
+
+1. FastGPT 能稳定消费经过租户、项目、Agent 和场景过滤的只读 ToolCatalog;
+2. Agent 不需要生成 `cardKey/cardData` 即可完成查询、解释和替代推荐;
+3. TaskState 的完成条件和状态迁移不依赖 Card 类型、`nextCard` 或渲染结果;
+4. 所有写操作均通过 Command Runtime 完成风险控制、确认、幂等和审计;
+5. 关闭或破坏 Presentation 后,挂号纵向样板仍能通过文本/语音完成端到端业务;
+6. 自然语言选择和 Card 点击统一进入 interaction/Command 校验链路;
+7. v2 接口、架构测试、终端回归及 `TST-202606-001` 全部通过并形成测试结果文档;
+8. 新智能体设计模板能够独立描述 TaskState、只读工具、Command 和可选 Presentation。
+
+达到门槛后,后续智能体按“只读查询型 → 事务型”的顺序分批建设,但统一遵守同一中台协议;
+不得为单个智能体恢复模型直出 Card JSON 或链式 Card 编排。

+ 35 - 1
docs/initiatives/FEAT-202606-006-agent-semantic-interaction/需求文档.md

@@ -47,9 +47,19 @@ tags:
 5. 所有终端基于统一语义响应适配不同表现形式。
 6. 以挂号 Agent 验证完整链路,并形成可复用的中台协议。
 
+## 实施优先级
+
+本专题属于平台级协议改造,必须先于批量业务智能体建设完成。原因不是所有智能体在旧中台上都
+无法运行,而是旧协议会迫使每个新智能体把 Card Schema 当作模型输出契约和流程骨架,智能体越多,
+后续迁移工作流、后端编排、终端适配和测试的成本越高。
+
+本轮实施必须完成中台公共能力和挂号纵向样板,不以继续扩展旧卡片链换取短期业务数量。
+挂号样板用于证明新协议能够覆盖完整查询、替代推荐、选择、锁号、确认和挂号,不代表继续采用
+固定的“科室卡 → 医生卡 → 时段卡”流程。
+
 ## 非目标
 
-- 本轮不开发任何代码、SQL、迁移脚本或终端页面。
+- 本文档评审阶段不开发代码、SQL、迁移脚本或终端页面;评审通过后按迁移方案进入实施
 - 首期不支持 Dify、自研引擎和多引擎切换。
 - 不允许 FastGPT 直接调用锁号、挂号、支付、取消等写工具。
 - 不建设万能动态卡片 Schema 或第三方卡片市场。
@@ -178,6 +188,26 @@ resultRef / resultVersion / commandId / toolCallId / presentationId
 
 系统应能回放用户输入、模型建议、后端采纳、工具结果、展示内容、用户确认和命令结果。
 
+### FR-11 后续智能体设计基线
+
+后续智能体统一按以下顺序设计:
+
+1. 定义业务目标、用户约束、任务状态和完成条件;
+2. 区分只读查询工具与有副作用的业务动作;
+3. 只读查询通过 ToolCatalog 和 MCP 由 Agent 灵活规划;
+4. 有副作用的动作定义为后端 Command,并配置风险、确认、幂等和审计规则;
+5. 先保证文本/语音能够完整表达结果和完成交互;
+6. 最后根据终端能力决定是否增加无状态 Presentation/Card。
+
+Card 允许用于候选对比、快捷选择、命令确认摘要和结果状态展示,但必须遵守:
+
+- 不作为 Agent 流程节点或 TaskState 事实源;
+- 不使用 `nextCard`、`cardKey` 或 Card 类型判断任务完成和状态迁移;
+- 不要求模型生成最终 `cardData`;
+- 不承载写命令参数、风险等级或命令执行权限;
+- 不得成为查询、选择或确认的唯一通道;
+- 生成、发送或渲染失败时不得阻塞文本/语音和 Command 主链路。
+
 ## 非功能需求
 
 ### 性能
@@ -221,6 +251,9 @@ resultRef / resultVersion / commandId / toolCallId / presentationId
 13. FastGPT ToolCatalog 不包含任何写工具,且能追溯实际目录版本。
 14. SemanticResponse 最小响应只依赖 `turnId + answer`,可选展示失败不影响查询。
 15. FastGPT 能力验证未通过时停止后续阶段,旧演示链保持可部署但不与 v2 同时运行。
+16. 关闭全部 Presentation/Card 后,挂号查询、选择、锁号、确认和挂号仍可通过文本/语音完成。
+17. 有效运行代码不再使用 `cardKey`、`cardData`、`nextCard` 或 Card 类型作为任务完成和状态迁移条件。
+18. 后续智能体能够分别声明 TaskState、只读工具、Command 和可选 Presentation,不复制旧卡片链。
 
 ## 风险和依赖
 
@@ -235,3 +268,4 @@ resultRef / resultVersion / commandId / toolCallId / presentationId
 | 日期 | 变更 | 负责人 |
 |---|---|---|
 | 2026-06-29 | 根据卡片定位讨论创建完整需求 | 医梦研发团队 |
+| 2026-07-01 | 明确本专题优先于批量智能体建设,并补充后续智能体与 Card 设计基线 | 医梦研发团队 |