ai-powered-markdown-translator使用 gpt-5.4-mini 将文章从法语翻译成中文。
我很高兴向你介绍我的项目 AI-Powered Markdown Translator,这是一个开源 Python 脚本,用于自动翻译我博客中的 Markdown 文件,以及我 GitHub 仓库中的部分 README/文档。通过集成 OpenAI、Mistral AI、Anthropic(Claude) 和 Google Gemini 等前沿人工智能模型,这个工具能够将文章、README 和技术文档翻译成 14 种语言,同时保留其结构和格式。这个项目展现了我在自动化、AI 集成和可靠性工程方面的能力,也体现了我让技术内容惠及所有人的热情。
这不只是一个脚本:它是我专业能力与我对更具包容性的数字世界愿景的证明。
为什么要做这个项目?
Markdown 文件是我数字生态中的核心:它们承载着我的博客文章、教程和开源文档。通过自动化翻译,我让我的内容能够被全球受众访问。如今,我的博客已借助这个脚本提供 14 种语言 版本——目前在线的已翻译版本(按量级估算,不含法语源文)已接近 1,800 个,并且随着每次发布还在持续增长,全部托管在 jls42.org 上。
v1.9(2026 年 5 月)标志着一个新阶段:以凭感觉(vibe coding)的方式进行 AI 结对开发(Claude Code + Codex),并由一套工业级质量栈保驾护航(14 个 hooks、229 个测试、SonarCloud、AI 辅助 PR 审查),目标是在每一行都未必手工复查的情况下,依然保持代码整洁。
以下是这个脚本在真实场景中的具体示例:
- 这个 jls42.org 博客提供 14 种语言版本——整个多语言编辑体验(文章、项目、AI 新闻)都由这个脚本生成。比如,你可以浏览站点的德语版、日语版、中文版、西班牙语版或阿拉伯语版——所有翻译过的编辑内容都经过它处理(而界面元素则来自 Astro 原生的 i18n 系统)。
- 项目自己的 README 也在 GitHub 上被翻译成 14 种语言。示例:英语、西班牙语、中文。
这个项目展示了 AI 如何在促进可访问性的同时解决实际问题。
我的能力亮点
这个项目是我技术能力的一面窗口。它重点体现了以下几点:
- 多模型编排:用 Claude Code 的 Opus 开发,Codex 作为回退(fallback),GPT-5.5 reasoning extra-high 用于在执行前挑战方案,
/pr-review-toolkit用于合并前审查 - 多 AI API 集成:连接了 4 个提供商(OpenAI、Mistral AI、Claude、Gemini),并针对各自 API 的特性进行了适配(
finish_reason/stop_reason处理、响应格式、token 限制) - 可靠性工程:双层翻译后验证(确定性防止逐字泄漏 + 概率式
langdetect)、静默失败(silent failures)检测、显式状态返回 - 工业级质量栈:14 个自动化 hooks(ruff、mypy、shellcheck、Opengrep SAST、pip-audit、Lizard…)、229 个 unittest 测试、11 个 SonarCloud 徽章,以及 Codacy 和 CodeFactor
- 开源精神:可在 GitHub 上获取,采用 GPLv3 许可,README 已翻译成 14 种语言
这些方面体现了我构建强大、可靠且可长期维护工具的能力。
主要功能
这个脚本提供了以下能力:
- 多提供商:支持 4 个 API(OpenAI、Mistral AI、Claude、Gemini)
- 2026 模型:默认使用 GPT-5.5、Claude Sonnet 4.6、Gemini 3.1 Pro
- 经济模式(
--eco):更快、成本更低的模型 - 单文件模式(
--file):只翻译单个文件,而不是整个目录 - 保留文件名(
--keep_filename):保留原始文件名和扩展名(非常适合 Astro、Hugo 等) .env支持:从.env文件中自动加载 API 密钥.mdx文件支持:除传统.md文件之外- 保留格式:代码块、内联代码、链接和元数据都会保持不变
v1.9 新增内容(2026 年 5 月):
- 翻译后验证:自动检测静默失败(silent failures)——检查目标语言是否正确,并在所有提供商上拦截截断问题。
- 多位置注释(
--note_position,--note_format):顶部、底部或两者都放;支持传统格式(legacy)或标记格式(marker format),兼容 GitHub 嵌入卡片(embed card)。 - 增强的
--news模式:该模式在 v1.8 中已引入,用于通过占位符保护英文来源引文;在 v1.9 中,它获得了更严格的恢复后验证(残留占位符即报错、验证原始引文和归属 URL、检查目标/源标记)——已用于博客中的所有ia-actualites文章。
| 提供商 | 质量(默认) | 经济模式(--eco) |
|---|---|---|
| OpenAI | gpt-5.5 | gpt-5.4-mini |
| Claude | claude-sonnet-4-6 | claude-haiku-4-5-20251001 |
| Mistral | mistral-large-latest | mistral-small-latest |
| Gemini | gemini-3.1-pro-preview | gemini-3.1-flash-lite-preview |
v1.0 → v1.9 演进
| 版本 | 日期 | 主要变化 |
|---|---|---|
| 1.0–1.4 | 2024 | OpenAI,随后是 Mistral,再随后是 Claude |
| 1.5 | 2024 年 9 月 | 重构客户端,2024 模型(gpt-4o、claude-3.5-sonnet) |
| 1.6 | 2026 年 1 月 | 2026 模型(gpt-5、claude-sonnet-4-5、gemini-3-pro)、Gemini、--eco 模式、单文件(--file) |
| 1.7 | 2026 年 1 月 | --keep_filename、.env、保留内联代码 |
| 1.8 | 2026 年 3 月 | 默认 GPT-5.4 模型,带引用占位符的 --news 模式 |
| 1.9 | 2026 年 5 月 | 翻译后验证、多位置注释、14 hooks + 229 tests + AI 审查的质量栈 |
凭感觉开发 + 保护措施
整个 v1.9 都是在 AI 结对开发中完成的。我的流程是:Claude Code(仅限 Opus)负责编写代码,Opus 卡住或使用窗口耗尽时由 Codex 接手,GPT-5.5(reasoning extra-high)会在执行前挑战方案,而 /pr-review-toolkit:review-pr skill 会在每次合并前审阅 PR。我自己不会手工复查代码。为了让这种开发方式能够在生产环境中可行,我投入了一套相称的保护措施:
- 14 个 hooks 自动化检查(pre-commit + pre-push):shellcheck、ruff、prettier、detect-secrets、Lizard CCN、mypy、Opengrep SAST、pip-audit、unittest
- 229 个 unittest 测试(v1.9 新代码约 98% 覆盖率)
- 实战测试:针对多个仓库的不同 README 进行测试,在博客上进行产品内自用(dogfooding)(生产即真实测试),以及可视化渲染检查(浏览器或 Markdown 预览)
- 3 个外部平台:SonarCloud(11 个徽章)、Codacy、CodeFactor
/pr-review-toolkit:review-prskill:合并前的多智能体 AI 辅助审查- 双层翻译后验证:确定性(防止逐字泄漏)+ 概率式(
langdetect)
重点不是证明我会做传统工程。重点是别无选择:未经人工复查的 AI 代码,应该配备更多而不是更少的防护措施。这种纪律在技术深度解析中有详细说明。
在这个博客上的实际运行
这个项目会自我翻译:它的 README 有 14 种语言版本,并且负责生成这个博客的所有多语言版本。
- 博客文章、4 个项目和98 篇 ia-actualites 文章合计形成了接近 1,800 个已翻译版本,不含法语源文(各语言覆盖率会因内容而异)
--news模式在ia-actualites文章中被系统性使用,以保留英文来源引文- v1.9 保护措施自 2026 年 5 月起生效:自从引入双层翻译后验证以来,我再也没有检测到目标语言的 silent-failure
- 元一致性:你现在看到的英文、德文、日文等页面,都是由这个脚本翻译出来的
进一步了解
如果你想了解 v1.9 是如何产出的(新增功能详情、多模型工作流、以及为了在不逐行复查的情况下追求整洁代码而设置的保护措施),可以阅读完整技术深度解析。
如果你想把这次发布与更早版本的语气做对比,2024 年关于 v1.5 的文章采用了更传统的 release notes 格式。
亲自试试
在 GitHub 上查看这个项目,使用你的 Markdown 文件来测试它,并分享你的反馈。你的想法能帮助我把它打磨得更好!