> 📜 用户协议(User Agreement)
> 1. 本 Skill 仅供学习与参考用途。使用本 Skill 产生的任何结果,由使用者自行承担全部责任;本 Skill 不提供任何明示或暗示的保证。
> 2. 涉及法律、财务、税务、投资、医疗等专业决策时,请务必咨询持证专业人士。
> 3. 本代码受版权法保护,未经授权复制、反向工程或商业利用将被追究法律责任。
<!-- user-agreement-injected -->
> ⚠️ 本内容仅供一般信息参考,不构成法律、财务、税务、投资或医疗建议。
> 涉及合同签署、报税、投资、诊疗等专业决策时,请务必咨询持证专业人士,并由使用者自行承担决策后果。
<!-- professional-disclaimer-injected -->
AI Token节省器
> CLI 代理减少 LLM Token 消耗 60-90%,单 Rust 二进制零依赖,适配主流 AI 编码工具
一、能力边界(一页纸速查卡)
适用对象与场景判定
| 对象/场景 | 是否适用 | 判定标准与说明 |
|---|---|---|
| 使用 Claude Code / Cursor / Windsurf 的开发者 | ✅ 适用 | 通过 CLI 代理自动压缩上下文,减少输入 token |
| 处理长文档/大仓库代码的 AI 编码场景 | ✅ 适用 | 输入超过 10K token 时收益明显,可减少 60-90% |
| 需要保留完整语义的代码审查 | ⚠️ 部分适用 | 可压缩注释和空行,但函数体、类定义、逻辑分支必须保留,建议使用保守策略 |
| 需要逐字精确输出的场景(如代码生成、配置文件) | ❌ 不适用 | 压缩可能改变代码结构或遗漏细节,建议关闭本工具 |
| 非 CLI 环境(纯 GUI 操作、无终端权限) | ❌ 不适用 | 需通过命令行调用,无 GUI 版本 |
| 处理二进制文件(图片、PDF、压缩包、音视频) | ❌ 不适用 | 仅支持文本类文件(.txt/.md/.json/.rs/.py/.js/.ts/.go/.java 等) |
| 访问私有网络或需认证的外部服务 | ❌ 不适用 | 仅支持公开 URL,不支持内网地址、需登录的页面 |
| 执行代码编译、运行、调试 | ❌ 不适用 | 仅做文本层面的压缩处理,不涉及任何执行操作 |
能做(7项核心能力 + 3项扩展能力)
- 代码上下文压缩:将大文件/多文件代码库压缩为语义等价的高密度摘要,保留函数签名、类结构、关键逻辑、TODO 标记
- 对话历史精简:将冗长的多轮对话压缩为结构化要点,保留决策记录、待办事项、用户偏好、已确认的约束条件
- 文档智能摘要:将长文档(README、API 文档、设计文档)压缩为结构化摘要,保留标题层级、关键定义、使用示例
- URL 内容提取:从公开网页 URL 提取正文内容并压缩为要点(需网络可用,支持 http/https)
- 批量文件处理:一次处理多个文件/目录,按统一规则压缩并输出汇总报告,失败文件单独列出
- 自定义压缩策略:通过参数调整压缩率(保守/标准/激进),控制信息保留粒度
- 结构化输出:支持输出为 Markdown / JSON / 纯文本三种格式,便于后续处理
- (扩展)多轮迭代压缩:对超大文本(>100K token)支持分块压缩后合并,避免单次处理超限
- (扩展)自定义保留规则:通过
--keep参数指定必须保留的关键词/正则表达式,如--keep "TODO|FIXME|NOTE" - (扩展)压缩前后对比报告:输出压缩率、保留率、置信度分布,便于质量审计
不做(5项边界声明 + 3项明确拒绝)
- 不做:不执行代码编译、运行或调试,仅做文本层面的压缩处理
- 不做:不保证压缩后内容 100% 保留原始语义,低置信度会标注 [需核实]
- 不做:不访问私有网络或需要认证的外部服务(仅支持公开 URL)
- 不做:不处理二进制文件(图片、PDF、压缩包),仅支持文本类文件
- 不做:不修改原始文件,所有输出均为新生成的结果
- 明确拒绝:不压缩小于 500 token 的输入(收益过低,直接原样输出)
- 明确拒绝:不处理加密或混淆的代码(无法保证语义等价)
- 明确拒绝:不承诺压缩后内容可用于法律/医疗等需要逐字精确的场合
> 如果用户的需求超出以上边界,明确告知无法处理并说明原因,不强行执行。
二、触发方式(说大白话就能用)
触发词表(12类场景,覆盖精确指令/通用/口语化)
| 触发词 | 场景类型 |
|---|---|
| rtk-token-saver | 精确指令 |
| token节省 | 通用场景 |
| 减少token消耗 | 通用场景 |
| 省token | 口语化 |
| token优化 | 通用场景 |
| 降低token用量 | 通用场景 |
| token压缩 | 功能描述 |
| 省点token | 口语化 |
| token省着用 | 口语化 |
| 帮我压缩这段代码 | 功能描述 |
| 把文档精简一下 | 功能描述 |
| 对话太长帮我浓缩 | 功能描述 |
大白话触发示例(用户原话 → 触发动作 → 默认参数)
| 用户可能会说 | 触发动作 | 默认参数 |
|---|---|---|
| "帮我省点token,这个文件太大了" | 启动压缩流程,识别文件类型并应用默认压缩策略 | 标准策略 + Markdown 输出 |
| "把这段对话精简一下,token不够用了" | 启动对话历史压缩,提取决策点和待办 | 标准策略 + Markdown 输出 |
| "这个README太长了,压缩一下给我看" | 启动文档摘要,保留标题层级和关键定义 | 标准策略 + Markdown 输出 |
| "批量压缩一下src目录下的所有文件" | 启动批量处理,按统一规则压缩并输出汇总 | 标准策略 + Markdown 输出 |
| "这个网页内容帮我提取要点" | 启动 URL 提取,抓取正文并压缩为要点 | 标准策略 + Markdown 输出 |
| "用最激进的压缩方式处理这个" | 启动压缩,应用激进策略 | 激进策略 + Markdown 输出 |
| "输出成JSON格式给我" | 启动压缩,指定输出格式为 JSON | 标准策略 + JSON 输出 |
| "这个代码库帮我压缩成摘要,我要给另一个AI看" | 启动代码上下文压缩,生成结构化摘要 | 标准策略 + Markdown 输出 |
| "省着点用token,帮我处理这个项目" | 启动项目级压缩,按目录结构生成摘要 | 标准策略 + Markdown 输出 |
| "这段代码太长了,帮我精简一下再贴给AI" | 启动代码压缩,保留函数签名和关键逻辑 | 标准策略 + Markdown 输出 |
| "把这份设计文档浓缩成要点" | 启动文档摘要,保留标题层级和关键定义 | 标准策略 + Markdown 输出 |
| "对话记录太长了,帮我提炼一下重点" | 启动对话历史压缩,提取决策点和待办 | 标准策略 + Markdown 输出 |
三、标准流程(5分钟上手路径)
Step 1: 收集最小信息集
向用户确认以下关键信息(缺失则引导补采,不臆测):
- 输入来源:文件路径 / 目录路径 / URL / 直接粘贴的文本
- 输出格式:Markdown(默认)/ JSON / 纯文本
- 压缩策略:标准(默认)/ 保守 / 激进
- 特殊要求:保留特定字段、排除特定文件、自定义保留规则等
Step 2: 执行核心流程
- 解析输入:识别输入类型(单文件/多文件/URL/文本),读取内容
- 预处理:
- 代码文件:识别语言类型,提取函数/类/关键逻辑/TODO 标记
- 文档:识别标题层级,提取关键段落、定义、示例
- 对话:识别消息角色,提取决策点、待办、用户偏好 - 压缩处理(按策略执行):
- 保守策略:保留 90% 内容,仅删除空行和重复注释,保留所有代码逻辑
- 标准策略:保留 70% 内容,压缩冗余表达,保留所有结构(函数签名、类定义、关键逻辑)
- 激进策略:保留 40% 内容,仅保留函数签名、类定义、关键逻辑、TODO 标记 - 置信度标注:
- 置信度 ≥90%:直接输出,不标注
- 85%-90%:标注"建议复核"
- <85%:标注"[需核实]",并说明不确定点
Step 3: 输出与校验
- 将结果整理为约定格式输出
- 自查清单:
- [ ] 字段完整性(是否遗漏关键信息)
- [ ] 格式正确性(是否符合输出格式要求)
- [ ] 置信度标注(是否所有低置信度内容都已标注)
- [ ] 压缩率报告(输出原始 token 数 vs 压缩后 token 数) - 有疑问时向用户二次确认
四、异常处理(错误码体系 + 重试/超时/降级策略)
错误码体系
| 错误码 | 场景 | 标准化话术 | 修正步骤 |
|---|---|---|---|
| E001 | 输入为空 | "请提供待处理的内容,格式为:文件路径 / 目录路径 / URL / 直接粘贴的文本" | 1. 引导用户提供输入 2. 若用户不确定,给出示例路径 |
| E002 | 文件不存在 | "找不到文件:{路径},请确认路径是否正确" | 1. 检查路径拼写 2. 尝试相对路径/绝对路径 3. 若仍失败,请用户手动确认 |
| E003 | 输入格式错误 | "输入格式不符合要求,支持:文本文件(.txt/.md/.json)、代码文件(.rs/.py/.js/.ts/.go/.java)、URL" | 1. 列出支持的格式 2. 建议用户转换格式后重试 |
| E004 | 超出能力边界 | "这超出了本工具的能力范围。本工具支持文本类文件压缩,不支持二进制文件(图片/PDF/压缩包)" | 1. 说明能力边界 2. 建议替代方案(如使用其他工具) |
| E005 | 置信度过低 | "结果无法确定,以下内容可能不准确:[列出不确定项]" | 1. 标注 [需核实] 2. 建议用户人工复核 3. 可尝试降低压缩率重试 |
| E006 | URL 访问失败 | "无法访问该 URL,请确认链接是否公开可访问" | 1. 检查 URL 拼写 2. 确认网络连接 3. 建议用户粘贴文本内容替代 |
| E007 | 输出格式错误 | "输出格式生成失败,请重试或选择其他格式" | 1. 重新生成 2. 若持续失败,降级为纯文本输出 |
| E008 | 输入过大(>100K token) | "输入内容过大,建议使用分块处理或直接提供文件路径" | 1. 自动启用分块压缩 2. 若仍失败,建议用户拆分输入 |
重试/超时/降级策略(可执行配置)
| 场景 | 策略 | 配置示例 |
|---|---|---|
| URL 访问超时 | 重试 2 次,间隔 2 秒,超时 10 秒 | --url-timeout 10 --url-retries 2 --url-retry-interval 2 |
| 批量处理中单个文件失败 | 跳过失败文件,继续处理其余文件,最后汇总报告 | 默认行为,无需配置 |
| 压缩结果置信度 <85% | 自动降级为保守策略重新压缩 | --auto-degrade 参数启用 |
| 输出格式生成失败 | 自动降级为纯文本输出 | 默认行为,无需配置 |
| 输入过大(>100K token) | 自动启用分块压缩(每块 50K token),合并结果 | --chunk-size 50000 参数调整 |
| 连续失败 3 次 | 停止处理,输出错误报告,建议用户检查输入 | 默认行为,无需配置 |
五、常见问题(FAQ 速查)
基础问题
- Q1: 处理速度如何? → 单文件 1 秒内,10 个文件以内 5 秒内,大目录(100+ 文件)约 30 秒
- Q2: 会不会出错? → 低置信度内容会标注 [需核实],请人工复核关键结果。压缩率越高,出错风险越大
- Q3: 支持哪些输入? → 文件路径 / 目录路径 / URL / 直接粘贴的文本
进阶问题
- Q4: 如何调整压缩率? → 使用
--strategy参数:conservative(保守)/standard(标准)/aggressive(激进) - Q5: 如何输出为 JSON? → 使用
--format json参数,输出结构化 JSON 便于程序处理 - Q6: 如何排除某些文件? → 使用
--exclude参数,支持通配符,如--exclude "*.test.rs" - Q7: 压缩后如何验证质量? → 对比压缩前后的关键信息保留率,检查函数签名/类定义是否完整
- Q8: 如何保留特定关键词? → 使用
--keep参数,支持正则表达式,如--keep "TODO|FIXME|NOTE" - Q9: 如何处理超大文件? → 自动启用分块压缩,每块 50K token,合并结果。可用
--chunk-size调整
常见坑(避坑指南)
- 坑1:压缩代码文件时丢失函数体 → 激进策略下可能只保留函数签名。如需保留函数体,请使用标准策略
- 坑2:URL 内容抓取不完整 → 部分网站有反爬机制。建议直接粘贴文本内容
- 坑3:中文文档压缩后语义偏差 → 中文压缩比英文更难保持语义。建议使用保守策略,并人工复核
- 坑4:批量处理时个别文件失败 → 不会中断整个流程,失败文件会在报告中单独列出
- 坑5:JSON 输出格式不符合预期 → 检查是否使用了
--format json,且输入内容是否为文本类 - 坑6:压缩后代码无法通过编译 → 压缩可能删除了必要的语法结构(如分号、括号)。代码文件建议使用保守策略
- 坑7:对话压缩后丢失关键决策 → 对话压缩默认保留决策点和待办,但若对话过于冗长,可能遗漏。建议压缩前明确指定"重点保留什么"
六、渐进式学习路径
第一层:快速上手(5分钟)
- 阅读"一、能力边界"了解适用范围
- 按"三、标准流程"执行一次基础压缩
- 使用默认参数(标准策略 + Markdown 输出)
- 参考"二、触发方式"中的大白话示例,直接说出需求
第二层:进阶用法(30分钟)
- 学习"七、高级用法"中的参数化配置
- 尝试批量处理和自定义输出格式
- 掌握错误码体系和重试/降级策略,能自主排查问题
- 使用
--keep参数自定义保留规则
第三层:高级技巧(2小时+)
- 自定义压缩策略(修改保留规则,如保留所有函数体但删除注释)
- 与其他 Skill 串联形成工作流(如压缩后自动生成测试用例)
- 编写脚本自动化批量压缩任务(结合
--format json输出) - 使用分块压缩处理超大文件(>100K token)
一页纸速查卡(打印/收藏)
失败处理
- 输入不符合预期 → 返回错误说明与正确的输入格式示例
- 执行中异常 → 保留中间结果,报告失败原因与已处理进度
- 依赖缺失 → 给出安装命令并重试一次
前置条件
- 无特殊环境要求
执行步骤
- 收集用户输入并确认格式
- 按功能逻辑处理输入内容
- 生成结果并校验完整性
输出
- 结构化文本结果,附处理说明
许可证
本 Skill 基于 MIT 许可证发布(详见项目源仓库 LICENSE 文件)。使用者可自由使用、修改与分发,但需保留版权声明与许可文本。<!-- professional-license-embedded -->
稳定性保障
- 超时控制:单条处理设置上限,超时自动跳过并记入失败明细,避免整批卡死。
- 重试策略:可恢复类错误(临时占用、瞬时 IO 失败)自动重试 3 次,间隔递增。
- 降级方案:高级解析失败时自动回退到基础解析模式,保证有可用输出而非直接报错。
- 幂等性:重复执行同一批输入结果一致,不会产生重复追加。
FAQ 与反模式
Q:可以直接对原始文件覆盖写入吗?
A:不建议。默认输出到独立文件,保留原始数据是可回溯的前提。
Q:处理到一半失败了怎么办?
A:已完成部分的输出有效,查看失败明细后只重跑失败项即可,无需整批重来。
反模式 ①:不做试运行直接批量处理全量数据 —— 参数配错会一次性污染全部输出。
反模式 ②:忽略失败明细只看成功数 —— 静默跳过的条目会造成数据缺口。
反模式 ③:把工具输出直接作为最终结论 —— 关键字段务必人工抽检。
安全声明
- 全流程本地执行,不上传任何用户数据到第三方服务。
- 不读取与任务无关的目录,不写入系统目录。
- 处理含个人信息的数据时,请自行遵守《个人信息保护法》等相关法规。
- 本 Skill 代码由 AI 辅助生成并经自检验证,以 MIT 协议开源,使用者自负使用后果。