6.9 KiB
S02 任务运行
职责与对象
可靠执行与证据,不承担文学裁决。
实例归属以总体架构为准;结构、状态和公开外壳分别引用数据模型与接口契约。
公开接口
| 用例 | 输入责任 | 输出与后果 |
|---|---|---|
| create_task | 已授权任务合同和流程版本 | 持久化任务 |
| claim_step | 执行器用途和能力 | 有租约的尝试 |
| execute_role | 冻结角色请求和预算 | 标准结果、终态及证据 |
| append_event | 当前尝试和有类型事件 | 持久化序列 |
| control_task | 作者范围、动作和预期状态 | 暂停、取消、恢复或新尝试 |
| read_task | 任务身份和用途 | 当前状态、产物和恢复依据 |
所有接口在本模块的接口.py 暴露。输入输出类型由同一公开表面导出,外部不导入私有模型或 SQL。
内部职责
| 文件 | 职责 |
|---|---|
| 接口.py | 任务运行公开用例和可导入合同 |
| 模型.py | 任务运行稳定对象、外壳及内部状态 |
| 存储.py | 任务运行所属记录的 SQL 与版本读写 |
| 执行合同.py | 宿主请求、标准事件及完成结果 |
| 任务领取.py | 领取、租约、心跳和尝试身份 |
| 作用域互斥.py | 同作品或来源的排他任务范围、持有者和过期写入保护 |
| 步骤执行.py | 已登记步骤及检查点写入 |
| 恢复控制.py | 暂停、取消、重试和未知结果 |
| 角色策略.py | 角色能力、工具范围和版本冻结 |
| 模型调用.py | 统一调用、明确终态及结构校验 |
| 角色会话.py | 固定角色对话、会话批准下的派生回合、已存证据重放和最终结构校验 |
| 预算管理.py | 额度窗口、预留、结算及未知用量 |
| 工具调用.py | 工具允许集、参数和读取回执 |
| 事件记录.py | 有序事件持久化与订阅依据 |
| 运行证据.py | 输入输出、脱敏、暂存补交和关联 |
| 原文生命周期.py | 原文授权、临时租约、完整归档、清理及中断恢复 |
| 配置版本.py | 运行配置验证、启用及固定副本 |
完整路径及运行模板见目标文件清单,逐文件意图、边界与目标见任务运行文件设计。
实现约束
运行配置版本同时固定角色参数、具名提供方协议/地址、凭据引用、预算账户、计价实现版本及宿主版本;Pi另固定Node与包位置。保存草案、验证和启用分开,未装配验证器不能生成验证回执。离线合同证据只用于隔离评测配置,不能启用生产配置。
任务从已启用版本取得不可变绑定,绑定时核对任务角色策略和资源构建。启动装配按这一绑定创建模型执行器和角色循环;后续启用新版本不改变旧任务。请求中的提供方、模型、推理等级和工具必须与固定角色配置一致;可选输入输出合同引用须匹配已登记步骤,业务动态字段仍由任务固定Schema生成。证据保存运行配置哈希与计价版本,不保存凭据值。无凭据模板见提供方配置。
- 模型调用期间不持有领取长事务,完成写入受尝试身份和租约保护。
- 恢复复用已持久化的输出;调用未知先对账,再决定是否建立新尝试。
- 工具范围、角色模型要求和额度窗口来自冻结策略;失败不能绕过能力要求。
- 任务、检查、证据、作者决定和采纳分别记录。
模型发送分为准备与执行。通过角色、领取及原文授权检查后,宿主先核对协议能力、地址和凭据,并固定可序列化请求;此阶段不访问模型、不占用调用次数。准备成功后,S02保存输入证据、预留预算并在同一事务登记已发送,随后执行已准备的请求。确定的配置错误属于未发送失败;已开始外发却缺少可靠结果的调用才按未知费用处理。宿主不自行决定预算或绕过发送关口。
角色会话和模型回合分开:直接角色执行通常只有一回合,Pi可根据允许工具继续有限回合。每个模型回合都走同一发送、额度、费用及证据保护;工具调用结果不是最终角色产物。角色收尾另校验固定输出结构、来源和必需回执。Pi的agent_end可能只是底层一轮结束,必须等到agent_settled并核对最终消息与S02已确认回合;不能从Pi自报模型名或SDK费用反推真实计费。
对话历史由S02从批准的初始请求、已核对模型结果和具名工具结果组装。Pi通过进程内提供方回调请求下一轮,不持有提供方凭据;内置文件/终端工具、目录自动发现、自动重试和压缩关闭。直接循环与Pi消费同一组S02回调。角色职责和动态输出合同在原文批准前固定,安装资源的代码哈希同时包含Python与Pi工具桥。
新尝试先调用登记owner的来源与结构重验,再从同一会话的完整证据重建对话。已结算模型回合和已保存工具结果只重放,不再次外发、读取或计费;旧证据保留原尝试归属,新回合引用前序回执。每轮消费继续重验当前来源和保留批准。已有派生缺完整响应、费用未决或超出原批准预算时,不以空历史重跑掩盖缺口。
同作品抽取与归并使用独立于步骤领取的作用域租约。作用域键由业务用例登记,包含用途、作品或来源和需要互斥的操作族;持有者为任务,持有代次由服务端递增。窗口步骤还须持有各自的有效尝试身份。续租、转交和释放均核对持有者与代次,旧持有者不能释放新租约。
归并写入在短事务内锁定并复核作用域持有代次、有效期和当前步骤身份,然后提交分析版本;接管会更改代次,旧执行器的迟到写入必须拒绝。模型调用期间不保持数据库长事务。正常结束、取消与异常过期分别有释放或接管路径;此机制保留原作品抽取互斥的行为,不以“同一步只有一个 worker”代替整个作品范围的互斥。
协作与失败
编排定义步骤,本模块执行;基础设施注入 Pi、直接模型、文件和连接实现。
断流无终态、结构错误、预算不足或证据未落库都不能记为成功;取消后的结果不能更新当前业务。
临时敏感原文与持久证据分别处理,最长 24 小时临时租约不能自动变成长期归档。授权、归档事务与 migrating 恢复以原文证据生命周期为唯一合同;具体反例按测试用例重写。
验收行为
- 断流。
- 租约过期。
- 重启。
- 取消。
- 未知用量。
- 证据补交。
- 无仓库安装运行。
验收入口和替换条件见迁移与验收;这些条目是目标行为,不是已通过测试的声明。