用AI编辑《巫师3》文本教程

用AI编辑《巫师3》文本教程

用AI编辑《巫师3》文本——Witcher 3 String Editor MCP教程

[center][b][size=4]用 AI 编辑《巫师 3》文本 — Witcher 3 String Editor MCP 教程[/size][/b][/center]

[b][size=4]1. 这是什么[/size][/b]

Witcher 3 String Editor MCP 是一个本地 MCP 服务器,让 AI 助手(Claude、Cursor、VS Code Copilot 等)读取和编辑《巫师 3》的 [b].w3strings[/b] 文本文件。

工作原理:

[list] []所有操作都在[b]内存中的文档[/b]上进行,磁盘上的内容不会立即改变。[/] []只有 [b]save_document[/b] 会写入磁盘,因此你可以在提交前安全地检查和编辑。[/] []它支持创建、搜索、翻译、添加和删除条目,并可保存为版本 162、163 或 164。[/] []可以同时打开多个文档,每个文档由一个 Guid 句柄标识。[/] [/list]

[b][size=4]2. 环境要求[/size][/b]

[list] [][b].NET 10 SDK[/b],它提供用于启动服务器的 [b]dnx[/b] 命令。[/] []一个支持 MCP 的 AI 客户端(VS Code、Claude Code、Claude Desktop、Cursor 等)。[/] []你想编辑的 [b].w3strings[/b] 文件(游戏文本或某个模组的文本文件)。[/] [/list]

已发布的包为 [b]Witcher3StringEditor.MCP[/b];本教程锁定版本 [b]0.1.0-beta.4[/b]。

[b][size=4]3. 连接你的 AI 客户端[/size][/b]

每个客户端都启动同一条命令: [code]dnx Witcher3StringEditor.MCP@0.1.0-beta.4 --yes[/code]

[b]VS Code[/b]:在你的工作区中创建 [b].vscode/mcp.json[/b]: [code]{ "servers": { "w3strings": { "type": "stdio", "command": "dnx", "args": ["Witcher3StringEditor.MCP@0.1.0-beta.4", "--yes"] } } }[/code]

[b]Claude Code[/b]:在终端中运行: [code]claude mcp add w3strings -- dnx Witcher3StringEditor.MCP@0.1.0-beta.4 --yes[/code]

[b]Claude Desktop[/b]:编辑 [b]%APPDATA%\Claude\claude_desktop_config.json[/b]: [code]{ "mcpServers": { "w3strings": { "command": "dnx", "args": ["Witcher3StringEditor.MCP@0.1.0-beta.4", "--yes"] } } }[/code]

[b]Cursor[/b]:创建 [b].cursor/mcp.json[/b](或全局的 [b]~/.cursor/mcp.json[/b]): [code]{ "mcpServers": { "w3strings": { "command": "dnx", "args": ["Witcher3StringEditor.MCP@0.1.0-beta.4", "--yes"] } } }[/code]

重启客户端后,你应该能看到包含 [b]15 个工具[/b]的工具列表。如果什么都没有,请检查 [b]dnx --help[/b] 在终端中是否可用。

[b][size=4]4. 首次运行:打开并检查文件[/size][/b]

连接成功后,直接用自然语言与 AI 对话即可。例如: [quote]用 w3strings 打开 D:\Games\The Witcher 3\content\content0\en.w3strings,并告诉我它有多少个条目。[/quote]

AI 会按顺序调用: [list] [][b]open_document[/b]:打开文件并返回文档句柄(一个 Guid)。[/] [][b]count[/b]:返回条目数量。[/] [][b]search_items[/b]:按子串搜索文本、ID 和键名。[/] [][b]get_item[/b]:按 strId 读取一个条目。[/] [][b]navigate[/b]:按偏移量向前或向后浏览条目。[/] [/list]

打开文件既不会锁定也不会修改它。在调用 [b]save_document[/b] 之前,编辑只存在于内存中。

[size=4][b]5. 常用操作[/b][/size]

[b]搜索文本[/b]: [quote]在打开的文档中搜索 "Geralt",并列出每个匹配项的 strId 和原始文本。[/quote]

搜索默认不区分大小写,并返回所有匹配项。如果命中很多,可以让 AI 只读取前几条。

[b]修改一个条目[/b]: [quote]把 strId 12345 的文本改为 "The witcher"。[/quote]

这会使用 [b]update_item[/b],它既可以只修改文本,也可以只修改键名或键哈希,或同时修改多个字段。

[b]添加一个条目[/b]: [quote]添加一个新条目,strId 为 90001,文本为 "Test string"。[/quote]

新条目会添加到文档末尾。strId 必须能放入 32 位无符号整数,且不能已存在。

[b]删除一个条目[/b]: [quote]删除 strId 为 90001 的条目。[/quote]

删除无法撤销。如果你可能需要还原,请先保存到新文件。

[b]保存[/b]: [quote]将此文档保存为 D:\Games\The Witcher 3\Mods\modMyTranslation\content\en.w3strings,版本 162,语言 en。[/quote]

[b]save_document[/b] 始终需要 [b]version[/b];[b]language[/b] 默认为 [b]en[/b]。版本 163 会以 162 写入。

[size=4][b]6. 翻译工作流[/b][/size]

