附录 C · 生产级验收清单

用法:上线前逐条勾。任何「安全决策」类条目没有明确答案,即视为不通过,不允许静默 fallback。 依据:第 16 章七层架构、第 17 章威胁模型、官方 DSH SAFETY.md、官方 Claude Code 权限/沙箱文档、社区 Heym 公开运行时默认值。


0 · 前置门禁(不通过则停止上线)

  • 已读并理解 SAFETY.md:未经过安全审计,不得视为生产就绪
  • Harness 运行在独立隔离边界内(一次性 VM / 容器 / 专用主机),不是开发者笔记本
  • 宿主上没有生产凭据;API key 为专用、限额、可撤销
  • 工作区可回滚(已提交 / 副本 / 快照),并有备份
  • DSH / 框架版本已固定,锁文件进 git
  • 架构文档里明确写了一句:本 Harness 不是安全边界
  • 已确认本系统不依赖 Harness 内部沙箱提供「保证」级隔离

① Guide · 事前引导

  • AGENTS.md 每条规则可追溯到一次真实失败(编号 F-xxx)
  • 每条规则写明:为什么 / 哪个文件负责 / 哪个测试兜底
  • 文件控制在约 300 行以内,优先指针而非拷贝大段文档
  • 大份文档做成 Skill,按需加载,不常驻上下文
  • 系统提示词只含模型无法从代码推断的信息
  • 「Done」定义为可机器判定的状态,附验收条件
  • 工具描述写清「何时用 / 何时别用」,枚举完整,参数带单位与例子
  • node 作为 tool 暴露时,仅 agent-provided 字段可由模型填写

② Constrain · 环境约束

  • Agent 生成代码跑在一次性容器中,不挂载 Docker socket
  • 容器不可用时 fail closed,不静默降级
  • 以 non-root 运行;Linux capabilities 全 drop;根文件系统只读
  • 文件系统 allowWrite / denyWrite / denyRead 显式列出
  • 网络默认 deny,allowedDomains 白名单
  • 权限 Deny 规则与沙箱规则同时配置(两者覆盖面不同)
  • failIfUnavailable: true,allowUnsandboxedCommands: false
  • 凭据:credentials.files 拒读 + envVars.mask 哨兵替换
  • 子 Agent / 子工作流调用深度有硬上限(参照值 5)
  • tool call 超时(参照 30s)、model response 超时(参照 60s)
  • tool loop 有最大迭代数;每轮估算 token
  • 上下文压缩阈值(参照窗口 80%),保留 system / first user / latest
  • 每次压缩写进 run trace
  • 没有任何「缺配置就走默认值」的安全分支

③ Gate · 副作用前审批

  • 只对 send / pay / delete / change records 等副作用设 gate
  • run 转为 pending,生成一次性 review link(参照 168h 过期)
  • 三种结果齐备:Accept / Edit & Continue / Refuse
  • 从 stored snapshot 恢复,不重跑已完成动作
  • 副作用接口幂等(重复投递不会产生重复效果)
  • 调度器的「不保证恰好一次」已由业务逻辑补偿
  • 没有「每步都 gate」造成的审核疲劳

④ Sense · 事后反馈

  • 每次 model call / tool call 记录 status、start、finish、duration
  • payload 脱敏且大小受限
  • OTel 导出 workflow / node / tool call span
  • eval suite 用例来自真实输入,含成功 / 失败 / 边界 / 对抗样本
  • 评分方式明确:Exact Match / Contains / LLM-as-judge
  • LLM-as-judge 固定 temperature = 0,并给出 rubric
  • 能确定性检查的项目未使用模型判断
  • 关键 AGENTS.md 规则有 coverage test,失败消息写明修复方法
  • 验证 Harness 改动的方法固定为:固定模型 → 只改一处 → 重跑同一 suite

⑤ Alert · 时间窗告警

  • 四类告警齐备:error / duration / cost / execution count
  • 全部基于时间窗,不是单事件阈值
  • 上线前用最近 24 小时数据做 backtest
  • cost budget 有硬上限与熔断动作
  • 告警有明确接收人与升级路径

⑥ Audit · 贯穿全程

  • always on,不可关闭
  • 每条 security-relevant action 一行:who / to what / succeeded
  • 字段名含 password / secret / token 的写入前替换为 ***
  • 日志外送到容器之外的持久存储
  • append-only 事件日志可重建任意一次模型请求
  • 日志保留期与合规要求已确认

⑦ Recover · 失败恢复

  • fallback 凭据 + fallback 模型已配置并演练
  • blocked message 可被 Error Handler 捕获,不崩整条流水线
  • 每条失败路径写明:重试 / 跳过 / 升级人工 + 是否幂等
  • 有卡住(stall)检测与自动恢复
  • 宿主重启后的恢复行为已验证
  • 事故响应六步(隔离→保全→重建→定责→固化→验证)已写成 runbook

8 · 规模化附加项(10+ 并发)

  • 每 Agent 一个 worktree,零共享可变状态
  • 任务板 + 原子任务认领,无双重派发
  • 按 session 的 token / USD 记账可见
  • 模型分层:规划用强模型,执行/校验用中档
  • 确定性节点(linter / 建分支 / push)与智能体节点分离
  • always-on 宿主 + 健康监控,不是「屏幕 + 祈祷」

9 · 上线后 30 天复审

  • 删掉「删了也不会再出错」的规则
  • 区分永久约束与补偿模型弱点的临时规则,后者已删除
  • 每次事故都新增了一条永久 eval 用例
  • 对照实验报告已归档,含失败样本与证伪条件
  • 告警阈值按实际分布重调(静态阈值会失效)

判据速查

判据 一句话
强制 vs 建议 需要 100% 生效的约束必须由代码执行
可逆 vs 不可逆 ctx.effect() 撤不回 git push
Gate 位置 只放副作用前
告警 一次失败是噪音,十分钟十二次是事故
验证 固定模型、只改一处、重跑同一 suite
隔离 Harness 内沙箱降低概率,Harness 外边界才提供保证
失败决策 缺 placement 让构建失败,缺 sandbox 让 run 失败

回到 第 16 章 · 第 17 章 · 总目录

本系列为本站原创教程,基线为微信公众号《DeepSeek Harness 最新高阶指南》(2026-11-05),并汇总 DeepSeek 官方仓库与文档站、Cordis / arXiv:2608.25512、以及 OpenAI / Anthropic / LangChain / Martin Fowler 等一手资料。每条引用均标证据等级,完整清单见 附录 B;未定位到一手来源的线索单列,未编造补位。DeepSeek Harness 为 developer preview,官方 SAFETY.md 明确「未经过安全审计、不得视为生产就绪」,命令与配置键可能随版本失效。资料截止 2026-11-06。姊妹篇:《FDE 入门到精通》。