personal-ai-operations-review · diff

git:20260828.055992f to git:20260828.e04d124

63 added, 76 removed. Audit A to A.

---
name: personal-ai-operations-review
description: 对已进入 OPERATIONS MODE 的 Personal AI / DSH 基础设施做只读运维复查:聚合 governance、durability、aic drift、proposal、memory/model/routing 与 personalization 行为监控(纠正率/重复纠正/选择泄漏),区分 NO ACTION、REVIEW、ACTION REQUIRED 与 EXTERNAL BLOCKER;用于日常健康检查、异常复盘、升级前检查,或用户询问“系统现在健康吗/需要管什么/AI 最近是不是又变难用了/个性化有没有退化”时。默认不修改 canonical,不为变绿而静默修复。
---
# Personal AI 运维复查
## 适用范围
用于已经完成建设、进入 `OPERATIONS MODE` 的 Personal AI Infrastructure。目标是回答“系统现在是否正常、哪些问题需要人处理、哪些只是已知外部阻塞”。
优先复用现有 Control Plane、Governance、Durability、Memory、Model/Trace、Harness Adapter 与 Personalization Calibration 的真实输出;不要重新实现底层检查。
## 不适用
- 不用于设计新的 Architecture Phase、重构 Control Plane、替换 MemoryProvider 或新增基础设施。
- 不用于直接批准 model admission、修改 routing/default model/preference、删除 provider/plugin/memory、清 Git 历史或处理其他 canonical mutation。
- 不把 `BLOCKED`/`DEGRADED` 自动视为系统失败;先判断它是否是治理系统正确暴露的真实约束。
- 用户明确要求实施某个 change 时,先转入既有 `Need → Impact → Proposal → Implementation → Verification → Regression` 流程,不在本 Skill 内静默执行。
- 不在普通任务中自动执行完整巡检。
+ ## 核心契约:Evidence Freshness & Cause-aware Classification
+
+ ### 1. Evidence Freshness 契约
+
+ 每个运维域必须同时输出:
+ - `status`: `HEALTHY` / `DEGRADED` / `BLOCKED` / `UNKNOWN`
+ - `evidence_state`: `CURRENT` / `LAST_KNOWN` / `UNAVAILABLE`
+
+ 语义:
+ - **CURRENT**:本轮成功执行真实检查。
+ - **LAST_KNOWN**:本轮实时检查不可用/失败,只能读取历史 verified evidence / baseline report。
+ - **UNAVAILABLE**:既无当前证据,也没有足够可信的历史证据。
+ - **严禁**:`LAST_KNOWN` 冒充 `CURRENT`;严禁在只有历史快照时宣称“与基线持平”。
+
+ ### 2. 检查失败与沙箱限制处理
+
+ - 检查脚本遇到 not found / permission denied / sandbox denied / timeout / path inaccessible 时:
+ - 属于 `OBSERVABILITY_EVIDENCE_LIMITATION`,不直接判为 `DEGRADED`。
+ - 若存在历史 verified 证据:`status = <last known status>`, `evidence_state = LAST_KNOWN`。
+ - 若无历史证据:`status = UNKNOWN`, `evidence_state = UNAVAILABLE`。
+ - 仅当真实规则/能力检查器本身执行并检出违规(如 capability drift > 0 或 static boundary violation)时,才标 `DEGRADED`。
+
+ ### 3. Durability 契约(Backup Age 与 Repo Durability 分离)
+
+ - 明确区分 backup age 数据集(sessions, broker, configs)与 repos 数据集:
+ - **BACKUP_RPO_AGE_BREACH**:仅指 sessions/broker/configs 等备份年龄超出 RPO 目标。
+ - **KNOWN_PRIVACY_BLOCKER / REPO_BLOCKED_PRIVACY**:因包含未脱敏信息拦截推送(如 novel-main),不得被描述为“备份年龄超期”。
+ - **REPO_UNPUSHED**:存在未推送提交。
+ - **REMOTE_UNAVAILABLE**:远程仓库不可达。
+ - 当且仅当 sessions/broker/configs 等存在真实超期(`BACKUP_RPO_AGE_BREACH`)时,才触发 `ACTION REQUIRED`。
+
+ ### 4. Overall Action Resolver
+
+ - **ACTION REQUIRED**:只有存在当前证据确认的**新真实运行故障**(actual Harness drift、actual backup age RPO breach、scope leakage、secret exposure、governance check failed、未预期 unpushed repo)。
+ - **REVIEW**:任一域证据不可用(`UNAVAILABLE` / `LAST_KNOWN`)、非关键指标恶化(over-personalization)、待裁决高危提案。
+ - **EXTERNAL BLOCKER**:仅存在已知外部 blocker(`BACKUP_KEY_CUSTODY`, `NOVEL_REPO_DURABILITY` 等),且无其他新异常。
+ - **NO ACTION**:全部健康且为当前证据,无 blocker。
+
## 工作流程
1. **定位真实入口**
- 找到 `agent-tools` 仓库根目录和当前分支/commit。
- 优先读取 `docs/personal-ai-operations.md`、当前 Architecture/operations handoff 与仓库已有脚本说明。
- 命令或路径不存在时标 `UNKNOWN`,先搜索仓库实际入口;不要凭旧报告猜路径。
2. **读取 Human-facing status**
- - 优先运行现有简版入口(已含 Personalization 行):
+ - 运行入口:
```text
python scripts/governance/personal_status.py
```
- - 再运行详细 governance status,例如:
-
- ```text
- python scripts/governance/gov_status.py
- ```
-
- - 记录每个域的 `HEALTHY / DEGRADED / BLOCKED / UNKNOWN` 及原因,不只记录总状态。
+ - 记录每个域的 `status`、`evidence_state` 及 `cause/reason`。
3. **验证 Control Plane 与 Harness drift**
- 运行已有 `aic validate`。
- - 对当前已登记 Harness 逐个执行 `aic diff <target>`;至少覆盖 dsh/codex/claude/gemini/switchboard(若 registry 现状不同,以实际登记为准)。
+ - 对当前已登记 Harness 逐个执行 `aic diff <target>`;覆盖 dsh/codex/claude/gemini/switchboard。
- 正常目标应为 `VALID / NO DRIFT`。发现 drift 时只报告 expected/actual/owner,不自动 apply。
4. **检查 Durability**
- - 读取现有 durability run ledger、RPO checker、计划任务最近状态与 latest verified backup。
- - 区分“计划任务成功”与“最近一次已验证备份仍在 RPO 内”;以后者为准。
- - 检查 repo durability 风险:unpushed commit、remote 不可达、privacy blocker。
- - `BACKUP_KEY_CUSTODY` 等已知外部条件必须保持原状态,不能为了总览变绿而改写。
+ - 运行 `python scripts/durability/rpo_check.py --json`。
+ - 区分 backup-age 与 repo privacy blocker;获取 per-dataset cause。
5. **检查 Governance / Proposals**
- - 读取 outstanding proposals 与高严重度 findings。
- - 对 model admission、dead config、memory review、duplicate rule 等 proposal 判断是否已有足够新证据值得人工裁决。
- - `open proposal` 本身不等于故障;只有需要用户决策或风险升级时标 `REVIEW`/`ACTION REQUIRED`。
- - 默认只显示数量、严重级别、是否新增(如 `4 open proposals, no new high-severity items`);不逐条展开内容。
-
- 6. **检查 Memory / Model / Routing 信号**
- - Memory:scope pollution、schema/provenance、stale/review candidate、conflict/supersede 异常。
- - Model:provider reachability、request success、fallback 增多、identity `suspicious`、ADMISSION_GAP 新证据。
- - Routing:非法引用、fallback chain 异常、overlay 绕过治理。
- - 只引用现有治理证据;没有证据时写 `UNKNOWN`。
-
- 7. **检查 Personalization(行为监控域)**
- - 运行:
-
- ```text
- python skills/personal-ai-operations-review/scripts/personalization_status.py
- ```
+ - 检查 `capability_gov.py` 与 `static_gov.py`。
+ - 检查 inbox open proposals,统计数量与高危项。
- - 数据链:`scripts/extract_user_msgs.py`(sessions → 仓库 `output/pref-calibration/user_messages.jsonl`,需 zstandard;缺数据时该域 UNKNOWN 并提示先运行此脚本)→ `scripts/behavior_metrics.py`(基线统计)→ 纠正分类 + 选择检查。
- - 至少读取:Correction Rate、Repeat Correction(优先于单发纠正)、Unnecessary Clarification、Over-Personalization、Scope Leakage;只能近似的指标明确标 `PARTIAL/UNKNOWN`,不得伪造精度。
- - 纠正必须分类:`NEW_MODEL_ERROR / KNOWLEDGE_ERROR / TASK_AMBIGUITY / PERSONALIZATION_FAILURE / REPEAT_PERSONALIZATION_FAILURE`;关键词只是候选触发器,判定须结合上下文。
- - Preference Selection 只检查不修改:默认最小规则集、按 task scope 注入、不相关 preference 不注入;发现 `OVER_PERSONALIZATION / IRRELEVANT_INJECTION / WRONG_SCOPE` → `Personalization: DEGRADED`;发现 project 间 scope 泄漏 → `ACTION REQUIRED`;两者都只产 Change Proposal。
- - 基线以 `output/pref-calibration/PERSONAL_AI_PREFERENCE_CALIBRATION_REPORT.md` 为 SSOT,每次重新读取,不硬编码;看趋势,不要求 Correction Rate → 0。
+ 6. **检查 Personalization(行为监控域)**
+ - 运行 `python skills/personal-ai-operations-review/scripts/personalization_status.py --json`。
+ - 缺实时数据时诚实输出 `LAST_KNOWN` 或 `UNAVAILABLE`,不伪造精度。
- 8. **分类行动**
- - `NO ACTION`:系统正常,或仅存在已知且无需当前处理的 blocker/proposal。
- - `REVIEW`:需要人工看证据并作裁决,但没有即时运行风险(含 personalization 趋势恶化)。
- - `ACTION REQUIRED`:出现新的真实故障、RPO breach、drift、secret/privacy 风险、scope pollution/leakage 等,应建立 Change Proposal。
- - `EXTERNAL BLOCKER`:需要当前系统外的条件(如 custody root、硬件、外部授权)才能关闭。
- - 已知外部 blocker(当前:`BACKUP_KEY_CUSTODY`、`NOVEL_REPO_DURABILITY/BLOCKED_PRIVACY`)状态无变化时只标 `KNOWN EXTERNAL BLOCKER`:不得每次巡检重新建议解决,也不得单独因此让 Overall 显示 `ACTION REQUIRED`。
+ 7. **输出 Human-facing 报告**
- 9. **需要修改时只产 Change Proposal**
- - 使用:`Need → Impact → Proposal → Implementation → Verification → Regression`。
- - 明确 affected SSOT、风险、验收、回滚与是否阻塞日常使用。
- - 除非用户在当前任务中明确要求实施,否则停止在 Proposal。
+ ```text
+ Personal AI Status
- ## 事实纪律
+ Infrastructure HEALTHY
+ CURRENT — aic VALID, 5 targets NO DRIFT
- - 区分 `FACT / INFERENCE / USER-PROVIDED / UNKNOWN`。
- - 以本次运行的命令、ledger、registry、trace、git 状态为事实;旧报告只作线索。
- - `NO DRIFT` 只证明 canonical 与 live 一致,不证明 live runtime 一定有效;存在运行时健康信号时应交叉验证。
- - 不为追求 `HEALTHY` 总状态隐藏 `BLOCKED_PRIVACY`、`WAITING_FOR_CUSTODY_ROOT`、`ADMISSION_GAP` 等真实状态。
+ Personalization HEALTHY / UNKNOWN
+ CURRENT / LAST_KNOWN — 证据说明
- ## 输出契约
+ Durability HEALTHY / DEGRADED
+ CURRENT — novel-main remains known BLOCKED_PRIVACY; backup-age datasets healthy
- 默认输出必须非常短(progressive disclosure:只有用户说“展开/为什么/具体哪个/看详细”时才下钻到底层证据):
+ Governance HEALTHY / UNKNOWN
+ CURRENT — capability_drift=0; static boundary clean
- ```text
- Personal AI Status
+ Proposals HEALTHY
+ CURRENT — 4 open, no new high severity
- Infrastructure HEALTHY / DEGRADED / BLOCKED / UNKNOWN
- Personalization HEALTHY / DEGRADED / BLOCKED / UNKNOWN
- Durability HEALTHY / DEGRADED / BLOCKED / UNKNOWN
- Governance HEALTHY / DEGRADED / BLOCKED / UNKNOWN
- Proposals HEALTHY / REVIEW
- External Blockers HEALTHY / BLOCKED
+ External Blockers BLOCKED
+ CURRENT — known, unchanged
Overall: NO ACTION / REVIEW / ACTION REQUIRED / EXTERNAL BLOCKER
```
- - 每个非 HEALTHY 项只给一句原因;禁止默认倾倒几十项底层检查结果。
- - 下钻时按需展示:aic diff、model governance、memory governance、durability ledger、correction patterns(`personalization_status.py --detail`)、proposal evidence。
- - 如果 `Overall = NO ACTION`,明确写“无需修改,继续正常使用”,然后停止,不主动提出新的架构优化。
- - 如果 `Overall = ACTION REQUIRED`,附一个最小 Change Proposal,但不要自行实施。
-
## 安全边界
- 默认只读;不调用 `aic apply`、不写 canonical、不 push、不 admit model、不改 preference/memory、不删除 config。
- 不输出 secret、token、decrypt key 或完整凭据。
- 不通过自动修复把真实异常变成绿色。
- 不新增 daemon、数据库、Harness 或外部通知服务。
- ## 验证
-
- Skill 包自身按仓库契约验证:
-
- ```text
- python scripts/validate_repo.py --strict
- python skills/skill-quality-gate/scripts/quality_report.py --root . --strict
- python -m unittest discover -s tests -v
- ```
-
- 实际运维复查至少要有:`personal_status/gov_status` 证据、`aic validate`、已登记 Harness 的 diff 状态、durability/RPO 证据、outstanding proposal 摘要、personalization 行为指标和 `git status`。