# Compression Language Packs (中文 (简体)) 🌐 **Languages:** 🇺🇸 [English](../../../../compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇪🇹 [am](../../../am/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇸🇦 [ar](../../../ar/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇦🇿 [az](../../../az/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇧🇬 [bg](../../../bg/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇧🇩 [bn](../../../bn/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇧🇦 [bs](../../../bs/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇨🇿 [cs](../../../cs/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇩🇰 [da](../../../da/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇩🇪 [de](../../../de/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇬🇷 [el](../../../el/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇪🇸 [es](../../../es/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇪🇪 [et](../../../et/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇮🇷 [fa](../../../fa/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇫🇮 [fi](../../../fi/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇫🇷 [fr](../../../fr/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇮🇪 [ga](../../../ga/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇮🇳 [gu](../../../gu/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇳🇬 [ha](../../../ha/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇮🇱 [he](../../../he/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇮🇳 [hi](../../../hi/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇭🇷 [hr](../../../hr/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇭🇺 [hu](../../../hu/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇦🇲 [hy](../../../hy/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇮🇩 [id](../../../id/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇳🇬 [ig](../../../ig/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇮🇹 [it](../../../it/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇯🇵 [ja](../../../ja/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇬🇪 [ka](../../../ka/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇰🇭 [km](../../../km/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇮🇳 [kn](../../../kn/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇰🇷 [ko](../../../ko/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇱🇹 [lt](../../../lt/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇱🇻 [lv](../../../lv/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇮🇳 [ml](../../../ml/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇮🇳 [mr](../../../mr/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇲🇾 [ms](../../../ms/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇲🇹 [mt](../../../mt/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇲🇲 [my](../../../my/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇳🇵 [ne](../../../ne/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇳🇱 [nl](../../../nl/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇳🇴 [no](../../../no/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇮🇳 [or](../../../or/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇮🇳 [pa](../../../pa/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇵🇭 [phi](../../../phi/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇵🇱 [pl](../../../pl/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇵🇹 [pt](../../../pt/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇷🇴 [ro](../../../ro/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇷🇺 [ru](../../../ru/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇱🇰 [si](../../../si/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇸🇰 [sk](../../../sk/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇸🇮 [sl](../../../sl/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇷🇸 [sr](../../../sr/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇸🇪 [sv](../../../sv/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇰🇪 [sw](../../../sw/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇮🇳 [ta](../../../ta/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇮🇳 [te](../../../te/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇹🇭 [th](../../../th/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇹🇷 [tr](../../../tr/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇵🇰 [ur](../../../ur/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇺🇿 [uz](../../../uz/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇻🇳 [vi](../../../vi/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇳🇬 [yo](../../../yo/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) --- Caveman 压缩除了内置的英语规则外,还可以加载特定语言的规则包。 这样既能保持核心引擎稳定,又允许葡萄牙语、西班牙语、德语、法语、意大利语、日语以及 未来的语言包独立演进。 ## 位置 语言包位于: ```txt open-sse/services/compression/rules// ``` 当前随附的语言包(已根据 `rules/` 目录内容进行验证): | 语言 | 目录 | 包含的规则类别 | | ---------------- | -------------- | --------------------------------------------------- | | 英语 | `rules/en/` | `context`, `dedup`, `filler`, `structural`, `ultra` | | 西班牙语 | `rules/es/` | `context`, `dedup`, `filler`, `structural`, `ultra` | | 葡萄牙语(巴西) | `rules/pt-BR/` | `context`, `dedup`, `filler`, `structural`, `ultra` | | 印度尼西亚语 | `rules/id/` | `context`, `dedup`, `filler`, `structural`, `ultra` | | 意大利语 | `rules/it/` | `context`, `dedup`, `filler`, `structural`, `ultra` | | 德语 | `rules/de/` | `context`, `filler`, `structural` | | 法语 | `rules/fr/` | `context`, `filler`, `structural` | | 日语 | `rules/ja/` | `context`, `filler`, `structural` | > **一致性说明:** `en`、`es`、`pt-BR`、`id` 和 `it` 语言包包含完整的 5 个类别;`de`、`fr`、`ja` 随附 3 个类别。缺失的 `dedup` 和 `ultra` 类别会静默回退到内置的英语规则。欢迎贡献,为较小的语言包添加 `dedup.json` 和 `ultra.json`。 > > `pt-BR` 语言包基于 Lenine Júnior 的 **[Troglodita](https://github.com/leninejunior/troglodita)**——这是一个从零开始、专为巴西葡萄牙语语法设计的压缩系统(减少赘语、移除 PT-BR 填充词、提供面向巴西开发者社区的技术缩写)。 > > 规范类别列表和各类别的架构定义位于 [`open-sse/services/compression/rules/_schema.json`](../../open-sse/services/compression/rules/_schema.json)(JSON Schema 草案 2020-12)。 ## 语言检测 `languageDetector.ts` 使用轻量级启发式方法从提示文本中推断语言。 配置的默认语言仍会受到尊重;需要精确控制时,也可以通过配置禁用检测。 检测结果仅用于选择规则包。它不会更改提供者路由、区域设置选择或 UI 语言。 ## 配置结构 压缩设置可以包括: ```json { "languageConfig": { "enabled": true, "defaultLanguage": "en", "autoDetect": true, "enabledPacks": ["en", "pt-BR", "es", "id", "de", "fr", "ja"] }, "cavemanConfig": { "language": "en", "autoDetectLanguage": true, "enabledLanguagePacks": ["en", "pt-BR", "es", "id", "de", "fr", "ja"] } } ``` `languageConfig` 控制仪表板/预览的默认设置。`cavemanConfig` 是 Caveman 压缩消息文本时使用的运行时引擎配置。 ## 添加语言包 1. 创建 `open-sse/services/compression/rules//.json`。 2. 使用 `docs/compression/COMPRESSION_RULES_FORMAT.md` 中的 Caveman 规则格式。 3. 替换应保持保守,并避免更改代码、标识符、URL 或 JSON。 4. 添加或更新针对语言选择和替换行为的测试。 5. 如果该语言会出现在 UI 选择器中,请公开新的仪表板/i18n 标签。 ## API 可以使用以下命令查询可用的语言包: ```bash curl http://localhost:20128/api/compression/language-packs ``` 预览端点接受语言配置覆盖: ```bash curl -X POST http://localhost:20128/api/compression/preview \ -H "Content-Type: application/json" \ -d '{ "mode": "standard", "text": "Por favor, eu gostaria que voce basicamente resumisse isso.", "config": { "languageConfig": { "defaultLanguage": "pt-BR", "autoDetect": true } } }' ``` ## SHARED_BOUNDARIES (v3.8.0) 在 v3.8.0 中,所有 6 个语言包都加入了 `SHARED_BOUNDARIES` 子句,该子句会应用于每个 Caveman 强度级别(LITE、FULL、ULTRA)。它指示引擎逐字保留以下模式, 无论周围的填充内容是否被移除: | 模式类型 | 示例 | | ------------------------------ | -------------------------------------- | | 围栏代码块 | ` ```python\n...\n``` ` | | 行内代码 | `` `my_var` `` | | URL | `https://example.com/path` | | 文件路径(绝对路径和相对路径) | `/etc/hosts`, `./src/index.ts` | | 错误标头 | `Error:`, `TypeError:`, `SyntaxError:` | | 堆栈跟踪行 | ` at functionName (file.ts:12:3)` | 这些模式填充在 `DEFAULT_CAVEMAN_CONFIG.preservePatterns` 中(此前为 `[]`)。该 常量位于 `open-sse/services/compression/types.ts` 中。 ### 这为何重要 如果没有 SHARED_BOUNDARIES,激进的 Caveman 模式可能会移除看似重复 散文、但实际上是代码片段、文件路径或错误堆栈的内容。SHARED_BOUNDARIES 充当 与语言无关的安全网,在填充内容规则运行之前应用。 ### 自定义 preservePatterns 可以在运行时通过压缩设置添加其他模式: ````json { "cavemanConfig": { "preservePatterns": [ "```[\\s\\S]*?```", "`[^`]+`", "https?://\\S+", "(?:/|\\./)[^\\s]+", "\\b(?:Error|TypeError|SyntaxError|RangeError):", "\\s+at\\s+\\S+\\s+\\(\\S+:\\d+:\\d+\\)" ] } } ```` 自定义模式会扩展(而非替换)这 6 个默认模式。 --- ## 运维说明 - 当语言包缺失时,内置英语规则仍会作为回退选项。 - 无效的内置 JSON 包无法通过验证,因此发布资产不会在无提示的情况下发生质量下降。 - 规则包仅包含数据,不应导入代码或运行任意逻辑。 - 压缩分析层会记录所选模式和引擎,而不会记录完整的提示文本。