1. DITA 文档团队的真实选型困境:Oxygen AI 与 Claude Code 到底怎么分工
DITA 文档写作这件事,一旦团队规模超过三个人,工具选型就会变成一个绕不开的话题。DITA 是一套基于 XML 的结构化写作规范,核心思想是把内容拆成可复用的主题(Topic),再通过 DITA Map 组装成手册、指南或知识库。它最大的价值在于内容复用和跨格式发布,但代价是标签规则极其严格——<task>里子元素的出现顺序、<concept>里允许嵌套的标签类型、conref引用的路径合法性,每一项都有明确约束。
我接触过不少技术文档团队,他们面临的典型场景是这样的:手头有一批 Word 遗留文档要转成 DITA,同时新版本手册要持续迭代,还要支持多语言翻译和 PDF/HTML5 双通道发布。团队里有人提议用 Claude Code 来写 DITA,理由是它能读写文件、能跑命令行、还能装 Skill,看起来什么都能干。但真正上手之后会发现,Claude Code 对 DITA 的标签语义和结构约束并不了解,写出来的内容经常需要大量人工修正。
Oxygen AI Positron(以下简称 OAP)则是另一条路线。它嵌在 Oxygen XML Editor 里,天生理解 DITA 的标签体系和复用机制,写文档时能实时校验标签合法性,还能直接调用发布引擎。但它的通用对话能力和自动化集成能力不如 Claude Code 灵活。
所以问题不是“谁替代谁”,而是“在 DITA 全流程的哪个环节,用哪个工具更合适”。这篇文章会从统一 Key 接入的角度切入,给出两条路线在 DITA 主题编写、复用与校验中的具体差异,并附上可复制的配置片段和验证动作。如果你正在做 DITA 结构化写作,或者团队正在调研 AI 辅助文档工具,下面的内容可以直接跟做。
2. TaoToken 统一 Key 接入:让 Oxygen AI 与 Claude Code 共用一条 API 通道
在讨论具体工具差异之前,先解决一个前置问题:API 通道。不管是 OAP 还是 Claude Code,它们背后都需要调用大模型。如果每个工具单独申请 Key、单独配置 Base URL,团队管理起来会很乱。TaoToken 的作用就是提供一条统一的 API 通道,让不同工具共用同一个 Key 和 Base URL。
TaoToken 的官网是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 入口是 https://taotoken.net/api 。它的核心价值在于:你只需要申请一个 Key,就可以在 Claude Code、OAP、Cline、Codex 等多个工具里复用。对于 DITA 团队来说,这意味着文档工程师用 OAP 写主题、开发工程师用 Claude Code 做 CI 自动化,两边可以走同一条 API 通道,计费和权限管理也统一了。
具体接入时,你需要关注三个参数:Base URL、API Key、Model ID。Base URL 填https://taotoken.net/api,API Key 在 TaoToken 控制台的 API Keys 页面生成,Model ID 根据你实际使用的模型填写。下面给出 Claude Code 和 OAP 两边的配置方式。
Claude Code 的配置通常在~/.claude/settings.json或项目根目录的.claude/settings.json里。你需要设置环境变量ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY。如果你用的是 Codex 或 Cline,配置方式类似,但文件路径不同。Codex 的配置在~/.codex/auth.json,Cline 的 MCP 配置在 VS Code 的settings.json里。
OAP 的配置则在 Oxygen XML Editor 的 Preferences 里,找到 AI Positron 相关设置,填入 Base URL 和 API Key。OAP 支持自定义模型端点,所以你可以把 TaoToken 的 API 地址填进去。
这里有一个关键点:OAP 和 Claude Code 对 API 的调用格式可能略有差异。OAP 通常走 OpenAI 兼容格式,Claude Code 走 Anthropic 格式。TaoToken 的 API 网关会做协议转换,所以你不需要在两边分别适配。实测下来,只要 Base URL 和 Key 填对,两边都能正常返回结果。
如果你还没有 Key,可以去 TaoToken 控制台的 API Keys 页面生成一个。生成之后,建议先在模型对话页面做一次简单验证,确认 Key 可用,再配置到具体工具里。模型对话的入口在 https://taotoken.net/api ,登录后可以看到对话界面。
3. 可复制配置片段:Claude Code 与 Oxygen AI 的 Base URL 与 Key 设置
这一节给出具体的配置文件片段,你可以直接复制到自己的项目里。先说明一点:不同版本的 Claude Code 和 Oxygen XML Editor 配置文件路径可能略有差异,下面以当前主流版本为准。如果你用的是 CC Switch 或 Cline MCP,配置方式会在后面补充。
3.1 Claude Code 的 settings.json 配置
Claude Code 读取配置的优先级是:项目级.claude/settings.json> 用户级~/.claude/settings.json。建议在项目根目录创建.claude/settings.json,这样团队共享同一个配置。
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的TaoTokenKey", "ANTHROPIC_MODEL": "claude-sonnet-4-20250514" }, "permissions": { "allow": [ "Read", "Write", "Bash(git:*)" ] } }这里ANTHROPIC_BASE_URL填 TaoToken 的 API 地址,ANTHROPIC_API_KEY填你在控制台生成的 Key,ANTHROPIC_MODEL填你要用的模型 ID。Model ID 需要和 TaoToken 支持的模型列表一致,具体可以在控制台查看。
如果你用的是 Codex,配置文件在~/.codex/auth.json,格式如下:
{ "openai_api_key": "sk-你的TaoTokenKey", "base_url": "https://taotoken.net/api" }Codex 的配置相对简单,只需要 Key 和 Base URL。但要注意,Codex 默认走 OpenAI 格式,TaoToken 的网关会自动做协议转换。
3.2 Oxygen AI Positron 的配置
OAP 的配置在 Oxygen XML Editor 的 Preferences 里。打开Options > Preferences > AI Positron,找到 API 设置区域。你需要填写:
- API Provider:选择 Custom 或 OpenAI Compatible
- Base URL:
https://taotoken.net/api - API Key:
sk-你的TaoTokenKey - Model:选择你需要的模型
OAP 的配置文件通常保存在 Oxygen 的全局配置目录里,Windows 下是%APPDATA%\com.oxygenxml\,macOS 下是~/Library/Preferences/com.oxygenxml/。如果你需要团队统一配置,可以把配置文件放到项目目录里,通过 Oxygen 的项目级设置加载。
3.3 Cline MCP 的配置
如果你在 VS Code 里用 Cline,MCP 配置在.vscode/settings.json或全局 settings 里。格式如下:
{ "cline.mcpServers": { "taotoken": { "command": "npx", "args": ["-y", "@taotoken/mcp-server"], "env": { "TAOTOKEN_BASE_URL": "https://taotoken.net/api", "TAOTOKEN_API_KEY": "sk-你的TaoTokenKey" } } } }Cline 的 MCP 配置需要指定 command 和 args,env 里填 Base URL 和 Key。这样 Cline 就可以通过 TaoToken 的通道调用模型。
3.4 CC Switch 的配置
CC Switch 是一个 Claude Code 的配置切换工具,如果你需要在多个 API 通道之间切换,可以用它。配置方式是在 CC Switch 里添加一个 Profile,填入 Base URL 和 Key,然后切换到该 Profile。CC Switch 的配置文件通常在~/.cc-switch/config.json,格式如下:
{ "profiles": [ { "name": "taotoken", "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的TaoTokenKey", "model": "claude-sonnet-4-20250514" } ] }配置完成后,在 CC Switch 里选择 taotoken 这个 Profile,Claude Code 就会走 TaoToken 的通道。
这里提醒一点:不管用哪个工具,Base URL 都填https://taotoken.net/api,不要加多余的路径。Key 要妥善保管,不要提交到 Git 仓库里。建议用环境变量或本地配置文件的方式管理。
4. 验证请求与成功结果:DITA 样例工程的实测记录
配置完成之后,下一步是验证请求是否正常。这一节给出一个 DITA 样例工程的验证动作和结果记录方式,你可以直接跟做。
4.1 准备 DITA 样例工程
先创建一个简单的 DITA 工程,包含一个 DITA Map 和两个 Topic。目录结构如下:
dita-sample/ ├── maps/ │ └── sample.ditamap ├── topics/ │ ├── overview.dita │ └── install.dita └── .claude/ └── settings.jsonsample.ditamap的内容:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE map PUBLIC "-//OASIS//DTD DITA Map//EN" "map.dtd"> <map> <title>Sample Manual</title> <topicref href="topics/overview.dita"/> <topicref href="topics/install.dita"/> </map>overview.dita的内容:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> <concept id="overview"> <title>Overview</title> <conbody> <p>This is the overview topic.</p> </conbody> </concept>install.dita的内容:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd"> <task id="install"> <title>Install</title> <taskbody> <steps> <step><cmd>Download the package.</cmd></step> <step><cmd>Run the installer.</cmd></step> </steps> </taskbody> </task>4.2 用 Claude Code 验证请求
在项目根目录打开终端,运行 Claude Code:
claude然后输入一个简单请求:
请读取 topics/install.dita,并在 steps 里增加一个步骤:验证安装是否成功。如果配置正确,Claude Code 会返回修改后的内容。你可以检查install.dita是否被正确修改。实测下来,Claude Code 能正确读取文件并追加步骤,但它不会自动校验 DITA 标签的合法性。比如它可能会在<steps>里插入一个<p>标签,而 DITA 规范要求<steps>里只能放<step>。
4.3 用 Oxygen AI 验证请求
在 Oxygen XML Editor 里打开install.dita,然后打开 AI Positron 面板。输入同样的请求:
在 steps 里增加一个步骤:验证安装是否成功。OAP 会返回修改建议,并且会在编辑器里实时校验标签合法性。如果它插入的标签不符合 DITA 规范,编辑器会立刻标红提示。实测下来,OAP 生成的步骤会自动使用<step><cmd>结构,不会出现标签错位的问题。
4.4 结果记录方式
建议用一个简单的表格记录验证结果,方便团队对比:
| 验证项 | Claude Code | Oxygen AI |
|---|---|---|
| 读取 DITA 文件 | 正常 | 正常 |
| 追加步骤 | 正常,但标签可能不合法 | 正常,标签自动合法 |
| 实时校验 | 无 | 有 |
| 跨文件引用检查 | 无 | 有 |
| 发布预览 | 无 | 有 |
这个表格可以作为团队选型的参考依据。如果你需要更详细的验证,可以尝试让两个工具分别处理一个包含conref引用的 DITA 文件,观察它们对引用路径的处理方式。
5. 本篇常见错排查:401、local proxy failed、reading choices、OAuth 报错怎么处理
配置过程中最容易遇到的几个报错,这里逐一说明排查方法。
5.1 401 Unauthorized
这是最常见的报错,通常是因为 API Key 填错了或者过期了。排查步骤:
第一,检查 Key 是否复制完整。TaoToken 的 Key 通常以sk-开头,后面跟一长串字符。复制时容易漏掉末尾几位。
第二,检查 Base URL 是否填对。Claude Code 的ANTHROPIC_BASE_URL应该填https://taotoken.net/api,不要加/v1或其他路径。OAP 的 Base URL 同样填这个地址。
第三,检查 Key 是否在 TaoToken 控制台被禁用或删除。登录控制台的 API Keys 页面,确认 Key 的状态是 active。
如果以上都正常,但仍然报 401,可以尝试重新生成一个 Key,然后更新配置文件。
5.2 local proxy failed
这个报错通常出现在 Claude Code 启动时,提示本地代理失败。原因可能是环境变量里设置了HTTP_PROXY或HTTPS_PROXY,但代理地址不可用。排查方法:
第一,检查环境变量:
echo $HTTP_PROXY echo $HTTPS_PROXY如果输出不为空,说明设置了代理。你可以临时取消:
unset HTTP_PROXY unset HTTPS_PROXY第二,检查 Claude Code 的配置文件里是否有代理相关设置。如果有,删除或注释掉。
第三,如果你在公司网络环境下,可能需要联系网络管理员确认出口策略。但注意,这里不讨论任何绕过网络限制的方法,只做常规排查。
5.3 reading choices 报错
这个报错通常出现在模型返回结果解析失败时。可能的原因是 Model ID 填错了,或者 TaoToken 网关返回的格式与工具预期不一致。排查方法:
第一,确认 Model ID 是否在 TaoToken 支持的模型列表里。不同模型返回的格式可能略有差异。
第二,检查请求是否超时。如果网络不稳定,模型返回可能被截断,导致解析失败。可以尝试增加超时时间。
第三,如果问题持续,可以在模型对话页面单独测试该 Model ID,确认模型本身可用。
5.4 OAuth 报错
如果你用的是 Claude Code 的 OAuth 登录方式,可能会遇到 OAuth 报错。这是因为 Claude Code 默认走 Anthropic 的 OAuth 流程,但你已经配置了自定义 Base URL。解决方法:
第一,确认你使用的是 API Key 方式,而不是 OAuth 方式。在settings.json里设置ANTHROPIC_API_KEY,而不是依赖 OAuth token。
第二,如果 Claude Code 仍然尝试 OAuth 登录,可以检查是否有残留的 OAuth 配置文件。通常在~/.claude/目录下,删除oauth.json或类似文件。
第三,重新启动 Claude Code,确认它读取的是settings.json里的 API Key 配置。
5.5 DITA 标签校验报错
如果你用 Claude Code 修改 DITA 文件后,在 Oxygen 里打开报标签错误,这是预期行为。Claude Code 不理解 DITA 的标签约束,所以它生成的内容需要经过 Oxygen 的 DITA 校验。排查方法:
第一,在 Oxygen 里打开报错文件,查看具体是哪个标签不合法。
第二,用 Oxygen 的 DITA 校验功能自动修复,或者手动调整标签顺序。
第三,如果错误较多,建议回滚 Claude Code 的修改,改用 OAP 重新生成。
这里再强调一次:Claude Code 可以辅助 DITA 写作,但入库前必须经过 Oxygen 的 DITA 校验。这是红线。
6. 语义一致 CTA:DITA 团队的统一 Key 接入与工具分工建议
回到最初的问题:做 DITA 文档,用 Oxygen AI 还是 Claude Code?我的建议是两者都用,但分工明确。OAP 负责内容创作、DITA 校验、复用管理和发布预览,Claude Code 负责需求梳理、CI 自动化和批量处理。两边通过 TaoToken 的统一 Key 接入,共用一条 API 通道,团队管理起来更简单。
如果你还没有 TaoToken 的 Key,可以去 https://taotoken.net/api-keys 生成一个。生成之后,先在模型对话页面做一次简单验证,确认 Key 可用。模型对话的入口在 https://taotoken.net/api ,登录后可以看到对话界面。
如果你需要长期做 DITA 文档的 AI 辅助写作,可以考虑 Coding Plan,它提供了更稳定的调用额度和更灵活的计费方式。Coding Plan 的入口在 https://taotoken.net/coding-plan 。
接入文档和详细配置说明在 https://taotoken.net/doc ,里面有 Claude Code、OAP、Cline、Codex 等工具的完整配置示例。如果你在配置过程中遇到问题,可以先查文档,再对照第 5 节的排查方法。
最后给一个实用建议:在 DITA 项目里,把.claude/settings.json和 Oxygen 的 AI 配置都纳入版本管理,但 Key 不要提交到 Git。可以用环境变量或本地覆盖文件的方式管理 Key。这样团队新成员拉取项目后,只需要填入自己的 Key 就能开始工作。