Skip to content

主Agent执行层设计草案 #76

Description

@LUPENGHAN

TimeFlow MVP 主流程 B 函数级接口设计表

1. 模块职责表

职责项 主流程 A 主流程 B 说明
上下文与执行编排 传入 target_agenttarget_functionparsed_params、最近 20 条历史信息、Query、用户与链路标识;参数不完整时不进入 B 接收主流程 A 提供的结构化决策;在需要定位既有事项且存在 candidate_query 时查询候选事项或事项范围;将候选事实交给范围内指代消解 LLM;仅在 rangesingle 明确后组装并调用一个目标子 Agent;不需要既有目标的创建类函数跳过范围消解;处理统一结构化响应;管理待选择状态、待确认写入和运行摘要 B 不重新理解用户 Query,不重新识别意图,不重新解析或补全 A 负责的参数;范围内指代消解 LLM 只能使用 B 提供的候选事实,不能查库或生成事项 ID;不让目标子 Agent 自行查库;不直接写业务事实;不自动应用 GoalPlanDraft 或 ReschedulePlan

2. 前后端 API 表

API ID 页面 / 场景 API 名称 HTTP 方法与路径建议 请求参数 响应数据 是否写入 是否确认 失败处理 数据流转说明
1 每次进入会话页面 查询会话全部消息 HTTP GET /api/v1/conversation/messages [[03-主Agent-B接口契约#^conversation-history-request|ConversationHistoryRequest]] [[03-主Agent-B接口契约#^conversation-history-response|ConversationHistoryResponse]] 查询失败返回历史加载错误 conversation_messages 读取该用户全部消息,前端完成历史展示;不作为 B 的最近 20 条上下文查询
2 进入会话页面并完成历史消息加载后 建立会话实时连接 WebSocket /ws/v1/conversation [[03-主Agent-B接口契约#^websocket-connection-request|WebSocketConnectionRequest]] [[03-主Agent-B接口契约#^websocket-connection-result|WebSocketConnectionResult]] 连接失败提示重连 前端 App 与后端建立后续实时交互通道;主流程结果通过该连接返回
3 用户发送新的 Query 提交用户输入事件 WebSocket 入站事件 [[03-主Agent-B接口契约#^main-agent-request|MainAgentRequest]] [[03-主Agent-B接口契约#^main-agent-response|MainAgentResponse]] 条件确认 输入无效、感知层失败或 B 返回错误时推送错误事件 用户输入先进入感知层;A 完成意图和参数处理后,只有可执行决策进入 B
4 用户在候选对象、候选时间或冲突方案中作出选择 提交候选选择事件 WebSocket 入站事件 [[03-主Agent-B接口契约#^interaction-selection-request|InteractionSelectionRequest]] [[03-主Agent-B接口契约#^main-agent-response|MainAgentResponse]] 状态不存在、已消费、越权或候选变化时返回错误 根据 interaction_id 原子消费中间状态,重新查询事实和版本后继续原流程
5 用户取消当前候选选择 取消候选选择事件 WebSocket 入站事件 [[03-主Agent-B接口契约#^interaction-cancel-request|InteractionCancelRequest]] [[03-主Agent-B接口契约#^interaction-cancel-response|InteractionCancelResponse]] 重复取消幂等返回;越权取消拒绝 删除内存中的 PendingInteraction,不影响业务数据库事实
6 用户确认或拒绝业务变更 提交写入确认事件 WebSocket 入站事件 [[03-主Agent-B接口契约#^write-decision-request|WriteDecisionRequest]] [[03-主Agent-B接口契约#^write-decision-result|WriteDecisionResult]] 确认时写入 过期、哈希不一致、版本冲突、幂等冲突或事务失败时返回错误 B 编排确认;全局数据模块校验并在事务内应用新增、修改、删除、Feedback 或重排
7 主流程状态或结果发生变化 推送主流程结果事件 WebSocket 出站事件 [[03-主Agent-B接口契约#^main-agent-response|MainAgentResponse]] 或 [[03-主Agent-B接口契约#^processing-event|ProcessingEvent]] 前端会话事件 推送失败记录告警,不改变业务结果 B 向当前会话推送展示、待选择、处理中、待确认、成功、失败或错误事件

3. 模块对外函数表

函数 ID 函数名称 调用方 输入参数 返回值 依赖模块 是否写入 失败处理 数据流转说明
1 接收主流程 A 的结构化决策 主流程 A / 感知层 [[03-主Agent-B接口契约#^main-agent-decision-input|MainAgentDecisionInput]] [[03-主Agent-B接口契约#^main-agent-response|MainAgentResponse]] 全局数据模块、目标子 Agent、WebSocket 模块、系统日志模块 条件写入 决策版本、用户、目标函数或参数校验失败时返回错误 接收一次已经可以执行的决策,不重新判断意图或补全参数;进入“执行主编排流程”

判断属于哪一项进入固定Agent的执行流程,进入内部函数5项Agent
2 继续待选择流程 WebSocket 候选选择事件处理器 [[03-主Agent-B接口契约#^interaction-selection-request|InteractionSelectionRequest]] [[03-主Agent-B接口契约#^main-agent-response|MainAgentResponse]] = 展示 / 再次选择 / 确认 / 错误 内存 PendingInteraction、全局数据模块、目标子 Agent 条件写入 状态不存在、已消费、用户不匹配、候选非法或对象版本变化时拒绝 原子消费中间状态,重新查询选中对象和版本,从原流程中断位置继续,不重新进入 A
3 取消待选择流程 WebSocket 取消事件处理器 [[03-主Agent-B接口契约#^interaction-cancel-request|InteractionCancelRequest]] [[03-主Agent-B接口契约#^interaction-cancel-response|InteractionCancelResponse]] 内存 PendingInteraction、WebSocket 模块 重复取消幂等返回;越权取消拒绝 删除未消费中间状态并推送已取消结果,不影响业务事实
4 处理写入确认决定 WebSocket 确认事件处理器 [[03-主Agent-B接口契约#^write-decision-request|WriteDecisionRequest]] [[03-主Agent-B接口契约#^write-decision-result|WriteDecisionResult]] 或错误 全局数据模块、系统日志模块、WebSocket 模块 是,由全局数据模块执行 请求过期、归属不符、版本冲突、幂等冲突或事务失败时返回错误 B 发起确认落盘编排;全局数据模块负责确认、版本、业务写入和审计

在前端确认后 进入落盘流程

4. 模块依赖函数表

依赖 ID 依赖模块 需要的函数 输入参数 返回值 强依赖 缺失时处理 数据流转说明
1 全局数据模块 查询候选事项或事项范围 [[03-主Agent-B接口契约#^data-query-request|DataQueryRequest (query_type=candidate_items)]] [[03-主Agent-B接口契约#^data-query-result|DataQueryResult (query_type=candidate_items)]] 条件强依赖 查询失败终止本次目标函数;有 candidate_query 但无候选时由范围内指代消解返回 not_found B 根据 A 的 candidate_query 查询候选事实;结果先进入流程 5 的范围内指代消解,只有 rangesingle 明确后才进入目标子 Agent 上下文
2 全局数据模块 查询事项详情
精确的
[[03-主Agent-B接口契约#^data-query-request|DataQueryRequest (query_type=item_detail)]] [[03-主Agent-B接口契约#^data-query-result|DataQueryResult (query_type=item_detail)]] = [[03-主Agent-B接口契约#^item-snapshot|ItemSnapshot]] 或不存在结果 条件强依赖 不存在、删除或越权时终止;选择恢复不能继续 “查询目标 Agent 所需业务数据”或“重新校验用户选择”读取最新事实,不能使用旧候选
3 全局数据模块 查询长任务及子任务 [[03-主Agent-B接口契约#^data-query-request|DataQueryRequest (query_type=goal_tasks)]] [[03-主Agent-B接口契约#^data-query-result|DataQueryResult (query_type=goal_tasks)]] 条件强依赖 Goal 不存在或越权时终止 Goal 拆分、重排和目标复盘使用;底层 subtask 到产品 task 的映射由数据模块完成
4 全局数据模块 查询用户画像 [[03-主Agent-B接口契约#^data-query-request|DataQueryRequest (query_type=user_profile)]] [[03-主Agent-B接口契约#^data-query-result|DataQueryResult (query_type=user_profile)]] = [[03-主Agent-B接口契约#^user-profile-snapshot|UserProfileSnapshot]] 或空画像 使用默认规则继续,并标记画像缺失 长任务拆分和重排按函数要求读取;本次明确输入和硬约束优先于画像
5 全局数据模块 查询任务级画像 [[03-主Agent-B接口契约#^data-query-request|DataQueryRequest (query_type=goal_scoped_profile)]] [[03-主Agent-B接口契约#^data-query-result|DataQueryResult (query_type=goal_scoped_profile)]] = [[03-主Agent-B接口契约#^goal-scoped-profile-snapshot|GoalScopedProfileSnapshot]] 或空结果 不阻塞主流程,使用本次明确输入继续 当前 Goal 的拆分和重排使用;画像归纳侧支不阻塞主调用
6 全局数据模块 查询候选反馈目标 [[03-主Agent-B接口契约#^data-query-request|DataQueryRequest (query_type=candidate_items)]] [[03-主Agent-B接口契约#^data-query-result|DataQueryResult (query_type=candidate_items)]] 无法定位反馈目标时返回选择或未找到,不调用 Feedback Agent B 先提供候选事项,Feedback Agent 只在给定上下文中生成规范化 Feedback
7 全局数据模块 查询复盘关联数据 [[03-主Agent-B接口契约#^data-query-request|DataQueryRequest (query_type=review_facts)]] [[03-主Agent-B接口契约#^data-query-result|DataQueryResult (query_type=review_facts)]] = [[03-主Agent-B接口契约#^review-context|ReviewContext]] 的事实部分 数据读取失败不调用复盘 Agent,返回复盘错误 B 先读取事实,确定性代码计算统计,再把事实和统计交给复盘 Agent
8 全局数据模块 查询时间占用与可用时段 [[03-主Agent-B接口契约#^data-query-request|DataQueryRequest (query_type=availability)]] [[03-主Agent-B接口契约#^data-query-result|DataQueryResult (query_type=availability)]] 条件强依赖 无法计算时返回时间处理错误或重新发起提示 用于 Schedule 默认时间、Goal 拆分和重排;结果由确定性查询计算
9 范围内指代消解 LLM 判断候选范围对应的用户指向 [[03-主Agent-B接口契约#^scope-disambiguation-input|ScopeDisambiguationInput]] [[03-主Agent-B接口契约#^scope-disambiguation-result|ScopeDisambiguationResult]] = range / single / ambiguous / not_found 条件强依赖 LLM 调用失败或输出不合法时返回解析错误;ambiguous 保存 PendingInteraction;not_found 返回未找到 只能依据 B 查询出的 candidate_items、A 传入的 Query 和上下文判断;不能访问数据库、不能生成候选事实外的事项 ID;该调用不计入本次目标子 Agent 调用
10 全局数据模块 校验事项归属与版本 [[03-主Agent-B接口契约#^data-write-command|DataWriteCommand (command_type=validate_target)]] [[03-主Agent-B接口契约#^data-write-result|DataWriteResult (command_type=validate_target)]] 拒绝执行并记录安全拦截或版本冲突 选择恢复、确认写入和必要的 Agent 调用前校验目标事实
11 目标子 Agent 模块 调用 target_agenttarget_function [[03-主Agent-B接口契约#^schedule-todo-invocation|ScheduleTodoInvocation]] / [[03-主Agent-B接口契约#^feedback-invocation|FeedbackInvocation]] / [[03-主Agent-B接口契约#^replan-invocation|ReplanInvocation]] / [[03-主Agent-B接口契约#^review-invocation|ReviewInvocation]] / [[03-主Agent-B接口契约#^goal-plan-invocation|GoalPlanInvocation]] [[03-主Agent-B接口契约#^agent-response-envelope|AgentResponseEnvelope]],其中 result 为 [[03-主Agent-B接口契约#^agent-invocation-result|AgentInvocationResult]] 条件强依赖 超时、不可用或输出异常时返回对应 Agent 错误 B 已完成取数和输入组装;一次只调用一个目标子 Agent,子 Agent 不读库不写库
12 全局数据模块 保存重排候选方案 [[03-主Agent-B接口契约#^agent-invocation-result|AgentInvocationResult (result_type=replan)]] + correlation_id + 输入快照 [[03-主Agent-B接口契约#^replan-proposal-record|ReplanProposalRecord]] 条件强依赖 保存失败不生成待确认卡,记录运行错误 保存待确认 ReschedulePlan 及变更,不直接修改正式事项
13 全局数据模块 创建待确认写入请求 [[03-主Agent-B接口契约#^data-write-command|DataWriteCommand (command_type=create_write_request)]] [[03-主Agent-B接口契约#^data-write-result|DataWriteResult (command_type=create_write_request)]] 条件强依赖 创建失败不展示确认按钮 子 Agent 只提供 db_action 候选;B 将其转换为精确结构化写入请求
14 全局数据模块 校验写入前提 [[03-主Agent-B接口契约#^data-write-command|DataWriteCommand (command_type=validate_target)]] 或确认请求 [[03-主Agent-B接口契约#^data-write-result|DataWriteResult (command_type=validate_target)]] 未确认、过期、哈希不一致、越权或版本冲突时禁止应用 用户确认事件不能直接作为写入凭证,必须经过公共数据模块校验
15 全局数据模块 应用已确认写入 [[03-主Agent-B接口契约#^data-write-command|DataWriteCommand (command_type=apply_confirmed_write)]] [[03-主Agent-B接口契约#^data-write-result|DataWriteResult (command_type=apply_confirmed_write)]] 整体回滚并返回冲突或事务错误 数据模块负责确认、幂等、版本、业务写入和审计;B 不直接修改业务表
16 WebSocket 模块 向会话连接发送事件 correlation_id + result_type + MainAgentResponse 或 [[03-主Agent-B接口契约#^processing-event|ProcessingEvent]] [[03-主Agent-B接口契约#^websocket-delivery-result|WebSocketDeliveryResult]] 条件强依赖 推送失败记录告警;业务结果仍由 B 保持 B 将展示、选择、处理中、待确认、成功或错误事件发送到当前会话
17 系统日志模块 创建或更新 Agent 运行摘要 [[03-主Agent-B接口契约#^agent-run-record-input|AgentRunRecordInput]] [[03-主Agent-B接口契约#^agent-run-record-result|AgentRunRecordResult]] 或不需要返回 日志失败不得伪装为业务成功,记录告警 运行摘要记录 Agent 如何运行,不替代业务审计
18 系统日志模块 记录业务审计事件 [[03-主Agent-B接口契约#^audit-event-input|AuditEventInput]] [[03-主Agent-B接口契约#^audit-event-result|AuditEventResult]] 或不需要返回 记录失败告警,不改变业务处理结果 确认、拒绝、写入、版本冲突和安全拦截必须进入审计

5. 模块内部函数表

函数 ID 内部函数 上游 下游 输入参数 返回值 调用 LLM 写入 失败处理 数据流转说明
主执行流程-1 执行主编排流程 对外函数“接收主流程 A 的结构化决策” 校验主流程 A 的结构化决策 [[03-主Agent-B接口契约#^main-agent-decision-input|MainAgentDecisionInput]] [[03-主Agent-B接口契约#^main-agent-response|MainAgentResponse]] 条件写入 统一返回结构化错误并记录运行摘要 唯一主入口,串联从接收决策到向前端推送结果的完整流程
主执行流程-2

(冗余)
校验主流程 A 的结构化决策 执行主编排流程 读取目标函数编排规则 MainAgentDecisionInput + AuthContext [[03-主Agent-B接口契约#^decision-validation-result|DecisionValidationResult]] 用户不一致、版本不支持、目标函数未知或参数结构不符时终止 校验 target_agenttarget_functionparsed_params、Query、最近 20 条历史信息和链路标识,不重新做意图或参数处理

重新校验编排规则,根据不同的Agent和意图校验数据是否完善。

验结构化决策“A 这次传来的数据是否合法、完整?”
主执行流程-3
(冗余)
读取目标函数编排规则 校验主流程 A 的结构化决策 查询目标 Agent 所需业务数据 [[03-主Agent-B接口契约#^agent-target|AgentTarget]] [[03-主Agent-B接口契约#^function-requirements-result|FunctionRequirementsResult]] 未登记的函数组合返回不支持错误 从固定函数注册表确定所需数据、输入包装类、结果包装类和确认策略;不引入独立异步执行器

“这个 Agent 函数应该怎样执行?”

读取固定的规则
主执行流程-4

(查询候选)
查询候选事项或事项范围及其他上下文 读取目标函数编排规则 范围内指代消解 LLM 或时间处理与组装 MainAgentDecisionInput + FunctionRequirementsResult [[03-主Agent-B接口契约#^data-query-result|DataQueryResult (query_type=candidate_items)]] + [[03-主Agent-B接口契约#^agent-execution-context|AgentExecutionContext]] 候选查询失败终止;其他强依赖数据读取失败终止;可选画像缺失时标记为空继续 需要定位既有事项时使用 A 提供的 candidate_query 查询候选事项或事项范围,并将候选事实保留给流程 5;创建类或不需要既有目标的函数没有 candidate_query,直接准备其他上下文;不无差别读取数据库
主执行流程-5

(范围内指代消解)
执行范围内指代消解 LLM 查询候选事项或事项范围及其他上下文 解析执行时间并组装目标子 Agent 调用信息 [[03-主Agent-B接口契约#^scope-disambiguation-input|ScopeDisambiguationInput]] [[03-主Agent-B接口契约#^scope-disambiguation-result|ScopeDisambiguationResult]] 是,调用范围内指代消解 LLM ambiguous 写内存 candidate_query 时:range 保留全部候选;single 转为唯一 ItemReferenceambiguous 保存 PendingInteraction 并返回选择;not_found 返回未找到;LLM 输出非法时拦截;没有 candidate_query 时跳过本流程 LLM 只能使用 B 查询出的 candidate_items、A 提供的 Query 和上下文;不得查库或生成候选列表之外的事项 ID;只有 rangesingle 允许进入流程 6
主执行流程-6

(时间处理与组装)
解析执行时间并组装目标子 Agent 调用信息 执行范围内指代消解 LLM 调用目标子 Agent ScopeDisambiguationResult (resolution_type=range/single) + TimeResolutionInput + MainAgentDecisionInput + AgentExecutionContext [[03-主Agent-B接口契约#^schedule-todo-invocation|ScheduleTodoInvocation]] / [[03-主Agent-B接口契约#^feedback-invocation|FeedbackInvocation]] / [[03-主Agent-B接口契约#^replan-invocation|ReplanInvocation]] / [[03-主Agent-B接口契约#^review-invocation|ReviewInvocation]] / [[03-主Agent-B接口契约#^goal-plan-invocation|GoalPlanInvocation]] 仅接受 rangesingle;对象、版本、删除状态或时间处理失败时不调用子 Agent rangeresolved_items 作为完整操作范围;singleresolved_item 作为唯一目标;再按时间规则组装 AgentExecutionBase + Params + Context,本次只调用一个目标子 Agent
主执行流程-7

(调用前校验)
校验目标子 Agent 调用参数 解析执行时间并组装目标子 Agent 调用信息 调用目标子 Agent ScheduleTodoInvocation / FeedbackInvocation / ReplanInvocation / ReviewInvocation / GoalPlanInvocation 同类型且通过字段校验的 Agent Invocation 包装类 包装类字段、目标 Agent、目标函数或范围引用校验失败时不调用子 Agent 校验 range 是否保留完整 resolved_itemssingle 是否只有一个候选事项,并确认所有事项引用来自 B 查询事实;通过后才允许调用一个目标子 Agent
主执行流程-8 调用目标子 Agent 组装目标子 Agent 调用信息 校验目标子 Agent 统一响应 上一行选中的一个 Agent Invocation 包装类 [[03-主Agent-B接口契约#^agent-response-envelope|AgentResponseEnvelope]] 是,通过目标子 Agent 间接调用 超时、不可用或调用异常时返回错误并更新运行摘要 根据 target_agenttarget_function 只调用一个目标子 Agent;范围内指代消解 LLM 不计入该目标子 Agent;B 等待结构化响应后继续
主执行流程-9

处理返回的结果
校验目标子 Agent 统一响应 调用目标子 Agent 处理目标子 Agent 返回结果 [[03-主Agent-B接口契约#^agent-response-envelope|AgentResponseEnvelope]] + 目标函数结果约束 [[03-主Agent-B接口契约#^validated-agent-response|ValidatedAgentResponse]] 字段缺失、类型错误、函数不匹配或写入组合非法时拦截 校验 agent_namefunction_name、控制字段和 db_action;子 Agent 不直接执行写入动作;校验目标函数结果包装类、控制字段组合、允许的 db_action 及确认要求;重排方案的事项版本、时间字段和变更动作必须完整。
主执行流程-10

处理目标子 Agent 返回结果 校验目标子 Agent 统一响应 推送主流程事件或创建确认候选 [[03-主Agent-B接口契约#^validated-agent-response|ValidatedAgentResponse]] + [[03-主Agent-B接口契约#^function-requirements-result|FunctionRequirementsResult]] [[03-主Agent-B接口契约#^main-agent-response|MainAgentResponse]] 条件写入或保存重排候选 无法匹配合法结果类型时返回内部错误 display 直接展示;selection_required 保存中间状态;confirmation_required 创建写入请求;GoalPlanDraft 只保存在内存;查询、复盘直接展示,创建/修改/删除/Feedback 创建待确认写入请求,重排保存 ReschedulePlan 后确认,GoalPlanDraft 保存到内存后确认。
主执行流程-11 推送主流程事件 主流程各结果分支 WebSocket 模块 [[03-主Agent-B接口契约#^main-agent-response|MainAgentResponse]] 或 [[03-主Agent-B接口契约#^processing-event|ProcessingEvent]] [[03-主Agent-B接口契约#^websocket-delivery-result|WebSocketDeliveryResult]] 推送失败记录告警,不改变业务结果 将处理中、待选择、待确认、成功或错误事件推送给当前会话;把流程 10 生成的 MainAgentResponse 发送给前端;这里只负责交付结果,不判断业务、不修改数据。
待选择流程-1 保存待选择中间状态 范围内指代消解、时间处理或结果分发 推送主流程事件 [[03-主Agent-B接口契约#^pending-interaction-command|PendingInteractionCommand (operation=save)]] [[03-主Agent-B接口契约#^pending-interaction-result|PendingInteractionResult (operation=save)]] 写内存 内存写入失败时不返回不可恢复的选择卡 ambiguous 或时间/冲突选择只保存恢复 B 所需的最小结构化状态,不写业务数据库,不设置 TTL
待选择流程-2 恢复待选择流程 对外函数“继续待选择流程” 重新校验用户选择 [[03-主Agent-B接口契约#^pending-interaction-command|PendingInteractionCommand (operation=consume)]] [[03-主Agent-B接口契约#^pending-interaction-result|PendingInteractionResult (operation=consume)]] 原子更新并删除内存状态 状态丢失、已消费、用户不符或候选非法时拒绝 原子校验和消费,消费后重新查库,不信任保存的版本和候选事实
待选择流程-3 重新校验用户选择 恢复待选择流程 组装目标子 Agent 调用信息或再次待选择 PendingInteractionResult (operation=consume) + DataQueryResult (query_type=item_detail) [[03-主Agent-B接口契约#^item-reference|ItemReference]] 或 [[03-主Agent-B接口契约#^selection-required|SelectionRequired]] 或错误 用户归属、对象状态、版本或时间占用变化时返回冲突 重新检查用户归属、对象状态、对象版本和时间占用
待选择流程-4 取消待选择流程 对外函数“取消待选择流程” 推送主流程事件 [[03-主Agent-B接口契约#^interaction-cancel-request|InteractionCancelRequest]] [[03-主Agent-B接口契约#^interaction-cancel-response|InteractionCancelResponse]] 删除内存状态 重复取消幂等返回;越权取消拒绝 删除未消费内存状态并向前端推送已取消事件
确认流程-1 创建待确认写入请求 处理目标子 Agent 返回结果 推送主流程事件 ValidatedAgentResponse + DataWriteCommand[create_write_request] [[03-主Agent-B接口契约#^confirmation-required-response|ConfirmationRequiredResponse]] 创建写入请求 创建失败时不展示确认按钮 将业务变更候选交给全局数据模块建立确认门禁
确认流程-2 执行确认写入流程 对外函数“处理写入确认决定” 校验写入确认决定 [[03-主Agent-B接口契约#^write-decision-request|WriteDecisionRequest]] [[03-主Agent-B接口契约#^write-decision-result|WriteDecisionResult]] 由数据模块执行 过期、哈希不一致、冲突或事务失败时返回明确错误 串联用户确认或拒绝后的完整处理流程
确认流程-3 校验写入确认决定 执行确认写入流程 应用已确认写入或推送拒绝结果 WriteDecisionRequest + ConfirmationRequiredResponse [[03-主Agent-B接口契约#^data-write-command|DataWriteCommand (command_type=apply_confirmed_write)]] 或错误 用户、请求状态、有效期、载荷哈希、幂等键或版本不通过时禁止应用 用户确认事件不是写入凭证,必须由公共数据模块重新校验
确认流程-4 应用已确认写入 校验写入确认决定 推送主流程事件 [[03-主Agent-B接口契约#^data-write-command|DataWriteCommand (command_type=apply_confirmed_write)]] [[03-主Agent-B接口契约#^write-decision-result|WriteDecisionResult]] 是,由全局数据模块执行 数据事务任一步失败整体回滚 B 不直接修改业务表;数据模块事务完成业务事实和审计
横切流程-1 记录运行摘要与必要审计 主执行、待选择和确认流程 系统日志模块 [[03-主Agent-B接口契约#^agent-run-record-input|AgentRunRecordInput]] 或 [[03-主Agent-B接口契约#^audit-event-input|AuditEventInput]] [[03-主Agent-B接口契约#^agent-run-record-result|AgentRunRecordResult]] 或 [[03-主Agent-B接口契约#^audit-event-result|AuditEventResult]] 写运行摘要或审计 日志失败记录告警,不伪装业务成功 记录 Agent 如何运行与系统最终做了什么,二者不互相替代

6. 数据库查缺补漏表

缺口 ID 接口 / 能力 需要的数据 当前来源 是否可直接获得 缺口类型 建议处理 风险等级 说明
GAP-B-01 最近 20 条历史信息 [[03-主Agent-B接口契约#^conversation-message|ConversationMessage]] 的消息 ID、序号、角色、文本和创建时间 conversation_messages;本轮由 A 随决策传入 B 不重复查询;子 Agent 按函数需要接收 [[03-主Agent-B接口契约#^conversation-context|ConversationContext]] 最近 20 条是读取策略,不是对话表存储上限
GAP-B-02 会话页全部历史信息 该用户单一对话框的全部消息 conversation_messages 会话页进入时读取全部消息;不限制为最近 20 条 与 Agent 使用的最近 20 条上下文是两个不同用途
GAP-B-03 指代消解 [[03-主Agent-B接口契约#^item-snapshot|ItemSnapshot]]、用户归属、事项类型、版本和删除状态 task_items 术语映射 数据模块统一完成 subtask → task 产品语义映射 不由 B 直接读取业务表
GAP-B-04 默认时间 BusySlot、AvailableSlot、事项版本和时间约束 task_items 实时计算 数据模块提供 availability 查询,不新增空闲时间表 需要统一 [[03-主Agent-B接口契约#^time-slot|TimeSlot]] 包装类的字段口径
GAP-B-05 PendingInteraction [[03-主Agent-B接口契约#^pending-interaction-command|PendingInteractionCommand]] 的状态、候选、用户和创建时间 无数据库表 无数据库缺口 单实例内存 Store;成功消费或取消后删除,不设置 TTL 服务重启后不恢复,用户重新发起
GAP-B-06 GoalPlanDraft Goal 规划概览、Task 候选、Schedule 调整、容量状态和版本 单实例内存 Store;对话表只保存原始需求和展示消息 无数据库缺口 纯内存保存;丢失后根据对话重新生成,不建立专用数据库表 未经确认不能创建正式 Task
GAP-B-07 ReschedulePlan 方案、变更、版本和应用结果 replan_proposalsreplan_proposal_changesreplan_applications 保存候选方案;确认后通过 apply_replan 原子应用 ReschedulePlan 不是正式事项事实
GAP-B-08 写入确认 完整载荷、哈希、幂等键、基础版本和确认决定 write_requestsoperation_confirmations 使用 [[03-主Agent-B接口契约#^data-write-command|DataWriteCommand]] 和现有确认事务 前端不能伪造 payload_hash
GAP-B-09 Agent 运行状态 运行 ID、关联 ID、组件、函数、状态、错误和时间 agent_run_records 状态映射 MVP 将数据库 started 映射为接口 running;B 通过 WebSocket 返回处理中和最终结果,不单独设计排队状态 运行摘要不保存完整 Prompt

7. 风险说明表

风险 ID 风险场景 影响 处理方式 设计说明
RISK-B-01 主流程 A 结构化决策不完整 B 无法制定正确编排流程 校验 [[03-主Agent-B接口契约#^main-agent-decision-input|MainAgentDecisionInput]];缺少 target_agenttarget_functionparsed_params、历史信息或 Query 时返回错误 A 负责反问和补全,B 不重新做意图或参数处理;验证完整和缺失字段场景
RISK-B-02 Agent 与函数注册不匹配 调错能力或取错数据 使用固定函数注册表;组合未登记时返回未注册错误 target_agent + target_function 必须是已登记组合;验证合法与非法组合
RISK-B-03 无候选 无法执行目标操作 返回未找到错误,用户重新发起 通过 [[03-主Agent-B接口契约#^data-query-result|DataQueryResult (query_type=candidate_items)]] 和对象解析处理;验证空候选
RISK-B-04 多候选被直接当成范围或直接要求选择 可能误操作全部事项,或无法执行用户明确的范围操作 先调用 [[03-主Agent-B接口契约#^scope-disambiguation-input|ScopeDisambiguationInput]] 判断候选范围;只接受 rangesingleambiguousnot_found 四种结果 多候选数量本身不能决定业务语义;验证明确范围、唯一事项和无法判断三类场景
RISK-B-15 范围内指代消解 LLM 越权查库 使用候选范围外的事实作出错误判断,造成数据越权 输入只提供 [[03-主Agent-B接口契约#^item-snapshot|ItemSnapshot]] 候选事实、Query 和必要上下文;禁止提供数据库查询能力 LLM 的判断边界由包装类和调用约束共同保证
RISK-B-16 范围内指代消解 LLM 凭空生成事项 ID 操作不存在或不属于候选范围的事项 B 校验 resolved_items / resolved_item 的 ID 必须来自 candidate_itemsnot_found 不得生成任何事项 ID 只有 B 查询出的候选事实能成为后续业务目标
RISK-B-17 ambiguous 继续调用目标子 Agent 在目标不明确时生成错误候选或写入请求 ambiguous 必须保存 [[03-主Agent-B接口契约#^pending-interaction|PendingInteraction]] 并返回选择结果,流程不进入流程 6 验证流程短路和重复提交
RISK-B-18 range 遗漏候选事项 用户要求操作整个范围但只处理部分事项 B 校验 resolved_items 必须完整保留候选范围中的所有事项 验证候选数量、ID 集合和顺序是否符合约束
RISK-B-19 single 引用候选范围外事项 误操作其他事项 B 校验 resolved_item.item_id 必须存在于 candidate_items,且只允许一个事项 验证单事项引用来源
RISK-B-05 中间状态重复提交 重复调用 Agent 或重复继续流程 [[03-主Agent-B接口契约#^pending-interaction|PendingInteraction]] 原子消费;第二次提交拒绝 interaction_id 是中间态 ID,不是业务对象 ID;验证并发消费
RISK-B-06 中间状态丢失 无法恢复当前选择或 GoalPlanDraft 提示用户重新发起;GoalPlanDraft 可根据对话重新生成 内存状态丢失不恢复旧事实;验证服务重启
RISK-B-07 内存增长 长期未处理状态占用内存 设置 MVP 容量限制;消费和取消后删除;监控数量 中间状态不设置 TTL 不等于无限增长;验证容量限制
RISK-B-08 默认时间不合适 用户拒绝候选时间 默认时间只生成待确认候选;拒绝后重新表达 原窗口有空档选最早可用时间;无空档最多生成 3 个临近候选
RISK-B-09 候选事实变化 可能覆盖最新业务事实 恢复选择和确认前重新校验归属、删除状态和版本 不能信任内存或前端保存的版本;验证并发修改
RISK-B-10 Agent 输出非法 错误展示或形成错误写入候选 校验 [[03-主Agent-B接口契约#^agent-response-envelope|AgentResponseEnvelope]]、函数匹配和 db_action 规则;非法时拦截 db_action != null 必须同时 isNeedUser = true;验证非法响应
RISK-B-11 上下文越权 用户数据泄露 所有公共数据查询限定认证用户;越权时终止并记录审计 子 Agent 只接收 B 裁剪后的事实;验证跨用户访问
RISK-B-12 子 Agent 调用失败 没有结果或返回错误结果 记录运行标识和失败原因,向前端推送失败事件,允许重新发起 B 直接调用目标子 Agent;验证超时、不可用和结构化错误
RISK-B-13 版本冲突 覆盖最新业务事实 使用乐观锁;失败整体回滚并重新生成候选 确认前后都要校验基础版本;验证事务和并发
RISK-B-14 未确认写入 系统静默修改业务事实 所有 db_action 进入 write_requests 和确认流程;B 拦截未确认写入 子 Agent 只生成候选,公共数据模块只执行已确认结构化命令
A 输出可执行决策
        ↓
1. 执行主编排流程(总入口)
        ↓
2. 校验 A 的结构化决策
        ↓
3. 读取目标函数编排规则
        ↓
4. 根据 `candidate_query` 查询候选事项或事项范围,并读取其他所需上下文
        ↓
5. 有 `candidate_query` 时执行范围内指代消解 LLM;无 `candidate_query` 的创建类函数跳过
        ├─ 无 candidate_query → 直接进入 6(不需要既有目标)
        ├─ range → 保留全部候选事项
        ├─ single → 转换为唯一 ItemReference
        ├─ ambiguous → 保存 PendingInteraction → 选择结果 → 11
        └─ not_found → 未找到错误 → 11
                  ↓
6. 仅对 range/single 解析执行时间并组装目标子 Agent 调用参数
        ↓
7. 校验目标子 Agent 调用参数
        ↓
8. 调用一个目标子 Agent
        ↓
9. 校验子 Agent 返回结果
        ├─ 返回非法 → 错误结果 → 11
        └─ 返回合法
                  ↓
10. 处理子 Agent 返回结果
        ├─ 查询/复盘 → 展示结果
        ├─ 需要选择 → 保存 PendingInteraction
        ├─ 一般业务变更 → 创建待确认写入请求
        ├─ 重排方案 → 保存 ReschedulePlan 并等待确认
        └─ Goal 规划 → 内存保存 GoalPlanDraft 并等待确认
                  ↓
11. 通过 WebSocket 返回前端

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions