S1.5.1 Task 1.5

PostToolUse 标准化:日期错误从 12% 降到 0.3%,Token 减少 90%

当不同工具返回 Unix 时间戳、以分为单位的货币和 HTTP 状态码时,agent 会比错、算错、理解错。PostToolUse hook 在系统层面解决这个问题——确定性地、无感地,在 agent 看到任何东西之前。

三个标准化领域

时间戳

工具 A 返回 1704067200(Unix epoch)。工具 B 返回 "December 15, 2023"(字符串)。Agent 按字典序比较:1704067200 > "December 15, 2023"。结论:一篇 2024 年的论文发表在 2023 年的论文之前。错了。

PostToolUse hook 在 agent 看到之前把所有时间戳转成 ISO 8601。两者变成可比较的字符串。

货币

工具 A 返回 12750(分)。工具 B 返回 "$127.50"(带符号的字符串)。工具 C 返回 {"amount": 127.50, "currency": "USD"}(对象)。Agent 把分加到元上:12750 + 127.50 = 12877.50。荒谬的总额。

PostToolUse hook 把所有货币值标准化为 {"amount": <元>, "currency": <字符串>}

状态码

工具 A 返回 200(HTTP)。工具 B 返回 "OK"(字符串)。工具 C 返回 true(布尔值)。Agent 可能把 HTTP 201 误解为错误,把 “OK” 和 true 区别对待,或者识别不了工具特定的约定。

PostToolUse hook 标准化为一致的状态 schema。

标准化成效

部署日期和货币的 PostToolUse hook 后:

错误类型之前之后
日期比较错误12%0.3%
货币计算错误8%0.1%
状态码误解6%6%(尚未覆盖)
整体准确率78%91%

状态码错误持续因为 hook 还没标准化它们。模式有效——扩展覆盖剩余格式类型就行。

敏感数据脱敏

工具结果经常包含 agent 不需要也不该看到的数据:完整 SSN、信用卡号、内部员工 ID。两个风险:(1) agent 上下文中的安全暴露,(2) agent 偶尔会把敏感数据回显给客户。

PostToolUse hook 脱敏:SSN → "***-**-1234",卡号 → "****1234"。Agent 永远看不到完整的敏感数据,不可能回显。这确定性地解决了安全和客户安全两个问题——不是靠 prompt 指令”绝不重复 SSN”(偶尔会失败)。

Token 减少:90% 节省

平均 5,000 token 的工具结果中 agent 实际使用的字段只有约 500 token。8 次调用/会话 × 5,000 = 40,000 token 的工具结果,占 API 输入成本的 60%。

PostToolUse hook 只提取相关字段:5,000 → 500 token/结果。会话总计:40,000 → 4,000 token。工具结果 token 减少 90%,整体 API 输入成本降低约 54%。

分层转换设计

一个需要标准化、脱敏和提取的 PostToolUse hook 需要仔细分层:

  1. 格式标准化(无损)— 同样的数据,标准格式。ISO 8601 日期、元为单位的金额、一致的状态码。没有信息丢失。
  2. 敏感数据脱敏(有损但安全要求)— SSN、信用卡、token。Agent 本来就不需要这些数据;移除是安全要求。
  3. 提取相关字段(有损,仅经验证后)— 移除 agent 明确不使用的字段,通过使用分析验证。不要激进地剥离——只移除确认不需要的。

每层都有明确的理由。激进的全面压缩有移除 agent 偶尔需要的字段的风险,导致间歇性故障。

为什么不用基于 prompt 的格式处理?

PostToolUse hook 是:

  • 确定性的 — 从不遗漏转换
  • 集中化的 — 一个地方维护
  • 对 agent 不可见的 — 减少认知负担

基于 prompt 的格式文档是:

  • 概率性的 — agent 在负载下可能忘记规则
  • 分散的 — 8 个工具的说明散布在 prompt 各处
  • 额外开销 — 每次工具交互都增加推理负担

数据确认:基于 hook 的标准化达到 0.3% 的错误率,基于 prompt 的处理是 12%。

先审计,再标准化

对于有 8 个 MCP 工具且偶尔误解的系统:

  1. 审计所有 8 个工具的输出格式,识别不一致(哪些字段、哪些格式)
  2. 实现针对已识别不一致的 PostToolUse hook
  3. 验证标准化字段的错误率下降
  4. 扩展覆盖剩余格式类型

一句话总结: PostToolUse hook 确定性地标准化时间戳(12%→0.3% 错误)、货币和状态码;脱敏敏感数据让 agent 无法回显;提取相关字段实现 90% token 减少——分层为无损标准化 → 必需脱敏 → 验证后提取。