[list] []使用 [b]search_items[/b] 找到你要的条目,然后用 [b]update_item[/b] 一次一个地写入翻译,而不是让 AI 猜测整个文件。[/] []保持 [b]{...}[/b]、[b]%...%[/b]、[b]<...>[/b] 和换行等占位符不变;只翻译可见文本。[/] []为角色名、地名和专有名词建立术语表,以保持措辞一致。[/] []对于大批量操作,每批完成后用 [b]save_document[/b] 保存,以便回滚。[/] []保存后,重新打开新文件,并用 [b]search_items[/b] 抽查几个条目,确认没有乱码或缺失。[/] [/list]

[size=4][b]7. 版本与语言[/b][/size]

[b]版本[/b]: [list] [][b]162 / 163[/b]:UTF-16LE,用于经典版和次世代版(163 会保存为 162)。[/] [][b]164[/b]:UTF-8,用于重制版。[/] [/list]

[b]语言代码[/b](共 18 种): [code]ar br cn cz de en es esMX fr hu it jp kr pl ru zh tr ua[/code]

[b]注意[/b]:版本和编码不能混用。用错误的版本保存可能导致游戏无法加载文本或显示乱码。

[b][size=4]8. 构建翻译模组[/size][/b]

[list] []在游戏目录中创建 [b]Mods&lt;YourModName>\content[/b]。[/] []用游戏的语言代码命名保存的文件,例如 [b]en.w3strings[/b],并将其放入该 [b]content[/b] 文件夹。[/] []游戏只会加载文件名与语言代码完全匹配的 w3strings 文件。[/] []如果你是在翻译另一个模组,请给这个翻译模组更高的加载优先级(在 Vortex 中调整,或手动安装时确认覆盖顺序)。[/] []测试前备份原始的 [b].w3strings[/b] 文件。[/] [/list]

最终路径示例: [code]The Witcher 3\Mods\modMyTranslation\content\en.w3strings[/code]

[b][size=4]9. 工具参考[/size][/b]

[list] [][b]open_document[/b]:打开一个 .w3strings 文件并返回文档句柄。[/] [][b]create_document[/b]:创建一个新的空文档。[/] [][b]count[/b]:返回条目数量。[/] [][b]is_dirty[/b]:报告是否有未保存的更改。[/] [][b]navigate[/b]:按偏移量浏览条目。[/] [][b]get_item[/b]:按 strId 获取一个条目。[/] [][b]search_items[/b]:按文本、ID 或键名搜索。[/] [][b]add_item[/b]:添加一个新条目。[/] [][b]update_item[/b]:修改文本、键名或键哈希。[/] [][b]update_item_id[/b]:修改条目的 strId。[/] [][b]update_item_key_name[/b]:设置键名(仅在内存中;只有哈希会被保存)。[/] [][b]delete_item[/b]:删除一个条目。[/] [][b]save_document[/b]:将文档写入磁盘(必须提供版本)。[/] [][b]close_document[/b]:关闭文档并释放其句柄。[/] [][b]list_languages[/b]:列出支持的语言代码。[/] [/list]

[size=4][b]10. 注意事项[/b][/size]

[list] [][b].w3strings[/b] 文件不存储可读的键名,只存储 8 位十六进制哈希,因此重新打开文件后键名为空。[/] []键哈希为零的条目会在保存时被丢弃。[/] []服务器没有撤销功能。请保存到新文件,而不是覆盖原始游戏文件。[/] []同一路径同一时间只能由一个文档拥有;保存到另一个已打开文档拥有的路径会被拒绝。[/] []句柄只存在于运行中的服务器进程内,客户端关闭后即消失。[/] [/list]

[size=4][b]11. 上传到 Nexus Mods[/b][/size]

此 MCP 只创建和保存文件;它无法上传到 Nexus Mods(Nexus 没有公开的文件上传 API)。发布是手动步骤:

[list] []将 [b]Mods&lt;YourModName>[/b] 文件夹连同你的 readme 打包成 [b].zip[/b] 或 [b].7z[/b] 压缩包。[/] []登录 Nexus Mods,在《巫师 3》板块打开你的模组页面。[/] []点击 [b]Upload file[/b],选择压缩包,并填写版本、文件分类和更新日志。[/] []提交;根据你的模组设置,它会进入审核或立即发布。[/] [/list]

如果你发布的是教程文章而不是模组,Nexus Articles 只支持内嵌图片,不支持文件附件。请先将文件作为模组文件上传,然后在文章中链接到它。

[size=4][b]12. 故障排除[/b][/size]

[list] []客户端找不到包或版本:确保 [b]dnx --help[/b] 可用,且所锁定的版本存在。[/] []工具调用失败,但客户端只显示通用错误:检查日志 [code]%LOCALAPPDATA%\Witcher3StringEditor.MCP\logs\log<date>.txt[/code][/] []游戏中没有任何变化:确认文件名与语言代码匹配,文件位于 [b]Mods&lt;ModName>\content[/b] 下,且模组已启用。[/] []文本乱码:确认保存的版本与你的游戏版本匹配(经典版和次世代版用 162/163,重制版用 164)。[/] [/list]

[size=4][b]最后说明[/b][/size]

有了这个 MCP,你不再需要导出 CSV、编辑后再手动转换回 w3strings。让 AI 打开、搜索、编辑并保存文件,然后把结果放入你的模组文件夹,打包并上传即可。

欢迎在评论中报告问题或分享你的翻译模组。