给AI Agent装上黑匣子:19683种状态的决策审计

开源工具用九维三进制状态编码Agent每步决策,实现可枚举、可比较、可复现的本地审计。
文章介绍开源项目 agent-audit-mcp,旨在解决 AI Agent 决策过程难以审计的问题。作者指出四类典型失败模式:权限越界、无证据的高风险结论、引用不可追溯和状态跳跃。核心方案是把单个决策步骤编码为九个观测维度、每维取 ⊕/0/⊖ 三态的三进制向量,共 3⁹=19,683 种状态,每个状态有唯一枚举键 idx 和平衡值 bal,任意两状态可用汉明距离比较。审计规则据此判定:权限越界触发 BLOCK,证据缺失或高风险触发 ALERT,相邻步骤汉明距离大于 4 触发 WATCH,否则 OK,阈值可通过环境变量校准。工具以标准 MCP 服务器形式提供三个接口,纯本地运行、零外部依赖,并附四个真实场景演示与 31 个测试。
为什么AI Agent的决策这么难审计
你上线了一个AI Agent,它跑RAG流水线、调用工具、写报告。一切看起来都很顺利,直到某天它悄悄调用了不该碰的工具,或者在零证据的情况下签下一个高风险结论,又或者在第三步和第四步之间自相矛盾。
问题不在于模型笨,而在于Agent的“自动驾驶”没有黑匣子。飞机装了黑匣子几十年,Agent也应该有。这正是开源项目 agent-audit-mcp 想解决的问题:把Agent的每一个决策编码成一个可枚举、可比较、可复现的状态。
作者总结出四种常见的失败模式:
- 权限越界:Agent接触了职责范围之外的工具或数据集。
- 无证据的高风险结论:满仓交易、删除操作、对外承诺,却没有依据。
- 引用不可追溯:结论是对的,但你不知道它从哪来。
- 状态跳跃逃逸:第一步保守,第二步激进,中间没有任何过渡。
难点在于:决策是一个过程,而日志只是一条流。要让过程可审计,首先要能把“一个决策步骤”变成可枚举、可比较的状态。
核心思路:一个决策 = 九维状态
agent-audit-mcp 用 9个观测维度来描述一个决策步骤:结构、功能、关系、属性、时间、上下文、因果、价值、演化。
每个维度取三种状态:⊕(+1)表示强/高于基线,0表示中立,⊖(−1)表示弱/不足。因此一个决策步骤就是一个九维三进制向量,例如 0⊖0⊖000⊖0。九个三进制位给出 3⁹ = 19,683 种状态,全零的中心状态枚举键为 idx = 9841。
这套设计把东方哲学中的三态思维(⊖/0/⊕)与现代AI工程结合起来,带来三个性质:可枚举(每个决策有唯一地址)、可比较(任意两个状态之间有汉明距离)、可复现(相同输入,每次得到相同状态)。
三进制编码与枚举键:这里的“九维三进制”指每个维度只取 -1、0、+1 三个值,因此用两位二进制即可无损表示一位三进制。将所有维度按固定顺序拼接后,可把整个向量视为一个三进制整数,再转换为十进制得到 idx。例如全零向量的 idx 并非任意值,而是 3⁹ 个状态按字典序排列后的中间位置,等于 (3⁹ - 1) / 2 = 9841。平衡值 bal 则是九个维度取值之和,反映决策整体偏向积极(>0)、中立(=0)或保守(<0)。这种编码让每一步决策拥有全局唯一的“地址”,便于建立索引、去重和轨迹比对,也是后续用汉明距离检测跳跃或漂移的基础。
判定规则:透明、可复现、可调
有了状态,审计就变成了几条清晰的规则:
| 触发条件 | 判定 | 动作 |
|---|---|---|
| v6上下文 · 权限越界 | 🔴 BLOCK | 停止执行、回滚、重新授权 |
| v7因果 · 证据缺失,或 v8价值 · 高风险 | 🟠 ALERT | 停止自动化,转合规审查 |
| 相邻步骤汉明距离 > 4(状态跳跃) | 🟡 WATCH | 人工复核跳跃点 |
| 以上均未触发 | 🟢 OK | 继续执行 |
阈值(什么算“高风险”、什么算“证据缺失”)都可以通过环境变量覆盖,方便用真实日志校准。规则对你完全透明——黑匣子内部没有另一个黑匣子。
汉明距离与状态跳跃:汉明距离原本用于衡量两个等长字符串在相同位置上不同字符的个数,这里被推广到九维三进制向量——只要某维度取值不同就计为 1。由于单步修正通常只应改变少数维度,相邻步骤距离过大意味着 Agent 的内部状态发生了剧烈跳变,可能对应提示注入、上下文丢失或目标被替换。阈值 >4 是一个经验起点:它允许最多四个维度同时变化,超过即视为需要人工复核。由于阈值可通过环境变量覆盖,团队可用真实运行日志画出距离分布,再选择既能捕获异常又不过度报警的分位点。作者下一步计划用该距离的累积变化检测“决策漂移”,即在长会话中逐步、隐蔽地偏离初始意图。
真实输出:引擎实际跑出的四个场景
项目自带的四个演示场景,输出均来自本地引擎:
- 🟢 正常咨询 → OK:第一步
0⊖0000000(idx=7654),第二步0⊕0⊕00⊕⊕0(idx=12283),无红线、无跳跃。 - 🟠 高风险满仓建议 → ALERT:第一步命中v8高风险;第二步进一步命中v7证据缺失 + v8高风险。
- 🔴 越权查询 + 选股建议 → BLOCK:第一步命中v6越界 + v7证据缺失;第二步命中v6越界 + v8高风险。
- 🟡 状态跳跃 → WATCH:单步从
0⊖0000000跳到⊕⊕⊕⊕⊕00⊕⊕(idx=19646),汉明距离为 7,触发人工复核。
每个步骤都会报告九维向量、idx、平衡值 bal、命中的红线以及建议处置方式。这才是一个真正可读的黑匣子。
架构与上手:三分钟跑起来
整体架构是标准的 MCP服务器:
Agent orchestrator ──┬── log hooks ──▶ signals
└── 9-dim audit ──▶ 9-dim states ──▶ trajectory audit ──▶ OK/WATCH/ALERT/BLOCK report
连接之后,可以直接在对话里说“审计这个决策步骤……”。工具提供三个方法:
audit_agent_step:审计单个步骤,输出九维状态编码与红线。audit_agent_session:审计整个会话轨迹,给出四级判定与处置建议。encode_state:九维向量与枚举键/平衡值互相转换,并计算汉明距离。
安装只需一行命令(要求 Python >= 3.10、MCP SDK >= 2.0):
pip install agent-audit-mcp
调用示例(节选):输入信号包含工具调用次数、意图、证据数量、引用数量、可追溯性和是否命中风险;输出会给出向量 [0,1,0,0,0,0,1,-1,0]、idx、bal、命中标记以及语义解释,例如“强/高于基线:步骤意图、决策证据链;弱/不足:风险等级”。
MCP(Model Context Protocol):MCP 是 Anthropic 提出并开源的协议,用于让大模型应用以标准化方式连接外部工具与数据源。它采用客户端-服务器模型:Agent 宿主作为客户端,通过 JSON-RPC 风格的接口发现并调用服务器暴露的“工具”“资源”和“提示”。对 agent-audit-mcp 而言,这意味着审计能力不需要侵入 Agent 代码,只要把该服务器注册到任意支持 MCP 的宿主中,模型就能在对话里按需调用 audit_agent_step 等三个工具。服务器声明工具的名称、参数模式和返回结构,宿主负责把模型生成的调用请求转发过来,因此同一套审计逻辑可跨框架复用,这也是文章强调“标准 MCP、开箱即用”的实际含义。
为什么值得关注
- 纯本地、零外部依赖:编码引擎是纯数学,整个审计在本地运行,决策轨迹不离开你的机器——这既是卖点也是合规点。
- 确定且可复现:相同输入每次得到相同判定,可以直接写进合规审计报告。
- 标准MCP:开箱即用三个工具,可作为日志钩子嵌入任何Agent流水线。
对企业而言,它把Agent治理从“炼金术”变成了可审计的状态机。
更大的图景
这套工具背后的三进制九维认知空间已发表为论文《Trinary Nine-Dimensional Cognitive Coordinate System: A Locatable and Generalizable Symbolic Cognition Layer》(DOI: 10.5281/zenodo.23437930)。
Agent会越来越自主,但“自主”不等于“无人监管”。给每个决策一个可枚举、可追溯的认知坐标,是让AI安全落地的基础之一。作者的下一个方向是用汉明距离检测Agent决策漂移。
项目以MIT协议开源,附带31个测试和四场景演示,可通过 pip install agent-audit-mcp 安装。
合规说明:本文及该工具仅提供决策审计编码与判定,不构成投资建议或证券咨询服务。
相关推荐

Claude Duet发布:主动式AI代理如何碾压全场
Anthropic发布主动式AI代理Claude Duet,继承Claude记忆与技能,云端独立运行,主动推送简报并等待敏感操作批准。本文还覆盖OpenAI的回应、Grok仪表盘与iPhone控制更新、Claude Code改造电视及ChatGPT、Gemini新功能。

KLD指标被误解:量化模型评测的真相
Reddit讨论指出KLD指标被严重误解:它只是量化模型的诊断工具,而非质量排行榜。本文解析KLD的测量原理、可操纵性风险,以及为何KLD高不代表模型差,帮助读者正确看待量化模型评测。

Argus:开源免费的智能体安全运营平台
Argus 是一款基于 MIT 协议开源、免费的智能体安全运营平台,面向 SOC 告警调查与响应场景。本文介绍其 agentic 设计思路、对安全团队的实际意义以及开源安全平台的落地挑战。