Files
Xin Wang 6043eb9b63
Quality gate / backend (push) Canceled after 0s
Quality gate / frontend (push) Canceled after 0s
docs: finalize task backend acceptance and review records
2026-10-24 09:29:05 +08:00

7.1 KiB
Raw Permalink Blame History

交付记录:Speaker / Task Backend MVP

行为与验收边界

仅提示词 Pipeline。已实现独立 Speaker 和 Reasoner/OpenCode 任务后端资源,复用 Pipecat 原生 Jobs/BackendLLMWorker;未修改 Pipecat。新任务委派前读取有效配置,接受后冻结任务快照。任务支持进度、明确结果、提问回复及取消。

语义选择(完整)

ASK=never。以下是本版全部语义选择;Source标注用户、默认选择或独立审阅发现。

ID Under-determined Chosen Class Source
B-001 支持范围 仅提示词 Pipeline;可关闭后端,或选择 reasoner/opencode;一个助手最多一个任务后端 semantic user
B-004 策略归属 模型、工具白名单、技能和时限配置在可复用后端资源;助手绑定可补充任务指令。提交时冻结完整解析快照 semantic default
B-005 内置执行 复用 BackendLLMWorker 与现有 ToolExecutor;每个任务独立模型实例、上下文和变量,应用级拥有者发原生 Jobs semantic user
B-006 Reasoner权限 仅资源显式绑定的 HTTP/MCP 服务端工具;拒绝 client/system/task 和循环委派;技能不增加权限 semantic default
B-007 推理强度 provider_default 或 low/medium/high;非默认值要求模型资源显式声明 supportsReasoningEffort,按 reasoning_effort 参数发送,不支持时拒绝 semantic default
B-008 技能 Reasoner 使用后端资源中的命名技能正文;OpenCode 使用远端原生技能/agent,平台仅保存说明,不伪装远程安装或权限隔离 semantic default
B-010 执行结果 Reasoner通过complete_task(status,result)明确报告目标成功或失败;部分完成记为failed并说明限制。该状态是执行模型的报告,非平台独立验证;idle、普通文本、接收回执不证明成功 semantic sweep
B-011 生命周期与取消 语音断线继续;取消停止当前任务;原生取消不代表外部工具或远端副作用被回滚,需核查远端停止 semantic user
B-012 恢复 OpenCode只观察已有句柄;内置Reasoner重启标记中断,不自动重放工具;历史任务保留旧恢复语义 semantic default
B-013 时限与并发 新任务保存截止时间,排队和执行均计时;全局原生串行并发1,保留远端状态未确认时阻止新提交策略 semantic default
B-014 迁移 自动复制旧task工具连接/凭据至后端资源,迁移助手绑定和instruction来源;保留历史task_id、连接快照和旧时限语义 semantic default
B-015 自动测试与鉴权 沿用管理员鉴权;自动测试不得访问真实后端任务,使用显式模拟;无真实服务地址不声称联调完成 semantic default
B-016 MVP执行环境 内置Reasoner不提供宿主机Shell/文件沙箱;编码由OpenCode处理,界面明确实际权限由执行端配置 semantic default
B-018 回退迁移 0027为数据语义迁移,downgrade明确拒绝,需备份恢复;不能把新的Reasoner配置静默回退成旧task工具 semantic default
B-019 切换Realtime 已绑定任务后端时复用现有配置移除确认交互,确认切换后解除绑定,后端资源保留 semantic default
B-020 配置有效性 后端配置拒绝未知字段;启用资源的编辑验证已绑定助手,模型/工具失效时阻止保存和委派;停用资源允许保留结构合法但引用失效的配置 semantic sweep
B-022 指令模板 助手绑定 instructions 的业务变量使用接受时冻结的值单次渲染;system__time/system__time_utc沿用共享渲染器执行时刷新。资源 instructions 和技能正文按字面使用,不访问密钥变量 semantic sweep
B-023 通话内更新 每次Speaker委派前重新读取后端、模型、工具和MCP启用状态及凭据;绑定或任务参数来源改变时要求重新连接。接受后的任务继续用快照,不因配置编辑撤销已有副作用 semantic sweep
B-024 停用影响 允许停用仍被引用的后端并保留绑定;新助手会话因配置校验失败不能启动,需先解绑或启用。已有Speaker通话保留,但新委派会重新校验并拒绝停用资源 semantic sweep

运行与验证

  • 最终 make test exit 0:396项后端、4项前端契约、lint、production build、5项契约快照;仅保留既有BatchTestPage lint警告。
  • F0–F4所有MUST验收命令通过。显式模拟模型/远端仍是测试替身,不在生产路径;没有残留生产桩。
  • 隔离PostgreSQL17验证0026旧数据迁至0027、四种指令来源、凭据/历史保留、资源CRUD与助手复制,未触碰现有数据库。
  • 浏览器6项核心验收使用模拟API,未启动麦克风/WebRTC;旧变量预设刷新场景未完成浏览器验证。390px新页面/弹窗在手动收起现有侧栏后通过布局检查。
  • 审阅第一轮:3项未声明语义、2条过时记录;已修正代码或声明。第二轮:未声明0、过时0、clean。review_independence=same-family,acceptance_status=provisional,不代表外部独立正确性证明。

接口选择(完整)

ID Under-determined Chosen Class Source
B-002 产品资源 独立 TaskBackendResource,普通 Tool 仅 HTTP/MCP/client;Speaker 委派由平台内建函数自动注册 interface user
B-003 配置形状 后端API使用 id/name/type/description/config/secrets/enabled;助手 taskBackend 使用 backendId/instructionSource/instructions;接口 camelCase interface default
B-009 外部选择 OpenCode保留地址/目录/服务鉴权,新增可选 agent 与 modelProviderId/modelId;推理强度及沙箱由远端管理 interface default
B-017 F0过渡 Walking skeleton短暂兼容旧tool提交入口以保持累计检查;迁移阶段移除该过渡入口,不保留为新产品接口 interface default
B-021 类型与凭据 后端资源可切换类型,但必须提交完整合法配置;OpenCode转Reasoner清除服务凭据,同类型空值/掩码保留原凭据 interface default

使用与未覆盖项

  1. 升级前备份数据库;0027不能安全downgrade,回退需恢复备份。执行 make db-init 迁移并同步接口定义。
  2. 在“组件库 → 任务后端”配置资源,再在提示词助手中选择。推理强度要求模型声明实际支持;OpenCode权限/沙箱/技能在远端配置。
  3. 真实模型、真实OpenCode编码和WebRTC端到端联调未进行,需有效地址/凭据后单独验证。
  4. MVP单进程、全局并发1;多进程调度、任意并发、远程技能同步和沙箱编排未实现。Pipecat保留结束Worker注册对象直至关闭,已清空上下文/工具/处理器引用;长期高任务量运行未验证。

原始记录:BUILD_NOTE.md、database-smoke.json、frontend-smoke.json、SILENT_ASSUMPTION_SWEEP.json、SILENT_ASSUMPTION_SWEEP_ROUND_2.json与sweep-metadata.json。