跳到正文

上线检查清单 ​

一句话:逐项核对不是为了打勾,而是为了在上线前发现“以为有、其实没有”的接缝。

用法:每条只回答“是 / 否 / 不适用”。答“否”的项要么补齐,要么写进风险接受记录并指定责任人。

身份与入口 ​

  • [ ] 每个请求都能归属到唯一 tenant / namespace / subject / session。
  • [ ] 租户与命名空间来自网关认证结果,改请求头无法切换。
  • [ ] 渠道的 external_user_id 已映射到平台主体,私聊与群聊不串。
  • [ ] 渠道回调验签、重放窗口、密钥轮换已配置。
  • [ ] 消费者配额与租户配额分别生效,超限返回可读错误。
  • [ ] 应用凭据的 scope 最小化,invoke 不包含审批权。

内核与状态 ​

  • [ ] 生产环境禁用内存与本地 JSON 状态存储。
  • [ ] 状态存储支持版本 CAS,多副本下有冲突策略。
  • [ ] 远端工作区已配 DistributedStore,构建不会因缺状态存储失败。
  • [ ] 对象存储无锁能力,并发锁落在 Redis/MySQL/Mongo。
  • [ ] 快照可跨节点恢复,并发恢复被锁挡住。
  • [ ] 记忆作用域选对,个人记忆没有落到 AGENT/GLOBAL。
  • [ ] 记忆只有一个写入口,未与外部记忆双写。
  • [ ] 检查点含 checkpoint_seq / phase / completed_steps / unfinished_steps / confirmed_facts_ref / tool_result_refs / workspace_version / subtask_states / wait_condition / budget_snapshot。
  • [ ] 工作区分指令、技能、记忆、产物、临时、共享六区,scratch/ 不进入交付,skills/ 与 instructions/ 运行时只读。
  • [ ] 产物经 created → scanned → committed → referenced 才可交付;扫描失败隔离,提交后不可变。

控制面与版本 ​

  • [ ] Agent、Workspace、Workflow 发布产生不可变版本。
  • [ ] 发布单元冻结模型、Harness、上下文、能力、运行时、评测六要素,并生成 manifest_sha256;Endpoint 只指向 release_id。
  • [ ] Session 创建时冻结版本与 release_id,已有会话不自动升级。
  • [ ] 回滚通过 Endpoint release 完成,不需要改定义。
  • [ ] PostgreSQL 有备份与恢复演练,控制面可只读降级。
  • [ ] 幂等键覆盖提交、取消、恢复、审批回答。
  • [ ] 工具策略默认为最小权限,高风险动作强制审批。

任务与队列 ​

  • [ ] 定时任务每次使用唯一 Session ID,不复用历史会话。
  • [ ] 定时任务声明错过策略(run_latest / run_all / skip / prompt),幂等键使用计划触发时间,补跑有窗口与上限。
  • [ ] 工作流声明 join 类型(all / any / quorum)、失败策略与必需分支;取消传播与已发生副作用补偿有记录。
  • [ ] 任务状态写在账本,LiteTopic 只做传输。
  • [ ] Outbox 与任务状态同事务写入。
  • [ ] 消息信封含 task_id / attempt / idempotency_key / deadline / traceparent。
  • [ ] 先提交结果再提交位点,重复投递只执行一次。
  • [ ] 有租约/栅栏令牌,旧执行者无法写回。
  • [ ] 死信与最大重试次数已配置,不会无限重投。

任务闭环 ​

  • [ ] 任务状态在账本,含 phase / plan / confirmed_facts / budget / wait_reason / completion_evidence / terminal_reason / unfinished_items。
  • [ ] 只有租约持有者能写状态,旧 lease_epoch 写回被拒。
  • [ ] 等待原因机读,界面文案、告警路由、Runbook 共用同一枚举。
  • [ ] 审批/输入/外部回调等待默认快照后释放计算资源,恢复按 task_id。
  • [ ] 预算每步前预留、后扣减,耗尽产生 expired 与未完成清单。
  • [ ] 完成分 executed / verified / accepted / delivered,无证据只能标 completed_unverified。
  • [ ] 取消/超时/失败都写 unfinished_items 与不可回滚副作用。
  • [ ] 事件 seq 单调,SSE 断线可续传,游标过期返回 410。
  • [ ] 第 22 篇 T1–T10 十条验收用例至少跑过 T1–T7。

供给、注册与路由 ​

  • [ ] HiMarket 通过 ref 关联 Nacos/Higress,未复制定义。
  • [ ] 有定时对账任务,能发现引用漂移。
  • [ ] 注册中心里每个资产有版本、端点、owner、健康检查。
  • [ ] 发现不等于授权:网关与工具策略仍会独立拒绝。
  • [ ] 本地路由不绕过中心网关的认证与配额。
  • [ ] Jev 阈值用本地样本标定,不是照抄默认值。
  • [ ] 决策失败时的 fail-open / fail-closed 已逐用例声明。

