现在是 2026 年 1 月 23 日,凌晨。
遗憾的发现,Agent 在翻译任务上表现不如 one-shot LLM 直接翻译。看来,Agent 的优势更多在于需要多步推理和决策的任务上,而不是简单的单步任务。Agent 使用的 Token 数量是 LLM 的 10 倍,但是翻译质量反而退步了,特别是 YAML Frontmatter 居然还会翻译到格式错误。
我之前是打算用它解决 one-shot LLM 在长文本翻译任务中超出最大输出长度限制的问题,但看来没有那么简单。于是我在 [email protected] 版本回滚了这个功能,从长计议。
我认为,这可能是因为 Agent 的场景通常是巨量信息下的复杂任务,因此它会被设计为尽量少地读写上下文,并且设计成了优先局部读写文件,从而提高 Agent 的数据量处理上限。上下文管理的策略导致它不会默认把所有信息都纳入,导致它无法像 one-shot LLM 那样充分利用上下文信息来进行翻译。
有意思的是,有些小语种的翻译任务 (例如 简体中文到印尼语),Agent 甚至会偶然地表现为反复翻译死循环,无法收敛到一个稳定的翻译结果。这可能是 Edit 工具处理某些语言时存在缺陷,导致它无法正确替换文本,从而陷入死循环。(太省了可能也有问题)
我想到两个方案:
- 使用 Agents / Sub-Agents 框架来分解翻译任务,例如翻译-校对的对抗生成框架。
- 使用 Skill 组装一个 Low-level 的 one-shot LLM API,让 Agent 来调用翻译技能,而不是让 Agent 自己来翻译。
我可能更喜欢第一种方案,因为它的上限似乎更高些。只是不知道 OpenCode 对于复杂 Agent 调用的支持度如何。
另外,CZON 的更新日志:
- 0.5.0: 集成了 OpenCode 进行翻译任务。(不过引入了大量文件翻译时的性能问题,之后修复)
- 0.5.1: 修复了国内网络无法访问 jsdelivr 导致的前端静态资源加载失败的问题 (tailwindcss)。(通过在构建期下载 CDN 文件到本地实现)
- 0.5.2: 当 slug 已经存在时,不再更新 slug,防止修改内容导致 slug 变化。(避免日志文件重命名导致的历史链接失效);回滚了 Agent 翻译功能,取消 OpenCode 集成翻译任务功能。