| 主执行流程-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_agent、target_function、parsed_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 转为唯一 ItemReference;ambiguous 保存 PendingInteraction 并返回选择;not_found 返回未找到;LLM 输出非法时拦截;没有 candidate_query 时跳过本流程 |
LLM 只能使用 B 查询出的 candidate_items、A 提供的 Query 和上下文;不得查库或生成候选列表之外的事项 ID;只有 range 或 single 允许进入流程 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]] |
否 |
否 |
仅接受 range 或 single;对象、版本、删除状态或时间处理失败时不调用子 Agent |
range 将 resolved_items 作为完整操作范围;single 将 resolved_item 作为唯一目标;再按时间规则组装 AgentExecutionBase + Params + Context,本次只调用一个目标子 Agent |
主执行流程-7
(调用前校验) |
校验目标子 Agent 调用参数 |
解析执行时间并组装目标子 Agent 调用信息 |
调用目标子 Agent |
ScheduleTodoInvocation / FeedbackInvocation / ReplanInvocation / ReviewInvocation / GoalPlanInvocation |
同类型且通过字段校验的 Agent Invocation 包装类 |
否 |
否 |
包装类字段、目标 Agent、目标函数或范围引用校验失败时不调用子 Agent |
校验 range 是否保留完整 resolved_items、single 是否只有一个候选事项,并确认所有事项引用来自 B 查询事实;通过后才允许调用一个目标子 Agent |
| 主执行流程-8 |
调用目标子 Agent |
组装目标子 Agent 调用信息 |
校验目标子 Agent 统一响应 |
上一行选中的一个 Agent Invocation 包装类 |
[[03-主Agent-B接口契约#^agent-response-envelope|AgentResponseEnvelope]] |
是,通过目标子 Agent 间接调用 |
否 |
超时、不可用或调用异常时返回错误并更新运行摘要 |
根据 target_agent 和 target_function 只调用一个目标子 Agent;范围内指代消解 LLM 不计入该目标子 Agent;B 等待结构化响应后继续 |
主执行流程-9
处理返回的结果 |
校验目标子 Agent 统一响应 |
调用目标子 Agent |
处理目标子 Agent 返回结果 |
[[03-主Agent-B接口契约#^agent-response-envelope|AgentResponseEnvelope]] + 目标函数结果约束 |
[[03-主Agent-B接口契约#^validated-agent-response|ValidatedAgentResponse]] |
否 |
否 |
字段缺失、类型错误、函数不匹配或写入组合非法时拦截 |
校验 agent_name、function_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 如何运行与系统最终做了什么,二者不互相替代 |
TimeFlow MVP 主流程 B 函数级接口设计表
1. 模块职责表
target_agent、target_function、parsed_params、最近 20 条历史信息、Query、用户与链路标识;参数不完整时不进入 Bcandidate_query时查询候选事项或事项范围;将候选事实交给范围内指代消解 LLM;仅在range或single明确后组装并调用一个目标子 Agent;不需要既有目标的创建类函数跳过范围消解;处理统一结构化响应;管理待选择状态、待确认写入和运行摘要2. 前后端 API 表
HTTP GET /api/v1/conversation/messagesconversation_messages读取该用户全部消息,前端完成历史展示;不作为 B 的最近 20 条上下文查询WebSocket /ws/v1/conversationinteraction_id原子消费中间状态,重新查询事实和版本后继续原流程3. 模块对外函数表
判断属于哪一项进入固定Agent的执行流程,进入内部函数5项Agent
在前端确认后 进入落盘流程
4. 模块依赖函数表
candidate_query但无候选时由范围内指代消解返回not_foundcandidate_query查询候选事实;结果先进入流程 5 的范围内指代消解,只有range或single明确后才进入目标子 Agent 上下文精确的
subtask到产品task的映射由数据模块完成range/single/ambiguous/not_foundambiguous保存 PendingInteraction;not_found返回未找到candidate_items、A 传入的 Query 和上下文判断;不能访问数据库、不能生成候选事实外的事项 ID;该调用不计入本次目标子 Agent 调用target_agent的target_functionresult为 [[03-主Agent-B接口契约#^agent-invocation-result|AgentInvocationResult]]correlation_id+ 输入快照db_action候选;B 将其转换为精确结构化写入请求correlation_id + result_type + MainAgentResponse或 [[03-主Agent-B接口契约#^processing-event|ProcessingEvent]]5. 模块内部函数表
(冗余)
MainAgentDecisionInput + AuthContexttarget_agent、target_function、parsed_params、Query、最近 20 条历史信息和链路标识,不重新做意图或参数处理重新校验编排规则,根据不同的Agent和意图校验数据是否完善。
验结构化决策“A 这次传来的数据是否合法、完整?”
(冗余)
“这个 Agent 函数应该怎样执行?”
读取固定的规则
(查询候选)
MainAgentDecisionInput + FunctionRequirementsResultcandidate_query查询候选事项或事项范围,并将候选事实保留给流程 5;创建类或不需要既有目标的函数没有candidate_query,直接准备其他上下文;不无差别读取数据库(范围内指代消解)
ambiguous写内存candidate_query时:range保留全部候选;single转为唯一ItemReference;ambiguous保存 PendingInteraction 并返回选择;not_found返回未找到;LLM 输出非法时拦截;没有candidate_query时跳过本流程candidate_items、A 提供的 Query 和上下文;不得查库或生成候选列表之外的事项 ID;只有range或single允许进入流程 6(时间处理与组装)
ScopeDisambiguationResult (resolution_type=range/single) + TimeResolutionInput + MainAgentDecisionInput + AgentExecutionContextrange或single;对象、版本、删除状态或时间处理失败时不调用子 Agentrange将resolved_items作为完整操作范围;single将resolved_item作为唯一目标;再按时间规则组装AgentExecutionBase + Params + Context,本次只调用一个目标子 Agent(调用前校验)
ScheduleTodoInvocation/FeedbackInvocation/ReplanInvocation/ReviewInvocation/GoalPlanInvocationrange是否保留完整resolved_items、single是否只有一个候选事项,并确认所有事项引用来自 B 查询事实;通过后才允许调用一个目标子 Agenttarget_agent和target_function只调用一个目标子 Agent;范围内指代消解 LLM 不计入该目标子 Agent;B 等待结构化响应后继续处理返回的结果
agent_name、function_name、控制字段和db_action;子 Agent 不直接执行写入动作;校验目标函数结果包装类、控制字段组合、允许的db_action及确认要求;重排方案的事项版本、时间字段和变更动作必须完整。display直接展示;selection_required保存中间状态;confirmation_required创建写入请求;GoalPlanDraft 只保存在内存;查询、复盘直接展示,创建/修改/删除/Feedback 创建待确认写入请求,重排保存 ReschedulePlan 后确认,GoalPlanDraft 保存到内存后确认。MainAgentResponse发送给前端;这里只负责交付结果,不判断业务、不修改数据。ambiguous或时间/冲突选择只保存恢复 B 所需的最小结构化状态,不写业务数据库,不设置 TTLPendingInteractionResult (operation=consume) + DataQueryResult (query_type=item_detail)ValidatedAgentResponse + DataWriteCommand[create_write_request]WriteDecisionRequest + ConfirmationRequiredResponse6. 数据库查缺补漏表
conversation_messages;本轮由 A 随决策传入conversation_messagestask_itemssubtask → task产品语义映射task_items实时计算availability查询,不新增空闲时间表replan_proposals、replan_proposal_changes、replan_applicationsapply_replan原子应用write_requests、operation_confirmationspayload_hashagent_run_recordsstarted映射为接口running;B 通过 WebSocket 返回处理中和最终结果,不单独设计排队状态7. 风险说明表
target_agent、target_function、parsed_params、历史信息或 Query 时返回错误target_agent + target_function必须是已登记组合;验证合法与非法组合range、single、ambiguous、not_found四种结果resolved_items/resolved_item的 ID 必须来自candidate_items;not_found不得生成任何事项 IDambiguous继续调用目标子 Agentambiguous必须保存 [[03-主Agent-B接口契约#^pending-interaction|PendingInteraction]] 并返回选择结果,流程不进入流程 6range遗漏候选事项resolved_items必须完整保留候选范围中的所有事项single引用候选范围外事项resolved_item.item_id必须存在于candidate_items,且只允许一个事项interaction_id是中间态 ID,不是业务对象 ID;验证并发消费db_action规则;非法时拦截db_action != null必须同时isNeedUser = true;验证非法响应db_action进入write_requests和确认流程;B 拦截未确认写入