核心功能:事前拦截资源滥用

agent-usage-guard 是一款专为 Claude Code 设计的插件(Mod),旨在防止用户在短时间内耗尽高额使用额度。该插件在 Claude Code内部运行,能够在资源过度消耗发生前进行拦截。它通过读取套餐的实时使用情况,对子代理的扇出(fan-out)、大量上下文轮换以及重试循环实施限制。

与事后补救不同,该插件在代理启动、提示词发送或工具调用执行前介入。无论当前使用量水平如何,它都会对本机所有 Claude Code 会话中的扇出和大量上下文进行封顶。当触发限制时,插件会在 Claude Code 原生对话框中向用户请示;若无人应答,则拒绝执行并告知模型原因,促使模型等待、批量处理或停止。/agent-guard report 命令可查看操作记录。

  • 感知套餐计划: 读取5小时及每周百分比使用情况,保留额度余量。
  • 一次性批准机制: 获得批准后,限制在重置或超时前不再重复询问。
  • 本地化与隐私保护: 无需联网,不启动额外进程。仅存储计数和粗略分类,绝不存储提示词、工具输入或模型输出。
  • 故障开放(Fails Open): 若钩子失效,事件继续执行,确保会话不被破坏。唯一例外是无法及时判断的代理,将被拒绝以促使其重启。

开发背景:避免额度瞬间耗尽

该插件源于作者的一次经历:单个研究提示词在最高努力程度下,生成了394个子代理调用(其中341个并行运行),在十分钟内消耗了8400万上下文令牌,导致“已达到 Claude 使用限制”并被锁定。过去六十天的日志显示,此类锁定发生了12次,另有166个持续十分钟的代理爆发窗口。这种故障模式由大上下文、快速工具循环、并行代理和盲目重试共同导致。

功能详解与默认规则

插件通过以下规则消除风险因素:

区域规则默认值后果
套餐窗口新代理需批准的填充比例80%询问;批准持续至窗口重置
新代理被拒绝的填充比例95%拒绝
5小时窗口上升速度阈值20点/10分钟询问
代理本机所有会话中并发代理数4询问
每10分钟启动或恢复的代理数12询问
每10分钟子代理处理令牌数1000万询问
子代理递归深度深度 1拒绝
上下文保持回合有界的上下文阈值30万令牌添加备注
重读上下文阈值50万令牌询问:压缩、发送或取消
高上下文时每10分钟工具调用数20次 @ 40万询问:继续、压缩或停止
重型会话缓存过期条件15万令牌,空闲1小时重写前询问
循环相同工具调用失败次数3次拒绝重试
10分钟内被拒绝的代理调用数5暂停生成10分钟

交互逻辑: 问题出现在 Claude Code 原生对话框中。若用户允许,条件在一段时间内保持宽松(如套餐窗口直至重置,代理计数维持10分钟)。若拒绝或忽略,Claude 将在接下来10分钟内不启动代理,且不再询问。用户可通过输入字符(如“改用 Haiku 代理”)进行响应。

无人应答处理: 在 claude -p、Agent SDK 和 dontAsk 模式下,直接拒绝而非询问。拒绝信息会逐级升级,指出必须由用户决定。

不干预内容: 不阻止后台任务通知或其他会话消息。自 v2.1.234 起,Claude Code 会在达到限制时自动等待重置,插件职责是避免达到该限制。

命令与可见性

常用命令包括:/agent-guard [status] 查看状态,/agent-guard allow 解除限制,/agent-guard pause 暂停所有限制,/agent-guard resume 恢复限制,/agent-guard report [days] 显示记录。

针对 Claude Code v2.1.295 测试的覆盖范围:

  • 拦截: 子代理、队友、工作流代理及通过 SendMessage 恢复的子代理。
  • 不计入/不可见: Claude Code 内部代理(如提示建议)、各自终端窗格中运行的队友、其他机器上的会话、API自行运行的工具。
  • 部分支持: /subtask 分叉等非 agent.spawn 启动的操作仅计数不拦截。

插件在终端 claude、桌面应用 Code 标签页、claude -p 和 Agent SDK 中运行,但不支持桌面应用的 WSL 会话。

安全、隐私与配置

插件约2400行 TypeScript 代码,无外部依赖。它不发起网络请求,不存储提示词文本、工具输入或模型输出,仅保存计数、日志和状态于本地 JSON 文件。超过90天的日志会自动删除。

配置可通过环境变量或 ~/.claude/settings.json 设置。关键变量包括 AGENT_GUARD(开关)、AGENT_GUARD_AGENT_MAX(最大并发代理数)、AGENT_GUARD_CONTEXT_WARN(上下文警告阈值)等。休眠默认值假设订阅享有一小时提示缓存,API 密钥用户需设置 AGENT_GUARD_DORMANT_SECONDS=300。

架构与测试

核心规则位于框架无关的 core/ 目录,Claude Code 插件是其首个适配器。测试通过 claude plugin validate . --strict 和 claude plugin test 进行,涵盖单元测试及真实事件触发测试,无需会话、模型或网络。

许可证:MIT