transx-cli:翻译请求的输入与输出边界
文本、stdin 和八种文件如何变成翻译单元;Key 的 0600 原子写入、输出冲突、JSON 确认和请求预算。
transx-cli 是面向终端、脚本和 Agent 的 DLX 翻译工具。npm 安装会在用户目录生成 transx 启动入口并加入 PATH,配置目录是 ~/.transx/;请求发给 DLX 兼容端点。输入可以是位置参数、stdin 或文件;默认把译文写回源目录,文件名是 <源文件名>_<目标语言><扩展名>,--json 返回 Agent 可读的结构。
请求路径
CLI 先解析输入,再按类型提取翻译单元:文本按段落或行,Office 按同格式 run,表格按单元格。每个单元最多 1500 字符;文件上限 20MB、可翻译文本上限 100,000 字符、最多 500 个请求。文件翻译使用 5 个并发 worker、200ms 间隔;--timeout 只控制单次 HTTP 请求。
重试间隔 20s、最多 2 次、退避 300·2^attempt,只重试网络错误和 5xx;429 立即失败。输出默认写在源目录,冲突名用 .1–.999,写入使用 wx。任何带 code 的 fs 错误会回退成文本或 JSON,不让整个命令失败。
支持的格式是 txt、md、csv、log、docx、xlsx、pptx、pdf。PDF 只抽取文字并生成 DOCX;扫描版返回 FILE_TEXT_EMPTY,--file 没有 OCR 兜底。OCR 是可选扩展,先生成 <源文件名>_OCR.md,确认后才进入文件翻译流程。
Key 与历史
Key 保存在 ~/.transx/credentials.json:目录 0700、文件 0600,temp + rename 原子替换。优先级是 DLX_API_KEY 环境变量高于文件;transx init --key-stdin 和 config set-key --stdin 供 CI 等无交互环境使用。Windows 没有 POSIX chmod 对应的 ACL 收紧;Key 在写入时不校验。
history 存在 ~/.transx/history/YYYY-MM-DD.json 和 index.json,按 +8 时区切日,使用 wx 0600 锁、5s 获取、30s stale rename。只警告 30 天或 100MB,不自动清理。
调用边界
--image 与 --file、位置文本互斥;--timeout 只作用于单次 HTTP。非 TTY 的 --json 图片流程返回 awaiting_confirmation 和 translation_sent=false,TTY 才要求 y/n 确认。Agent 调用应始终带 --json,从 stdout 读取结构化结果。
OCR 扩展需要 Python 3.10+,首次启用会下载约 180MB 的 PP-OCRv6 Quality;支持图片、PDF 页面、DOCX/PPTX 内嵌图片和 Markdown 本地图片,远程图片不会下载。