夜雨聆风学习资料网

ARTICLE · 1011584

Chisle:一个插件把 AI 助手的 Token 砍到 52%!

Chisle:一个插件把 AI 助手的 Token 砍到 52%!

大家好,这里是「AI 开源提效指南」。

之前安装的技能和插件因为重装机器都丢了,最近Token不够用了,试着找找开源的技能,今天发现一个不错的!

有个叫 Jay Pokale 的开发者做了个小插件(JayPokale/Chisle),专门治 AI 助手话多的毛病。

装完之后不用改任何配置,Claude Code、Pi、Cursor 就会开始少说废话、少造抽象、少读没用的内容。

大家平时盯的是模型“说了多少”,其实 Token 大头往往是它“读了多少”。

作者拿自己五周的真实工作记录统计过:工具输出占了会话内容的 67.5%。更夸张的是,超过 8k 字符的大块输出只占工具结果数量的 4%,却吃掉了全部会话内容的四分之一。

先看下我安装前后的token消耗差异(codex):

  • 安装之前:

  • 安装之后:

Chisle 的做法是在会话的三个节点各加一层拦截:

  • 管它怎么写
  • 管它读到什么
  • 管它读多少

三层各自独立,也能单独开关。

同一模型、同一批 20 道题,套上这层规则后总 Token 掉到裸模型的 52%,平均每道题 69%,最坏的一天是 1.73 倍。对照的两个同类工具,最坏一天分别是 4.24 倍和 2.27 倍,翻车次数 6 次和 8 次,它只有 1 次。

它不挑客户端,也不挑模型,规则是纯文本,谁读都行。

这是作者提供的测试截图:

项目介绍

Chisle 是给 AI 编码助手用的效率规则集 + 运行时压缩器。

它在同一次会话里同时管三件事:模型怎么写、模型读到什么、模型读了多少。

前两件靠注入进上下文的规则正文,第三件靠接在工具返回事件上的压缩 hook。

读取习惯那一块也是规则,但目标是「别把整个文件读进来」。

和同类工具最大的区别是:所有压缩和改写都发生在本地,压缩器里没有模型调用、没有网络请求、没有第三方依赖;也没有强度档位需要你去调,只有开或关。

核心能力

  • 提示词规则注入:会话开始时把规则正文注入上下文(约 1.6k token),日常每一轮只补一句约 50 token 的提醒。只有全新会话发整份,恢复、清空、压缩这三种情况只回一行,避免同一份规则反复计费。
  • 七级代码阶梯:从「这东西需要存在吗」一路问到「能不能就一行」,停在第一个成立的台阶上。同时规定安全、错误处理、无障碍这些永远不在削减范围内。
  • 推理也计费:规则里单独写了一段,把阶梯定义成停止规则而不是一张要念出来的清单,明确「不要在已经排除的选项上重新权衡」,同时保留「理解问题这件事一步都不能省」。
  • 工具输出压缩:一个纯 Node 标准库的 PostToolUse hook,按白名单挑工具,把超大输出清洗、切中段、去重复之后,换掉模型真正读到的那份。
  • 可恢复的省略:切中段之前先把完整原文落到磁盘,替换标记里带上文件路径。之后想找某一行是精确搜索,而不是重跑命令——对不可重放的命令。
  • 返回结构还原:压缩后的文本必须按工具原本的返回结构塞回去,认不出的结构宁可不替换也不瞎猜。
  • 读取习惯规则:先按符号搜索再读匹配区间、从源头收窄输出、已经在上文里的文件不重复读、构建和测试日志只留失败项和汇总。
  • 九个客户端一条命令:自动探测机器上装了哪些助手,按插件、包、追加规则段、项目内规则文件四种方式分别安装。
  • 仓库里自带完整跑分工具:四组对照的实时测试脚本、离线回放脚本,以及带自动判分的正确性测试和真实仓库测试套件。

快速开始

1. 环境要求

  • Node ≥ 18(安装器和 npx 需要)
  • 要做输入侧压缩和 /chisle 开关切换,需要 Claude Code 或 Pi
  • 其余七个客户端只会拿到常驻规则那一部分

2. 安装方式

# npm,自动探测并逐个安装npx chisle# 或者用 shell 启动器curl -fsSL https://raw.githubusercontent.com/JayPokale/Chisle/main/install.sh | bash
# Windowsirm https://raw.githubusercontent.com/JayPokale/Chisle/main/install.ps1 | iex
# 只装某一个客户端,先看会动哪些文件npx chisle --only claude --dry-run# Claude Code 走原生插件市场claude plugin marketplace add JayPokale/Chisleclaude plugin install chisle@chisle# Pi 走包管理pi install npm:chisle

3. 使用示例

