各智能体上的行为
微技能和循环守卫在每个智能体上的工作方式相同。每个智能体各自学习:事实、工具证据,以及循环守卫对「通常一轮」的感知,都按智能体和仓库分别保存,而设置是共享的。
工具剪枝排除什么
工具剪枝通过每个智能体自身的设置起作用,因此它能排除的东西各不相同:
| 智能体 | 排除的对象 | 写入位置 |
|---|---|---|
| Claude Code | 单个工具 | .claude/settings.local.json |
| Codex | 能力包(capability packages:collaboration、goals、image_media) | .codex/config.toml |
| Copilot CLI | 整个 MCP 服务器(当其下所有工具均未用过时) | .github/copilot/settings.local.json |
| Pi | 无(Pi 默认只加载四个工具) | — |
| opencode | 暂不支持 | — |
工具剪枝只添加它自己的条目,绝不动你写的拒绝规则;它创建的配置文件会被排除在 git 之外(.git/info/exclude)。在 Claude Code 上,说明它排除了哪些东西的「会话起始行」只显示在详细记录(Ctrl+O)中,因此请用 /tokeneconomizer:toolprune 查看。toolprune restore 只移除插件的条目,不动其他东西,而你归还的工具不会再被移除。
如果插件无法安全地编辑某个文件(你的仓库提交的 .codex/config.toml、不是合法 JSON 的配置文件、指向仓库之外的符号链接),该列表会保持为「提议」状态,会话起始处会说明原因;toolprune apply 会再试一次。
当某一轮卡住时
循环守卫首先学习这个仓库里的一轮通常要跑多久:它会等到此处有 e 轮「正常结束」——即自行结束,且最后一次编辑后没有失败的检查。此后,出现循环迹象(同样的失败反复出现,或错误不断堆积)的一轮会被送交裁判。有一种情况无需裁判即可重定向:某一轮在反复空转同样的编辑、撞上同样的失败时,运行长度超过了通常长度的 b 倍。
如果一轮在重定向之后仍然卡住,你会看到一行以「如何停下它」结尾的提示:
TokenEconomizer:这一轮在重定向之后看起来仍然卡住(judge-stuck@0.82,46 次工具调用)。按 Esc 中断它。
这行出现在哪里、以及如何停下这一轮,在终端 UI 与无头运行中分别如下:
| 智能体 | 交互模式:出现在哪里 | 如何停止 | 无头模式:出现在哪里 | 如何停止 |
|---|---|---|---|---|
| Claude Code | 在 Claude 的回复中(详细记录 Ctrl+O 亦有) | Esc | 在最终回复中 | Ctrl+C |
| Codex | 在对话中(↳ Hook · …) | Esc,然后 /stop | 不显示(事后记入 status) | Ctrl+C |
| Copilot CLI | 在对话中(● TokenEconomizer: …) | Esc 两次 | 在 stdout 上 | Ctrl+C |
| Pi | 作为一条通知(notify) | Esc | 在 stderr 上 | Ctrl+C |
| opencode | 作为一条通知(1.x Toast / 2.x stderr) | Esc | 在 stderr 上 | Ctrl+C |
无头运行指 claude -p、codex exec、copilot -p、pi -p、opencode run。
- Claude Code 只在详细记录(Ctrl+O)中显示插件自己的行,因此插件会让 Claude 在回复里把这行再说一遍;模型表述可能不同,也可能略过。
- Codex:Esc 会中断这一轮,但它启动的命令会一直运行到
/stop。codex exec不打印任何钩子消息。 - Pi:Ctrl+C 会结束无头运行,但它启动的命令会一直跑到结束。
- opencode 2.x 会把这行打印到 opencode 服务器的错误输出,而不在其终端 UI 中。
在无头运行中可能无人盯着,因此被标记的一轮会一直跑到结束或触及智能体自身的限制;之后,te status 会统计重定向与「仍然卡住」的提示。
模型调用与 API 密钥
在默认配置下,插件唯一的模型调用来自循环守卫:当某一轮出现循环迹象时询问裁判模型,以及在裁判认定卡住时生成简短的重定向。工具剪枝从不调用模型。开启微技能(microskills=on)后,会额外增加每隔 microskills_propose_every 个会话运行一次的事实提议器(设为 microskills=envfacts 则完全不调模型)。
这些侧调用全部经由你自己的智能体 CLI 执行:claude -p、codex exec、移除所有工具后的 copilot -p、仅加载模型的 pi -p,以及禁用写权限的 opencode run。因此它们直接复用你当前会话的订阅套餐或 API 密钥,并计入 status 命令展示的账单中。
想了解每个智能体钩子验证的底层技术细节,请阅读 插件验证与状态隐私,或直接查阅上游仓库的 docs/PLUGIN.md 与 docs/ARCHITECTURE.md。