ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

ARTEX多语言支持揭秘:为什么只译报告不译推理提示词?英中韩西日5语言实测

ARTEX多语言支持揭秘:为什么只译报告不译推理提示词?英中韩西日5语言实测

【免费下载链接】artex-global

Global edition of ARTEX — an LLM multi-agent autonomous penetration-testing framework. English default, switchable to Korean/Chinese/Spanish/Japanese. For authorized, defensive and detection use only. (upstream: Autumn-27/ARTEX, AGPL-3.0)

项目地址:https://gitcode.com/gh_mirrors/ar/artex-global
点击查看免费下载

ARTEX 是一个 LLM 多智能体自主渗透测试框架(artex-global 为其全球版,默认英文,可切换韩/中/西/日共 5 种语言)。它的多语言支持采用了一个很有意思的设计:只把「用户看到的表面」翻译成你选的语言,而智能体内部的推理提示词保持不动。本文带你实测这套机制,并讲清楚背后的取舍。

一、ARTEX 支持哪 5 种语言?先看清支持清单

ARTEX 的多语言支持由一份明确的语言清单定义,共 5 个语言代码:en(英语)、ko(韩语)、zh(中文)、es(西班牙语)、ja(日语)。出厂默认是英文,其余 4 种全部可以在运行时切换,无需改代码。

代码语言来源
enEnglish(默认)内置
ko한국어可切换
zh中文(简体中文)可切换
esEspañol可切换
ja日本語可切换

语言清单与默认值定义在 config/config.go:

SupportedLanguages = ["en", "ko", "zh", "es", "ja"],DefaultLanguage = "en"

启动时的默认语言按优先级解析:环境变量ARTEX_LANG> 配置文件language字段 > 默认英文。解析逻辑见 config/config.go。

二、最快切换方法:设置页一处选择,界面+报告+对话同步生效

切换 ARTEX 语言不需要命令行,设置页里有一个「显示语言」下拉框。这个选择会同时做两件事(见 web/src/app/(main)/system/settings/page.tsx/system/settings/page.tsx#L124-L131)):

  1. 界面语言:写入浏览器本地存储(artex_locale),当前浏览器立即换肤,换浏览器需要重选;
  2. 智能体输出语言:作为output_language写入服务器设置表,之后智能体写的报告、摘要、对话回复全部跟随,任何浏览器访问都生效。

界面文案的 5 语言翻译目录是web/messages/下的 5 个 JSON 文件,例如中文里「显示语言」这一卡片就定义在 web/messages/zh.json,其中 desc 字段明确告诉用户:

“智能体输出语言保存在服务器上,从任何浏览器访问都会生效。”

三种切换方式按场景选择:

  • UI 切换(推荐):设置页 → 显示语言 → 选中目标语言,立即生效;
  • 环境变量:启动前设置ARTEX_LANG=zh,适合部署时固化;
  • 配置文件:在 config 中写"language": "zh",优先级低于环境变量。

三、核心揭秘:为什么只译「报告」,不译「推理提示词」?

这是 ARTEX 多语言设计中最值得展开的一点。每个智能体(planner 规划者、worker 执行者、主 agent、chat 助手)的系统提示词正文被称为「段 [A]」——一段经过基准测试(benchmarked)的中文推理正文。ARTEX 的选择是:

段 [A] 逐字保留,永不翻译;只在提示词尾部追加一段代码持有的「输出语言规约」(langDirective)。

这段规约做了什么?它要求模型:所有展示给用户的自然语言(record_fact的摘要、report_finding的标题/描述/结论/修复建议、planner 的态势总结、最终一句话总结、聊天回复)一律用你选的语言书写;但命令、payload、代码、文件路径、URL、参数名、日志/请求/响应原文必须逐字保留,方便复现证据。规约本体见 agent/prompt.go,语言名映射(如"en": "英语(English)")在 agent/outputlang.go。

为什么这么做?三个理由:

  • 🧠保住基准行为:段 [A] 是调优过的「大脑」,翻成 5 种语言等于 5 套大脑,攻击面分析和规划质量无法保证不退化。「保留行为、本地化表面」是明确的设计目标(见 agent/outputlang.go 注释);
  • 🛡️规约删不掉:语言规约是代码持有的尾部,追加在正文之后。即使用户在界面里修改了提示词正文(存数据库),这段约束依然会在每次渲染时附加——用户自定义正文「翻译不掉」输出语言要求;
  • 🚨对抗语言漂移:端到端实测(L1)发现两种漂移:模型把中文漏进 planner 的态势总结(镜像了中文大脑),以及把目标站点语言镜像进报告字段。因此规约里专门加了两条反漂移条款:点名「planner 态势总结」是用户可见字段,并禁止照抄目标/资料的语言。

四、5 语言实测:同一任务,输出有什么不同?

ARTEX 把 5 种语言的规约全部用测试钉死了(见 agent/prompt_test.go 的TestLangDirectiveLocalized),核心断言是:

语言规约中指定的展示语言标记特有断言
enEnglish禁止把中文输出给用户
ko한국어禁止把中文输出给用户
zh简体中文中文即目标,不出现「禁中文」条款
esEspañol禁止把中文输出给用户
ja日本語禁止把中文输出给用户

每个断言都验证了:指定了对应语言 + 原文技术片段逐字保留 + 禁止镜像目标语言 + 点名态势总结为用户可见字段。这就是「只译表面」策略在工程上的落法——不是翻译提示词,而是给同一个大脑戴上 5 种语言的「发言面具」。

实测中的表现:

  • 选zh:finding 标题、描述、修复建议、planner 态势总结、聊天回复全为简体中文,curl命令与响应原文保持英文;
  • 选es/ja:同样字段切换为西语/日语,PoC 证据块不受影响;
  • 换浏览器只影响界面换肤,报告语言不跟浏览器走,跟服务器设置走。

五、彩蛋:启动日志也是 5 语言的

不止报告,连控制台启动日志都做了目录化翻译:config/msg_i18n.go 内置了logCatalog与cfgCatalog两套映射,把「数据库配置找不到」「JWT 密钥已迁移」这类运维消息译成 5 种语言,且刻意不翻译ARTEX_PG_DSN、database、dsn等技术标识符——和 langDirective 的策略完全一致:译人话,留原文。

六、总结:ARTEX 多语言支持的完整清单

层面是否翻译实现位置
界面文案✅ 5 语言web/messages/
报告/摘要/对话回复✅ 5 语言langDirective 尾部规约
启动/运维日志✅ 5 语言config/msg_i18n.go
推理提示词正文(段 [A])❌ 永不翻译agent/prompt.go
命令/payload/日志原文❌ 逐字保留langDirective 硬性要求

一句话总结:ARTEX 的多语言支持 = 本地化用户看到的一切表面 + 保持推理大脑逐字不变,再用代码持有的语言规约尾部和自动化测试,把「语言漂移」挡在门外。对新手来说,记住一点即可:设置页选一次语言,界面、报告、对话全跟着变;而证据原文,永远保持原样。

【免费下载链接】artex-global

Global edition of ARTEX — an LLM multi-agent autonomous penetration-testing framework. English default, switchable to Korean/Chinese/Spanish/Japanese. For authorized, defensive and detection use only. (upstream: Autumn-27/ARTEX, AGPL-3.0)

项目地址:https://gitcode.com/gh_mirrors/ar/artex-global
点击查看免费下载

相关推荐

上一篇:Darknet可视化工具:训练过程中的损失曲线与mAP监控
下一篇:Autoprefixer与Tailwind CSS:实用优先框架的兼容性终极指南

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进