$ npx chisle...── summary ──  detected:  2  installed: claude-hooks, codexDone. Restart your agent. Type /chisle in Claude Code or Pi, or just start coding.If Chisle earns its keep, a star helps others find it: https://github.com/JayPokale/Chisle$ npx chisle --listchisle: detected agents:  ? Claude Code  ? Pi  ? Gemini CLI  ? Codex CLI  ? Cursor (project-scoped)  ? Windsurf (project-scoped)  ? Cline (project-scoped)  ? Kiro (project-scoped)  ? GitHub Copilot (project-scoped)Run npx chisle to install for the detected (?) agents.

4. 升级和卸载的两个坑

npx chisle@latest --update   # 刷新所有已经装了 Chisle 的客户端,不会新装任何客户端npx chisle --uninstall       # 全部清掉

这两个坑作者写在了 README 里,也是代码里的真实情况:

第一,直接重跑 npx chisle不会升级。

每条安装路径在检测到已经装过时都会跳过,于是升级命令会打印一段成功摘要,实际上一个文件都没改。

--update 就是把「强制覆盖」和「装过没有」两个判断绑在一起。

第二,npx chisle 可能拿到的是上一次缓存的包,所以升级必须加 @latest。

这两个细节在 CHANGELOG 都有。

另外,Cursor、Windsurf、Cline、Kiro、Copilot 这五个是把规则文件写进项目仓库的,所以要升级得去每个有规则文件的项目里各跑一次。

接入九个客户端

九个客户端每个带一条探测表达式和安装方式。 Claude Code 和 Pi 支持最完整,其余七个只拿静态规则。

客户端
会装什么
作用范围
探测依据
Claude Code
插件;装不上就退回独立 hook + settings.json 合并 + 状态栏徽标
全局
claude命令
Pi
包含扩展和技能包的 Pi 包
全局
pi命令
Gemini CLI
Gemini 扩展
全局
gemini命令
Codex
往 ~/.codex/AGENTS.md 追加一段带标记的规则
全局
codex命令或 ~/.codex 目录
Cursor
.cursor/rules/chisle.mdc
项目
cursor命令或 ~/.cursor 目录
Windsurf
.windsurf/rules/chisle.md
项目
命令或 ~/.windsurf、~/.codeium/windsurf 目录
Cline
.clinerules/chisle.md
项目
编辑器扩展目录里有没有 cline
Kiro
.kiro/steering/chisle.md
项目
kiro
 命令或 ~/.kiro 目录
GitHub Copilot
.github/copilot-instructions.md
项目
编辑器扩展目录里有没有 copilot

探测表达式的语法是自己定的,用 || 串多个条件:cmd: 查命令在不在,dir: 查目录,file: 查文件,vscode-ext: 去四个扩展目录里翻(.vscode、.vscode-server、.cursor、.windsurf 的 extensions/)。

命令探测用 sh -c "command -v xxx",Windows 上换 where——这也是它能跨平台的原因,整个安装器没引入任何依赖。

安装器的完整命令面

命令
作用
npx chisle
自动探测并安装
npx chisle --list
只探测,列出机器上装了哪些助手,不安装
npx chisle --stats
打印压缩器累计省下的字符数和 token 估算,只读
npx chisle@latest --update
刷新所有已安装的客户端,不新增
npx chisle --only <id>
限定某一个客户端,可重复使用
npx chisle --dry-run
只打印会动哪些文件,不做任何修改
npx chisle --force
即使已经装过也重装/覆盖
npx chisle --uninstall
 / -u
卸载
npx chisle --config-dir <路径>
覆盖 Claude 配置目录(默认 $CLAUDE_CONFIG_DIR 或 ~/.claude)
npx chisle --no-color
关掉 ANSI 颜色
npx chisle --help
 / -h
帮助