协议与渠道 ​

  • [ ] 每种对外协议有独立鉴权、配额与审计。
  • [ ] A2A 的 Agent Card 可访问,但调用仍需授权。
  • [ ] Chat Completions 兼容层未承载需要恢复与审批的长任务。
  • [ ] 渠道重推按消息 ID 去重,去重窗口足够长。
  • [ ] 未使用的 starter 与扩展没有引入。

证据与治理 ​

  • [ ] 网关、内核、工具共用同一个 traceparent。
  • [ ] Span 带版本、用量、结果、归属四类属性。
  • [ ] 执行按 ENTRY / AGENT / WORKFLOW / STEP / LLM / RETRIEVAL / MEMORY / TOOL / GUARDRAIL / COMPACTION / HITL / INTERRUPT 十二类建模;拒绝与中断也上报。
  • [ ] Session 与 Trace 分开建模,session_id 不被当作 trace_id,也不从 trace 结束推断任务完成。
  • [ ] 指标标签不含会话 ID、用户 ID 等高基数字段。
  • [ ] 成本以网关计量为准,内核 Token 只用于排障。
  • [ ] 黄金集可复现至少一个历史 BadCase。
  • [ ] 发布门禁有明确的回滚阈值与一键回滚路径。
  • [ ] 审计与 Trace 分开存储,不可修改且保留期明确。

安全与隔离 ​

  • [ ] 工具默认拒绝,按需开通;只读工具才允许自动放行。
  • [ ] 模型可见、Harness 注册、任务级授权三层分别校验,不把“目录里有”当成“可执行”。
  • [ ] 每个工具调用有 action_id、params_digest、幂等键与证据引用;高风险动作走 Preview → Approve → Commit → Verify。
  • [ ] 沙箱默认断网,按任务开白名单。
  • [ ] 凭据存 Vault,按工具收窄,短时注入,不进入上下文。
  • [ ] 不可信内容被标记为数据,不当作指令。
  • [ ] 输出侧有敏感信息过滤。
  • [ ] MCP Server 与 Skill 有来源、版本、许可与责任人。
  • [ ] 跨租户访问被拒时有告警与处置预案。

部署与运维 ​

  • [ ] 部署清单版本化:端口、镜像 tag、配置、依赖、证书。
  • [ ] 备份覆盖 PostgreSQL、对象存储、Nacos 配置与 Vault。
  • [ ] 升级前 drain Runtime Host,在途任务清零。
  • [ ] 四个降级开关可用:模型回退、异步转同步、Hosted 转手工、市场转直连。
  • [ ] 预览版组件不在关键路径,且有手工降级流程。
  • [ ] 单组件、整切片、数据三类回滚都演练过。

多 Agent 与预算 ​

  • [ ] Task / Subtask / Task Run / Session 四个对象分别有权威,session_id 不被当作任务状态。
  • [ ] 六类停止条件(预算、委派深度、派生任务数、重试、返工、无进展)至少配置四类。
  • [ ] 结果分 submitted / accepted / root complete 三级,子任务提交不等于根任务完成。
  • [ ] 入站权限与出站权限独立校验,调用 Agent 不自动获得其出站资源。
  • [ ] 每次委派带七项契约(目标、上下文、权限、预算、输出、失败语义、验收)。
  • [ ] 预算租约可预留、结算、回收、到期;父任务不私借子任务未用额度。
  • [ ] 跨网关/应用的重试共享一个 attempt 预算,不出现 3×3 次上游调用。
  • [ ] 无法形成单一父子链的跨 Trace 关联用 Span Links,不强行拼树。

资源中心与上下文 ​

  • [ ] Nacos 是 Prompt/Skill/MCP/Agent/AgentSpec 发布态与运行态的唯一权威;源码与构建产物归 Git/CI,任何目录只是只读投影。
  • [ ] 目录有对账任务,能发现版本/状态/摘要漂移,且不自动覆盖权威。
  • [ ] 运行引用锁到精确版本 + 摘要,解析失败时不使用“任意可用版本”。
  • [ ] 稳态 Agent 有 Lock Manifest;动态 Agent 发现后重新校验版本、权限与风险。
  • [ ] Context Manifest 记录每个资源的来源、版本、信任层、权限依据与选择原因。
  • [ ] 资源中心不可用时,按策略使用已验证缓存;高风险任务停止并说明原因。

