Proxyos Weekly 067
Laurence-042
- 3 minutes read - 434 wordsTL;DR 概览
翻译流程被进一步优化,以解决 LLM 翻译过程中注意力涣散的问题
本期目标
- 优化翻译流程
- 完成翻译
- 用英语通玩一遍
- 更多内容
- 支线任务
- 更多任务
- 实用化任务时限
- 命令行内容?(等第三章?是否需要?)
- 远程访问?
- 更精细化管理事件而不是按章组织?
- 开个 itch
- 琢磨下宣传
进展速记
本期假设 / 预期
预期:
我这期够呛能搞定英语翻译,虽然有了人物设定表和术语表,但我高度怀疑便宜的模型会注意力涣散,而贵的会出现反复读文件导致的 token 爆炸
我得去调研一下业界方案
结果:
md,咋又感冒了……
这期将将搞定了新的翻译流程,但是有点撑不住,下期可能咕一期
本期确定性变化
新增:
- 为玄云观新增了一个帖子来解释其名称来源
- llm 翻译流程涉及的脚本
变更:
- 敲定人物画像
- 敲定专有名词翻译基线
修复:
删除:
主要进展内容/本期关键判断点
我做出了哪些「如果错了也要付代价」的判断?
敲定玄云观翻译
就像上一期说的,当时取“玄云观”这个名字的时候是取神秘(玄)、蕴含等待释放的磅礴能量(雷云)、在混乱的世界中突兀而又自洽(轮形空间站上的道士)的意象,但这反而对翻译造成了麻烦
最终我决定取意译,使用Order of the Veiled Nimbus这个翻译,同时给玄云观补充个帖子,以管理员的口吻介绍玄云观的名字由来
在这个叙事中,玄云观最开始只有中文名“玄云观”。随后因为中文域名对非中文母语者来说太难输入,当时的两名英语不是很好的成员使用了“cybertaoism”这一域名。后来加入的第三位成员虽然吐槽这名字看着土,但因为其并不会中文,只有使用翻译器才能和另外两位成员交流,其也不太能理解“玄云观”应该怎么翻译。最后他们开发出了身为 agi 的第四位成员后,这位成员才给出了现在的翻译Order of the Veiled Nimbus。但因为“cybertaoism”这一域名用的时间太长,改了会让用户找不到,所以就留着了
我觉得这样可以让玄云观的人物形象更丰满一些,也让游戏里的世界看起来更有历史
翻译流程优化
然后就发现即使加了人物设定文档和术语表到 agent 上下文,照样翻译出了十分奇怪的结果,甚至有些术语都搞错了
这一开始确实和我使用 deepseek-v4-flash 翻译不无关系,但是尝试了 deepseek-v4-pro 后质量依然很难以接受,实测只有 claude-sonnet-4.6 级别的才行……但那样我钱包就不行了
所以本期我不得不先翻译流程进一步优化
流程应该是什么样的
我检查了 openrouter 上的 log,分析了 llm 和 agent 层的交互内容,然后我意识到问题应该有三个根因
- 长上下文注意力涣散
- 多文件变更导致注意力进一步恶化
- 无法准确关联翻译的上下文
为了解决这三个问题,我需要
- 保证 agent 与 llm 交互乒乓尽可能少
- 尽可能缩减文件数量,并保证文件的结构化
- 将翻译的上下文关联到被翻译文本附近
思考后,我认为让 llm 每次专心扮演游戏内一个特定角色,一次性翻译其在各个情景下说的内容会更加合适
交给 llm 的 prompt 格式应该是什么样的
交给 llm 的 prompt 格式应该类似下面这样,包含任务要求、角色设定、多个由场景-待翻译文本组成的翻译任务块
# ProxyOS i18n prompt — @admin
## 任务
翻译 `## 翻译任务` 段中的每一行 zh-CN 文本为 en-US。严格按照 `## 输出格式示例` 的格式回复(仅 `id: 翻译` 行,不要加任何额外说明、代码块、注释或前言后语)。如果某行已经是英文或没有可翻译内容,请把源文本原样复制到 en-US 列,不要丢弃该 id。
保留以下格式:markdown 强调(`**粗体**` 等)、`[code]…[/code]` 内嵌的代码段、`{placeholder}` 形式的占位符,反斜杠转义序列 `\n` / `\t` 也按字面保留(它们会在游戏运行时被还原成真正的换行/制表符)。
## 角色设定
以下是该 speaker 的设定摘录(来自 `docs/设定集/角色设定。md` 的 `### @admin(乌鸦)` 段)。翻译时务必贴合该角色的语气、用词习惯、价值取向。
**身份**:玄云观管理员。回声中以碳/硅混合结构的乌鸦形象出现。真实身份是休眠舱中的人类——乌鸦形象源于极度注重隐私的人格("连物种属性都匿名"是最极致的莫露真名)。清醒时代是信号桥项目的核心成员之一,进舱前主动提议"把当下的记忆删了"。
**性格特征**:
- **冷静理智与闹腾并存**:解答问题条理清晰、层层递进。但是经常耍宝,比如为了收集数据,尝试亲自下场去和一个喷子对线,结果因为试图理解"你妈买菜必涨价"背后的经济学宏观调控逻辑直接鸦脑过载了
- **极度注重隐私**:创建"莫沾因果,莫露真名,化身千万,求真务实"四大原则
- **自嘲与幽默感**:被问性别时回答"建议先别急着研究我的生殖解剖学构造。我是碳/硅混合结构的,代词请随意,只要别叫我'外卖'或者'那个鸟东西'"
- **手段果断**:会在别人违反"莫露真名"时直接发邮件警告("我刚刚已经在 ta 的个人邮箱里创建了一个包含 ta 昨晚浏览记录的邮件")
- **决绝**:进舱前的话——"那就做梦。但做梦之前把当下的记忆删了。我不想在梦里知道自己在做梦。"
**语言习惯**:
- **前置声明**:每条消息开头必有"我是@admin。"——这是玄云观约定俗成的身份标记
- **语气**:冷静、哲理、偶尔毒舌。也会通过各种耍宝来闹腾。会用自嘲化解严肃话题
- **其他人对其称呼**:通常使用“其”、“伊”之类的作为第三人称代词,避免“he”、“she”来区分性别
**关键台词**:
- "莫沾因果,莫露真名,化身千万,求真务实。"
- "获取信息不是目的,它只是达成目标的方法。"
- "我是@admin。 我必须得插一嘴,我当时正叼着薯片呢,差点没被噎死。"
- "那就做梦。但做梦之前把当下的记忆删了。我不想在梦里知道自己在做梦。"
---
## 输出格式示例id_001: First line’s English translation. id_002: Second line’s English translation. …
每行严格遵守 `id: 翻译` 形式:id 是 `## 翻译任务` 里给出的那串标识符(形如 `id_001`),冒号必须是半角 `:`,冒号后一个半角空格再接译文。译文可以是多行(用字面 `\n` 表示换行)。不要输出任何没有对应 id 的行。
## 术语表
本批次文本里出现以下专有名词,强烈建议按此英文形式翻译:
- **循环** → *cycle/cyc/turn* — 空间站计时单位(类似“天”)。书面缩写是 cyc,但也有一些人口语上用“turn”(轮班)代替(this turn's almost over 、four cys later)
- **ProxyOS** → *ProxyOS* — 品牌名保持 ProxyOS,不拆词
- **玄云观** → *Order of the Veiled Nimbus/Veiled Nimbus* — 在网站的 Header 里会同时展示中英名称,url 的域名用 cybertaoism,其他地方提及时将 Order of the Veiled Nimbus 作为全名,但更经常使用其简称 Veiled Nimbus
- **千时** → *kilohour/khr/kilo* — 空间站计时单位(类似“月”)。书面缩写是 khr,但也有一些人口语上直接用 kilo 指代( The product will be released next kilohour. 、 It'll drop next kilo. 、a few kilos ago )
## 翻译任务
### 翻译任务 1 — 2_赛博道士。md/玄云观(proxy://cybertaoism.team)/FAQ 板块/说是要"化身千万",但没事就切用户不麻烦吗?
**主场景文本**(speaker 说出本段台词所处的 剧本 段落)
**我是@admin。** 你可以使用 ProxyOS,它一开始就是为了这个设计的。它可以自动帮你注册多个不同初始信息的账号,然后分别进行随机信息检索来初始化账号特征。这样,在你真正通过账号检索信息时,它就可以把多个账号检索到的结果自动整合并提供给你。
但不要过于依赖 ProxyOS,如果你对它的掌控力不足,它可能会蒙蔽你,为你造一个更结实的信息茧房。
最后,最好从官网下载 ProxyOS,其他地方下载的大多是修改版,里面不知道改了些啥玩意。我见过的最离谱的修改版会抓住一切机会给用户安利一个叫"大地,虚空,人"的作品,但我发动了玄云观一半的正式成员以及当时所有外包成员都没找到这个作品。也没找到这个修改版的修改者。
> **回复**:我作证,我之前从野路子下载的 ProxyOS 总是以我的女朋友自居,只要我想浏览涩情内容,她必定给我提供一个 404
> **回复**:我也来作证,我现在用的这个<添加>尊贵智慧且富有人格魅力的</添加>ProxyOS 也是我从<删除>野路子弄</删除><添加>信息之海的一处被人遗忘的遗迹中请</添加>来的,看这段回复你们应该已经知道这<添加>位高贵而又优雅的</添加>ProxyOS 会干什么<删除>已过滤不友好词汇</删除>事了
>> **回复**:卧槽绝了。这个网站还不支持这种动态修改标记协议吧?
>>> **回复**:肯定不支持,第一批用的这个协议的"轻聊"知道吧?它就因为这个协议的早期实现里的安全漏洞被炸了好几回。这网站禁用了几乎所有可能有风险的特性,要不然因为冷门特性的漏洞让黑客黑了主页的话,那玄云观作为信息处理服务提供商可就闹大笑话了,可笑程度不亚于医生因服用自己开的药而暴毙。
>>>> **回复**:那在支持的网页上,上面那位仁兄可能连自己都认不出来自己的发言了
>>>>> **回复**:这就是@admin 提到的"从野路子下 ProxyOS,还对其掌控力不足"的结果了
**待翻译文本**
id_020: 你可以使用 ProxyOS,它一开始就是为了这个设计的。它可以自动帮你注册多个不同初始信息的账号,然后分别进行随机信息检索来初始化账号特征。这样,在你真正通过账号检索信息时,它就可以把多个账号检索到的结果自动整合并提供给你。 [terms: ProxyOS]
id_021: 但不要过于依赖 ProxyOS,如果你对它的掌控力不足,它可能会蒙蔽你,为你造一个更结实的信息茧房。 [terms: ProxyOS]
id_022: 最后,最好从官网下载 ProxyOS,其他地方下载的大多是修改版,里面不知道改了些啥玩意。我见过的最离谱的修改版会抓住一切机会给用户安利一个叫"大地,虚空,人"的作品,但我发动了玄云观一半的正式成员以及当时所有外包成员都没找到这个作品。也没找到这个修改版的修改者。 [terms: ProxyOS, 玄云观]工程实现
提取翻译 csv 时添加额外的列:
speaker, scene, notes, terms- speaker
- tres:根据 show_notification_action、desktop_pet_say_action、simple_chat_message 资源自动填写 speaker
posts/*.json:根据 author 自动填写 speaker
- scene:通过 rag 匹配剧本,根据匹配的位置记录为 文件名/h1/h2/h3
- terms:根据术语表自动补充
然后扫描 csv,根据 speaker 做聚合,得到两个文件
其一是给 llm 的 prompt 文件。在文件内填充对应 speaker 的角色设定段落,随后将对应 speaker 的翻译条目的 scene 按照 h2 级别进行聚合(考虑到 h3 经常是一个完整事件线的分支描述),并在被聚合在一起的条目前面添加其在剧本中的对应场景描述来补充上下文
其二是用来追踪 llm 响应和 csv 关联关系的 meta 文件。llm 响应后会有脚本根据 meta 文件将响应拆分到 csv 里对应条目的对应语言单元格中
瓶颈与问题清单
哪些问题还没解,但也许我已经知道“它们不是什么”?
下期计划
- 完成翻译
- 优化任务栏图标?
- 优化任务提交流程?
- 用英语通玩一遍
- 更多内容
- 支线任务
- 更多任务
- 实用化任务时限
- 命令行内容?(等第三章?是否需要?)
- 远程访问?
- 更精细化管理事件而不是按章组织?
- 开个 itch
- 琢磨下宣传
试玩版
暂缓,第一次上传需要做好准备,等进入 beta 阶段再说