Compression Engines (中文 (简体))
压缩组合是可分配给路由组合的命名压缩配置文件:
compression_combos:存储模式、流水线、RTK 配置、语言配置和默认标记compression_combo_assignments:将压缩组合映射到路由组合- 运行时集成会先解析已分配的压缩组合,再处理通用组合覆盖配置
- 分析数据包括
compression_combo_id和engine
控制面板入口:控制面板 -> 上下文与缓存 -> 压缩组合。
API 接口
Section titled “API 接口”| 路由 | 用途 |
|---|---|
/api/settings/compression |
全局压缩设置(包括 mcpAccessibility 配置) |
/api/compression/preview |
预览任意压缩模式 |
/api/compression/language-packs |
列出可用的 Caveman 语言包 |
/api/context/caveman/config |
Caveman 设置别名 |
/api/context/rtk/config |
RTK 默认配置和设置 |
/api/context/rtk/filters |
RTK 过滤器目录 |
/api/context/rtk/test |
RTK 预览/测试端点 |
/api/context/rtk/raw-output/[id] |
经过身份验证的脱敏原始输出恢复 |
/api/context/combos |
压缩组合 CRUD |
/api/context/combos/[id]/assignments |
路由组合分配 CRUD |
/api/context/analytics |
压缩分析别名 |
管理路由需要通过管理身份验证或 API 密钥策略检查。
MCP 工具
Section titled “MCP 工具”压缩功能提供五种 MCP 工具:
| 工具 | 作用域 | 用途 |
|---|---|---|
omniroute_compression_status |
read:compression |
设置、分析数据、缓存统计信息 |
omniroute_compression_configure |
write:compression |
更新全局设置 |
omniroute_set_compression_engine |
write:compression |
设置模式和可选流水线 |
omniroute_list_compression_combos |
read:compression |
列出压缩组合 |
omniroute_compression_combo_stats |
read:compression |
读取组合/引擎分析数据 |
范围与排除项
Section titled “范围与排除项”嵌入向量永远不会被压缩。 open-sse/handlers/embeddings.ts 从不调用任何
压缩引擎——请求/响应正文会原样直接传递给执行器。
目前这是由结构决定的(嵌入向量和聊天补全由不同的处理程序处理),而不是
运行时检查,但这意味着 #8034 中的向量失真问题在嵌入向量路径中不存在暴露面。
按模型/端点排除过滤器(#8034)。 对于聊天补全,运维人员可以指定
绝不能压缩的模型 ID / provider/model 目标——如果以后压缩功能被接入到更靠近嵌入向量的路径,
这可作为一项有用的防护措施;此外,对于任何要求提示词逐字节精确一致的模型
(确定性评估、对缓存敏感的前缀等),这通常也很有用。
- 设置字段:全局压缩配置中的
exclusions?: string[](GET/PUT /api/settings/compression),通过现有的key_value压缩 命名空间(src/lib/db/compression.ts)持久化——无需新建表。 - 控制面板标签页:控制面板 → 压缩 → 排除项
(
/dashboard/compression/exclusions)。 - 模式语法:
*是唯一的通配符。模式中的其他所有正则表达式元字符都会在 匹配前进行转义,因此gpt-5.6只匹配字面字符串,绝不会匹配gpt-5x6(可防范 ReDoS、有界且无嵌套量词)。模式会以不区分大小写的方式同时匹配 裸模型 ID 和provider/model组合——gpt-5-6、openai/gpt-5-6和openai/*均有效,而单独使用*会排除所有模型。 - 匹配:
open-sse/services/compression/exclusions.ts中的isCompressionExcluded()/normalizeCompressionExclusions()。chatCore.ts在 解析压缩设置之后、任何引擎运行之前检查被排除的目标,并将匹配情况 完全视同全局禁用压缩——可证明请求正文在逐字节层面完全相同。该跳过操作通过writeCompressionSkip(..., "excluded")记录,以便在分析数据中查看。 - 默认值(列表为空/不存在):与 #8034 之前的行为相同——不排除任何内容。
- LLMLingua-2 (SLM) 要求可选依赖位于同一位置。 仅当
@atjsh/llmlingua-2及其对等依赖被放置到dist/node_modules中时,工作线程才能在生产构建中运行(参见scripts/build/colocateOptionals.mjs、#4286)。如果缺少这些依赖, 引擎将采用故障开放策略(返回原始文本)。工作线程的解析不再依赖import.meta.url(它在独立捆绑包中会失效),而是以运行时的 cwd /argv[1]为基准。 - Caveman 语言包
de/fr/ja并不完整。 它们包含context+filler+structural规则,但不包含dedup/ultra规则包,因此对于这些语言,ultra强度 并不高于full(它们仅使用各自的规则,不会静默回退到英语的dedup/ultra规则,因为这会破坏外语文本)。en/es/id/pt-BR是完整的。欢迎为不完整的语言包贡献dedup.json+ultra.json。 - 堆叠遥测仅列出实际执行了压缩的引擎。 如果堆叠流水线中的某个步骤运行了引擎但节省率为 0 %,
则会返回
stats:null,因此不会出现在engineBreakdown中——这与该步骤被跳过的情况无法区分。若要区分 “已运行,0 %”与“已跳过”,需要更改明细模型,因此暂缓处理。
此区域的重点关卡是:
node --import tsx/esm --test tests/unit/compression/rtk-*.test.ts tests/unit/compression/pipeline-integration.test.ts tests/unit/compression/context-compression-api.test.tsnode --import tsx/esm --test tests/unit/compression/*.test.ts tests/golden-set/*.test.ts tests/integration/compression-pipeline.test.ts tests/unit/api/compression/compression-api.test.tsnode --import tsx/esm --test tests/unit/compression/mcpAccessibility*.test.tsnpm run typecheck:coreHagiCode
HagiCode 是一套智能体编码工作台:结构化工作流、多 Agent 并行执行与 Hero Dungeon 视图,把想法变成真正交付的软件。
让想法更快变成好用的软件,让智能编码更聪明、更高效,也更有趣。

- Smart结构化工作流将意图转化为从想法到交付的可执行路径。
- Efficient多 Agent 工作流让调研、实现与审阅并行推进。
- FunHero Dungeon 让长时间编码协作更直观、更有参与感。