仿真 ​

  • [ ] SUT 边界已声明,替身没有接管推理、工具选择、参数与恢复路径。
  • [ ] 场景与 Manifest 分离,Manifest 不可变并锁定版本、种子与替身。
  • [ ] 执行状态、仿真有效性、证据完整性、任务质量四维分别记录。
  • [ ] 记录 → 观测 → 证据 → 结论分层,结论不能改写原始材料。
  • [ ] 故障注入有四步记录(plan/arm/hit/recover),未命中时结论不采纳。
  • [ ] 零违规结论附置信上界,不把“没测出问题”写成“没有问题”。

调优闭环 ​

  • [ ] 每个 Task Run 可生成一条轨迹,工具请求与结果配对,结果来源可追。
  • [ ] 数据集区分 tune / validation / holdout,题目带 rubric 与来源。
  • [ ] 评估器先试评校准,保留 undeterminable,不做简单平均。
  • [ ] 门禁阈值在看结果前注册,实验单变量、基线固定。
  • [ ] Release 冻结六要素,灰度与一键回滚路径可用。
  • [ ] BadCase 按“环境 → Harness → 模型”顺序归因,不直接换模型。

运行时实证对照(30 台账映射 · M1–M5 已坐实) ​

2026-10-25 更新:以下为 agentscope-service 官方 main + openai 扩展运行时实证结果(详见 30 台账 §4/§5.5),企业化清单项据此打勾并附证据锚点;未实证项维持待接线。

已实证(✅) ​

清单项运行时证据台账锚点
幂等键覆盖提交同 Idempotency-Key 两次 POST 返回同 turn,第二次不重复执行(result=IDEMPOTENT)§5.5 M5-1 _m5_idem.txt
事件 seq 单调,SSE 断线可续传事件带 cursor(base64 inv:{session}:{seq}),断点续传机制坐实;事件完整写入 dp.builder_session_event§5.5 M5-2 _m5_sse.txt
工具默认拒绝 / 高风险审批personal chat 工具调用自动挂起 required_action(confirmation) → data 面 HITL user.tool_confirmation {allow} 裁决;AgentTask 场景落 rt.approvals + /decide(approver 校验、过期 409)§5.5 M5-5 _confirm_allow.txt
MCP Server 有来源、版本mcpServers definition 声明 + data 面注册(everything 2.0.0),工具注入+审批联动§5.5 M5-4
Skill 有来源、版本workspace 上传 origin=custom + sizeBytes + marketplace.version;全局 SkillRepositoryConfigEntry(filesystem/git)§5.5 M5-3 + §5.5.1①
状态存储版本 CAS记忆/定义均版本化:cp.memory_versions、definition version 乐观锁(PATCH 缺/错 version → 400/409)§5.5.1② + §5.5.2
记忆作用域 / 唯一写入口记忆=PG/JPA 无文件落盘,单 data 写入口;作用域经 memory-stores/{storeName} 挂载隔离§5.5.1②
任务状态在账本rt.agent_tasks/rt.execution_attempts + data SessionTurnCommandEntity(queued);无 MQ,PG 中枢 + 事件 outbox 回传§5.5.1③
模型网关(兼容层)单模型入口 openai: 前缀 + OPENAI_BASE_URL(token-plan compatible-mode / maas),换厂商仅换 base-url+key§4 + 33 §7

待接线(⏳,P1–P5 计划内) ​

  • 身份贯穿:external_user_id/SSO 映射未做(P1 SSO)
  • Nacos 发布态唯一权威:官方仓库源已支持(SkillRepositoryConfigEntry git/filesystem),Nacos 接线未落地(P2)
  • RocketMQ/LiteTopic 任务队列:官方无 MQ(PG 中枢),企业化替换未做(P2 接缝)
  • 检查点/工作区六区/产物流水线/预算租约/仿真/调优闭环:属 15/21/25/26 设计,未运行时验证
  • 发布门禁/release_id/回滚演练:官方 definition 乐观锁已证,发布流程未建

发布前最后八问 ​

  1. 任取一条线上回答,能否还原完整 span 树与当时版本?
  2. 杀掉 Dataplane,正在跑的会话会发生什么?
  3. 同一任务投递两次,会不会扣两次费?
  4. 上游改了 MCP 工具,市场目录多久会失真?
  5. 出事时,谁有权一键停用某个租户或某个工具?
  6. 审批等了两小时,沙箱还在占着吗?审批完能不能按 task_id 恢复?
  7. 同一场景重跑两次,记录能否逐条对齐?SUT 边界被替身接管时会不会拒绝启动?
  8. 一个 BadCase 能否归到环境 / Harness / 模型中的一类,并说清下一版改什么、怎么回滚?

八问都能给出具体答案,再上线。

适用:2026 年开源 Agent 平台组件 | 初稿 2026-10

把 AI 工程讲到既懂也会用