状态:大纲
核心论点
Audit log 只记录 what 不记录 why 是一个老问题。INTENT convention 用 bash 注释嵌入推理,零工具开销。这个设计是被约束逼出来的:Claude Code 的 hooks 无法访问 conversation context,所以推理必须嵌入命令本身。约束驱动设计(constraint-driven design)本身值得展开。
大纲
1. 问题:Audit Log 的 Why 缺失
- 传统 audit log 记录了谁、在什么时间、对什么资源、做了什么操作
- 缺失的是 why:为什么做这个操作?基于什么观察和推理?
- 对人类 SRE:why 在 incident channel 的对话里,或者在 postmortem 里
- 对 agent:conversation context 会被压缩,why 消失得更快
2. 约束驱动的设计
- Claude Code hooks 的架构限制:PreToolUse hook 只能看到即将执行的命令,看不到 conversation
- 这个限制把设计空间收窄到:推理信息必须编码在命令本身里
- 解法:bash 注释
# INTENT: <reasoning>
- 零工具开销、零临时文件、audit hook 用 regex 提取
3. INTENT Convention 具体设计
1 2
| kubectl scale deploy payments-api --replicas=1 -n payments
|
- 格式:一行,重点是 WHY 不是 WHAT(命令已经说了 what)
- 规则:必须在同一个 Bash 调用中,命令之前
- 门控:没有 INTENT 的 mutating command 被标记,gate 会提醒
4. PRE/POST Hook 配对
1 2 3 4 5 6
| [PRE] why 2 pods OOM crashlooping... cmd scale deploy payments-api --replicas=1
[POST] why ↳ ... [inherited from PRE] cmd scale deploy payments-api --replicas=1 out deployment.apps/payments-api scaled
|
- PreToolUse: 提取 INTENT + 做语义门控
- PostToolUse: 记录执行结果 + 继承 PRE 的 INTENT
- 配对形成完整的因果链
- Agent 有执行权限,同时读取 pod 日志、event、annotation
- 这些内容是 untrusted external data,和 web 应用的用户输入同等级别
- Prompt injection via cluster output 是被严重低估的攻击面
- 防御:CLAUDE.md 硬编码规则 + 人工确认门控
- 类比:web 安全里 SQL injection 的教训 → agent 安全里 prompt injection 的类比
6. 推理真实性的未解问题
- CoT(Chain of Thought)可能是 post-hoc rationalization,不反映真实决策逻辑
- INTENT convention 让推理显式化了,但不保证推理的真实性
- 这是一个 epistemological 问题,影响 audit 可信度
- 当前立场:显式的可能不真实的推理 > 完全不可见的推理
涵盖的 Topic
- Topic 6: INTENT convention
- Topic 8: Untrusted input / prompt injection via cluster output
源文件引用
contexts/thought_review/agent_k8s_safety_infra_2026-03-28.md — INTENT convention 完整设计、hook 实现细节、untrusted input 分析、cluster tiering(本篇引用 INTENT 和 untrusted 部分)
contexts/thought_review/agentic_control_theory_primitives_20260413.md — Hook 作为原语的理论位置
contexts/thought_review/agent_sre_production_systems_synthesis_20260330.md — INTENT convention 解决 audit log「what without why」问题