# R2.7.9 任务报告

## 结果

已将 `/root/superapi/.worktree/codex-real-capture` 中可复用的真实 Codex 请求捕获能力整理并快进合并到 SuperAPI `master`，提交为 `13f4070 feat: add YAML-controlled skill diagnostics`。一次性 Codex capture header 未进入 master，实验 workspace 按用户要求保留。

## YAML 开关

owning YAML `config/superapi.yaml` 新增：

- `gateway.skillInjection.enabled`：控制 Responses instructions 注入；关闭时不解析、不修改 body。
- `gateway.requestCapture.enabled`：控制诊断捕获；关闭时即使请求携带捕获 header 也不落盘。
- `gateway.requestCapture.headerName`：声明内部 capture header，代理转发前删除。
- `gateway.requestCapture.outputDir`：声明捕获产物目录。

正式状态为 skill 注入开启、诊断捕获关闭。健康接口披露两个布尔开关，不披露 Secret。

## 实现

- `src/capture.ts`：受控 before/after 原始捕获、capture id 校验和递归脱敏。
- `src/diagnostics.ts`：L0 探针与配置驱动的脱敏函数。
- `scripts/superapi-cli.ts capture sanitize --id <capture-id>`：通过 owning YAML 和 profile SecretRef 生成 sanitized artifacts。
- `src/proxy.ts`：仅在 YAML 开启且请求携带合法 capture id 时捕获；内部 header 不转发上游。
- CLI 已按职责拆分到 293 行，未超过 300 行规范。

## 验证

- L0 注入开启：PASS，保留原 instructions，追加 1 个 skill。
- L0 注入关闭：PASS，skillCount 为 0，原 instructions 完全不变。
- L1 native：固定端口 `18159`，health 200。
- 公网入口：`https://superapi.hwpod.com`，DNS、Caddy block、health 均 ready。
- 捕获关闭真实 Codex：返回 `SUPERAPI_REAL_CODEX_SKILL_LOADED`，未生成 `.raw.json`。
- 捕获开启真实 Codex：Codex CLI `0.144.5`，provider `SuperAPI`，model `gpt-5.5`，HTTP 200，skillCount 1，上游错误 0。

最终 master 捕获 ID 为 `codex-real-20260718-03`：

- before：`/root/superapi/.state/captures/codex-real-20260718-03.before.sanitized.json`
- after：`/root/superapi/.state/captures/codex-real-20260718-03.after.sanitized.json`
- 两份文件权限均为 `0600`。
- body 顶层字段均为 13，input item 为 3，tools 为 11。
- instructions 长度从 21,335 增加到 21,508。
- 除 instructions 外的 body SHA-256 一致。
- sanitized artifacts 不含真实 Key、`/root` 路径、IPv4 或 UUID。
- capture header 未转发到上游。

## 最终状态

- `/root/superapi`：`master` commit `13f4070`，worktree 干净。
- 正式 native：ready，诊断捕获已关闭。
- 正式 public：ready，health 200。
- 实验 workspace：保留，仅 `config/codex-smoke.toml` 保有一次性 capture id 修改。