除了 /chisle 开关,Claude Code 里还有三个斜杠命令(定义在 commands/*.toml):

  • /chisle-audit [路径]:一次过审一个 diff、一个文件或整个仓库,同时列出过度设计的代码和啰嗦的注释文档,按能砍掉的量从大到小排,只报告不改动
  • /chisle-review [文件]:只看当前的 diff 或某个文件,挑出过度工程、只服务一个实现的抽象、重新发明的标准库
  • /chisle-help:速查卡

全部开关

# 默认模式:环境变量优先,其次是配置文件,最后默认 onexport CHISLE_DEFAULT_MODE=off# 或写进 ~/.config/chisle/config.json{ "defaultMode": "off" }# 输入侧压缩,Claude Code 和 Pi 共用的开关CHISLE_COMPRESS=0          # 关掉整个压缩CHISLE_COMPRESS_SCRUB=0    # 只关无损清洗CHISLE_COMPRESS_DEDUP=0    # 只关重复标记CHISLE_COMPRESS_SPILL=0    # 只关落盘副本(关了就没有找回原件的通道)CHISLE_COMPRESS_MAX_CHARS=8000  # 超过这个字符数才切中段CHISLE_COMPRESS_HEAD_LINES=60   # 保留开头多少行CHISLE_COMPRESS_TAIL_LINES=40   # 保留结尾多少行CHISLE_COMPRESS_TOOLS=bash,grep # 覆盖工具白名单CHISLE_UPDATE_CHECK=0     # 关掉版本检查(默认只在大版本更新时提一次,缓存三天)

三条线、三个 hook——Chisle 接在会话的哪几个瞬间

Chisle 的架构可以一句话概括:它没有常驻进程,没有服务端,全部逻辑接在客户端自己的生命周期事件上,只有三个挂点,各管一块。

1. 架构概览

三个挂点对应会话里三个不同频率的时刻,这是有意设计的——注入规则最贵(约 1.6k token),所以只在新会话发生一次;每轮提醒很便宜(约 50 token),所以每轮都发;压缩按需触发,只在工具真的返回了大块输出时干活。

会话开始(每个新会话一次)└─ SessionStart → chisle-activate.js → 写开关标志 + 注入整份规则   恢复/清空/压缩时只回一行每一轮提问(每次输入)└─ UserPromptSubmit → chisle-mode-tracker.js → 解析开关 + 补一句提醒每次工具返回(每次调用后)└─ PostToolUse → chisle-compress-output.js → 清洗 → 省略 → 去重 → 换回原结构

2. 模块职责

模块
职责
安装与探测
九个客户端的探测、安装、升级、卸载,按客户端类型选安装路径
设置写入
容错读写 settings.json,写入前把客户端会拒绝的条目清掉,原子落盘
配置解析
决定默认开关(环境变量 → 配置文件 → 默认开启),安全读写开关标志文件
会话开始 hook
写标志、按事件来源决定注入多少规则、提示配置状态栏、提醒旧设置失效、大版本更新提示
每轮 hook
从用户输入里解析开或关,落标志,追加本轮提醒
压缩 hook
白名单判断、抠出纯文本、去重、清洗、省略、还原返回结构、记账
模式解析
共用的正则集合,把口语说法判成开或关
状态栏脚本
纯 shell 渲染 [CHISLE] 徽标,从标准输入里的额度信息画进度条,并显示累计省下的 token
规则单源生成
一份规则正文生成五个客户端的规则文件,--check 模式供 CI 比对
客户端扩展
Pi 那一侧的注入、开关、徽标和 tool_result 压缩
基准套件
四组对照、正确性、真实仓库、离线回放四套测试

压缩器的三层与原件备份机制

既要把输出压小,又不能让模型因此看不到它本该看到的东西。

第一道关卡:哪些工具允许碰

白名单是写死的,而不是黑名单:

// hooks/chisle-compress-output.js:52// Read/Edit/Write 故意不在这里:它们的输出要参与精确匹配的编辑const SAFE_TOOLS = ['Bash', 'Agent', 'WebFetch', 'WebSearch', 'Grep', 'Glob'];

这件事必须用白名单。

原因:Read 的输出会被后面 Edit 的 old_string 拿去做精确匹配,如果把中间切掉,模型就会对着一段它从来没见过的文本做编辑。

这是会直接改坏文件的路径,所以只能用明确允许,而不能用默认允许、个别排除。

mcp__ 开头的工具单独放行,因为它们是只读信息工具。

这个决定有数据支撑:实测语料里最大的一块不可压缩的超大输出就是整文件的 Read,327 次调用、562 万字符。

压缩器碰不了它,于是规则侧单独给出了读取习惯那一块去上游解决。

第二道关卡:三层依次过

三层的分工是这样的:

第一层 scrub() 是无损的。

它去掉终端控制码、行尾空格,把连续三个以上换行并成一个,把连续四行以上的相同内容收成一行再加一个「重复 N 次」的标记。这一层不丢任何信息,只在超过 1k 字符时才跑。

第二层 compress() 是有损的,但损失被围了起来。留头 60 行、尾 40 行,中间整段切掉之前,先用一条正则把像报错的行挑出来(error、failed、exception、traceback、panic、timed out、cannot find 等 20 多个模式),最多挑 12 行、每行最多 300 字符,塞在标记下面。这一步正面回答了一个真实的失败场景:一个三千行的构建日志里唯一重要的那一行,很可能就在中间。

第三层是去重,只在同一个会话、同一个工具、逐字节完全相同的情况下触发,1800 多个字符才参与比较。

第三道关卡:省得不够就别替换

MIN_WIN = 64:压完如果没省下 64 个字符,就返回 null,客户端那边什么都不改。

这个门槛看着不起眼,但它是“不要为了省一点反而引入风险”的兜底。

原件备份机制:先把完整内容落到磁盘

替换标记里带上这个路径,于是恢复一行变成了精确搜索,而不是重跑那条命令。

作者写这段的时候讲得很清楚:重跑命令比省下的那几个字符更贵,而且在命令本身不可重放的时候根本就是错的。

目录权限 0700、文件 0600,只留最近 40 个,CHISLE_COMPRESS_SPILL=0 可以关。

更细的一层是:整段落盘失败也不影响压缩本身照常发生,因为这一步是尽力而为的——只是丢了那条找回原件的路径。

这种“主路径不依赖可选步骤成功”的写法在这个文件里出现了不止一次。

敢把翻车那次跑分一起发出来的基准

这个项目花在「证明自己有用」上的功夫,比花在功能上的多。

仓库里有一套完整的跑分工具,原始记录全部提交在 benchmarks/results/ 下。

四套测试,各答一个问题

套件
怎么跑
回答什么问题
四组对照
裸模型、caveman、ponytail、本工具,同 20 道题,四组只有注入的系统提示不同;用隔离的 HOME 和配置目录,避免个人设置泄漏进来
Token省了多少、最坏的一天有多坏
正确性
32 道数学题按精确匹配判分,20 道编程题按模型看不见的单元测试判分,不用模型当裁判
变短了会不会变错
真实仓库
五个小仓库各埋一个坑,用真实工具跑,跑完再把测试拷进去判分
在真正的仓库里,复用、找根因、少写文件这些规矩有没有生效
离线回放
把本机历史会话里的工具输出喂给同一个压缩函数
输入侧能省多少,零模型调用

主要结果

20 道题、四组对照、Token相对裸模型的百分比:

20 题总Token
平均每道题
最坏的一天
翻车次数
caveman
80%
98%
424%
6 / 20
ponytail
68%
91%
227%
8 / 20
Chisle52%69%173%1 / 20

分类对比:

切法
组数
cavemanponytail
Chisle
写代码类提示
12
74%
59%
44%
只要解释类提示
8
103%
104%
87%
短答案
10
84%
106%
84%
长答案
10
79%
59%
45%

和 caveman、ponytail、headroom 比,差的到底是什么

这四个是同一类问题上的四种解法:

特性
Chisle
cavemanponytailheadroom
核心定位
提示词 + 代码 + 工具输出压缩三块
只压提示词
只压代码
代理层改写请求
语言
JavaScript(运行时零依赖)
—
—
—
部署方式
npx
 一条命令,接在客户端事件上,无进程无服务
插件/规则
插件/规则
需要走代理
扩展能力
九个客户端,规则单源生成 + CI 防漂移
单一客户端为主
单一客户端为主
取决于代理实现
最坏一天
173%,20 次里 1 次
424%,6 次
227%,8 次
不适用
公开失败用例
是,连正确性报告一起发
否
否
否

选哪个其实取决于你怕什么:

  • 只在意长回复的提示词,caveman 那种专精路线在纯散文上确实更极致(在它占了上风的短代码提示那档,它也更强)
  • 在意代码少写抽象,ponytail 的惰性代码规则更专注
  • 但如果你在意的是最坏情况,也就是「本来就小的一段输出,会不会被这套规则搞大」,那 52% 的均值意义不大,1/20 的翻车率和 173% 的上限才是关键——对照组的 6/20 和 8/20 说明这不是罕见情况
  • 而如果你的Token大头在工具输出(跑 CI、看日志、翻代码库的都是),那另外几个根本没覆盖这一块,跟它们比是错位的

总结

Chisle 是一个给 AI 编码助手用的三块效率插件,它把「让模型少说废话」和「让模型少读垃圾」放在同一个安装包里,并且用一套公开的、连失败跑分一起发布的基准来支撑自己的说法。

想省token可以来试试!

参考资料

项目仓库:https://github.com/JayPokale/Chisle官方文档:https://chisle.jaypokale.me相关文章:https://github.com/JayPokale/Chisle/blob/main/benchmarks/results/2026-09-14-quality-and-agentic.md

免责声明:本文内容仅供学习交流,所述工具/方法请遵守相关平台服务条款及法律法规。如涉及第三方服务,请以官方最新政策为准。

🎯 觉得这份工具干货有用?希望收到您的支持:

  • ⭐ 星标 / 置顶公众号,第一时间解锁最新工具分享!
  • ✅ 点赞「推荐」,让更多技术伙伴发现优质干货!
  • 🔗 转发给团队小伙伴,一起高效提效!
  • 💬 底部留言区,告诉我您想找的工具/项目方向!

📬 长期追踪优质开源工具

  • 关注「AI 开源提效指南」|日更开源神器,玩转技术提效!
  • 回复 【容器加速器】,即刻开启你的高效探索之旅~

相关学习资料