ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

用 AI Coding 工具生成万字奇幻世界设定的实践记录:TaoToken 统一 Key 打通 Claude Code 与 GLM Coding Plan

用 AI Coding 工具生成万字奇幻世界设定的实践记录:TaoToken 统一 Key 打通 Claude Code 与 GLM Coding Plan 1. 万字奇幻设定为什么需要多模型协作写奇幻世界设定这件事单靠一个模型很容易陷入套路。我试过让同一个模型连续生成十个城邦结果每个城邦的议会结构、魔法体系、甚至地名后缀都开始重复。后来我把任务拆开让 Claude Code 负责世界观骨架和逻辑自洽性检查让 GLM Coding Plan 负责批量填充细节和中文语感润色两边交替产出设定集的丰富度明显上来了。但多模型协作立刻带来一个新问题鉴权管理。Claude Code 走的是 Anthropic 格式的接口GLM Coding Plan 走的是另一套通道如果每个工具都单独配一套 Base URL 和 Key切换一次就要改一次环境变量写到第三万字的时候人已经烦了。TaoToken 在这里的作用就是提供一个统一的 Key 和 API 通道把两个模型的调用收敛到同一个入口你只需要维护一份凭证。这篇文章面向的是用 AI Coding 工具做长文本创作的写作者尤其是那些已经在用 Claude Code、又想接入 GLM Coding Plan 的人。核心检索词是 AI Coding 工具的多模型协作与统一鉴权。我会给出可复制的配置片段、Skills 目录结构以及一次完整的设定生成与结果校验动作。全程不需要你懂后端只要会改 JSON 和跑命令行就行。先说清楚预期这套流程跑通后你可以在 Claude Code 里用一条命令生成某个区域的完整设定再切到 GLM 通道做中文润色两边共用同一个 Key不用反复登录。适合谁适合已经写过几千字设定、开始觉得单模型不够用的人。如果你还没装过 Claude Code也没关系下面的步骤从零开始。2. TaoToken 统一 Key 的前置准备与通道配置在动手之前先把 TaoToken 的账号和 Key 准备好。打开官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册后进入控制台 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 创建一个 API Key。这个 Key 就是后面 Claude Code 和 GLM Coding Plan 共用的凭证复制下来存好别贴在公开仓库里。接下来要理解一个关键点Claude Code 默认只认 Anthropic 格式的接口而 GLM Coding Plan 有自己的调用方式。TaoToken 的 API 地址是 https://taotoken.net/api它同时兼容这两种格式所以你不需要额外装转换层。如果你之前用过 claude-code-router 这类项目可以暂时放一边统一通道能省掉一层维护。配置分两个作用域。用户级配置写在~/.claude/settings.json对所有项目生效项目级配置写在仓库的.claude/settings.json只影响当前设定集项目。我建议把 Key 放在用户级把模型选择放在项目级这样换项目不用重新填 Key。先建用户级配置。打开终端创建目录并写入文件mkdir -p ~/.claude cat ~/.claude/settings.json EOF { env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: sk-你的TaoToken密钥 } } EOF注意ANTHROPIC_AUTH_TOKEN后面换成你在控制台复制的真实 Key。这个文件不要提交到 git建议在全局.gitignore里加上.claude/settings.local.json。然后是项目级配置。在你的设定集项目根目录下建.claude/settings.json指定默认模型和权限{ model: claude-sonnet-4-20250514, permissions: { allow: [ Read(./worldbuilding/**), Write(./worldbuilding/**) ], deny: [ Read(./.env), Bash(rm:*) ] } }这里的worldbuilding是我放设定草稿的目录你可以换成自己的。权限配置遵循最小权限原则只允许读写设定目录禁止读取环境变量和删除操作避免模型误伤其他文件。如果你还想在同一个项目里调用 GLM Coding Plan不需要再写一份配置。TaoToken 的通道已经做了模型路由你只需要在请求时指定模型 ID。GLM 系列的模型 ID 可以在接入文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里查到常见的是glm-4-plus这类命名。切模型时改model字段即可Key 和 Base URL 保持不变。这一步做完你的环境里就有了一份统一的鉴权配置。接下来验证它是否生效。3. 可复制的 Skills 目录结构与配置片段Claude Code 的 Skills 机制是批量生成设定的核心。它的逻辑是懒加载启动时只读每个 Skill 的元数据真正用到时才加载完整内容。这意味着你可以准备十几个设定生成技能而不会拖慢启动速度。先看目录结构。在项目根目录下建.claude/skills/每个技能一个子目录里面放一个SKILL.md.claude/ skills/ world-builder/ SKILL.md templates/ region.md faction.md lore-checker/ SKILL.md name-generator/ SKILL.md data/ syllables.jsonworld-builder负责生成区域和势力设定lore-checker负责检查设定之间的逻辑冲突name-generator负责批量产出符合语言风格的地名和人名。三个技能配合就能覆盖万字设定的主要产出环节。SKILL.md的写法有讲究。它需要包含 YAML 前置元数据和正文说明。以world-builder为例--- name: world-builder description: 生成奇幻世界的区域、势力、历史事件设定输出结构化 Markdown --- # 世界构建技能 当用户要求生成区域、城邦、势力或历史事件时使用本技能。 ## 输出格式 每个区域包含地理特征、主要势力、经济基础、魔法关联、当前冲突。 ## 约束 - 地名使用 name-generator 技能产出的词根 - 势力关系必须与已有设定不冲突 - 每个区域不少于 800 字description字段很关键Claude Code 靠它判断什么时候激活这个技能。写得太窄会漏触发写得太宽会误触发。我的经验是把触发场景写具体比如「生成区域、城邦、势力」比「生成设定」更准。lore-checker的配置稍有不同它需要读取已有设定文件--- name: lore-checker description: 检查新生成的设定与已有设定是否存在逻辑冲突 --- # 设定一致性检查 读取 worldbuilding/ 目录下所有 .md 文件对比新设定中的势力名称、地理关系、时间线。 ## 检查项 - 同一势力是否在不同区域有矛盾描述 - 地理距离与行军时间是否合理 - 魔法体系规则是否被违反 ## 输出 列出冲突点标注涉及的文件和行号给出修改建议。name-generator可以带一个数据文件把音节表放在data/syllables.json技能正文里说明如何组合。这样生成的地名会有统一的语感不会一会儿像精灵语一会儿像日语。配置完成后在 Claude Code 里输入/skills可以查看已加载的技能列表。如果某个技能没出现检查SKILL.md的 YAML 头是否格式正确尤其是---分隔符不能少。这里要提醒一点Skills 是自动触发的但你可以用自然语言引导。比如「用 world-builder 生成北境三个城邦」比「生成城邦」更容易命中。如果发现技能没被激活直接在对话里点名即可。4. 一次设定生成与结果校验的完整验证配置就绪后跑一次完整的生成和校验确认通道和技能都正常工作。打开终端进入项目目录启动 Claude Codecd ~/my-fantasy-world claude第一次启动会读取~/.claude/settings.json里的 Base URL 和 Key。如果配置正确你会看到欢迎信息没有报错。先做一次最小验证确认 API 通道通。在 Claude Code 里输入用一句话描述一个被永夜笼罩的港口城市如果返回了合理的中文描述说明 TaoToken 通道和 Claude 模型都正常。如果报 401跳到第 5 节排查。接下来生成正式设定。输入用 world-builder 技能生成「灰烬群岛」区域设定包含三个主要势力 每个势力不少于 300 字地理特征要体现火山地貌。Claude Code 会自动激活world-builder读取模板产出结构化 Markdown。生成过程中你可以看到它调用了哪些工具。产出结果类似## 灰烬群岛 ### 地理特征 灰烬群岛位于大陆东南由七座火山岛组成…… ### 主要势力 #### 熔炉议会 控制着最大的火山口以锻造和武器贸易为经济基础…… #### 潮汐教团 信奉海底火山的神性掌握着独特的潮汐魔法…… #### 灰羽商队 游走于各岛之间的中立势力垄断了群岛与大陆的贸易……生成完成后立刻做一致性校验。输入用 lore-checker 检查 worldbuilding/ 目录下的所有设定lore-checker会读取已有文件对比新生成的灰烬群岛设定。如果之前已经写过「大陆东南」的其他区域它会指出地理冲突如果熔炉议会的势力范围和已有设定重叠也会标出来。校验通过后切到 GLM 通道做中文润色。在 Claude Code 里改模型/model glm-4-plus然后输入润色 worldbuilding/灰烬群岛.md保持设定内容不变 提升中文表达的文学性避免翻译腔。这一步走的是同一个 TaoToken Key只是模型 ID 不同。GLM 的中文语感在处理「潮汐教团」这类带有东方神秘色彩的设定时比 Claude 更自然。润色完成后用git diff对比改动确认没有丢失关键设定信息。整个流程从生成到校验到润色大约十分钟产出一千五百字左右的可用设定。按这个节奏万字设定分七八轮就能完成。如果你要验证模型对话本身是否正常可以打开模型对话页面 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentchatutm_campaignrewrite 单独测试确认 Key 的额度充足。5. 常见报错排查401、local proxy failed 与 OAuth多模型协作最容易卡在鉴权环节。下面是我实际遇到过的几类报错以及对应的排查路径。401 Unauthorized。这是最常见的。先检查~/.claude/settings.json里的ANTHROPIC_AUTH_TOKEN是否完整有没有多余空格。然后确认 Key 没有过期或被禁用去控制台 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 看一眼状态。如果 Key 正常检查ANTHROPIC_BASE_URL是不是写成了https://taotoken.net/api/带尾斜杠某些版本对尾斜杠敏感去掉试试。local proxy failed。这个报错通常出现在你之前装过本地代理工具的情况下。Claude Code 会优先读取环境变量里的HTTP_PROXY或HTTPS_PROXY如果这些变量指向一个已经关闭的本地端口就会报 local proxy failed。解决办法是清掉这些变量unset HTTP_PROXY unset HTTPS_PROXY unset ALL_PROXY然后在同一个终端里重新启动 Claude Code。如果你在.zshrc或.bashrc里写死了代理变量记得注释掉再开新终端。reading choices 相关报错。这个一般出现在用 OpenAI 格式调用时返回结构里没有choices字段。原因通常是模型 ID 写错了或者请求发到了不兼容的端点。检查你的model字段是否是 TaoToken 支持的 IDGLM 系列要用glm-4-plus这类命名不要写成gpt-4。如果确认 ID 正确去接入文档核对端点路径。OAuth 报错。Claude Code 某些版本会尝试走 OAuth 登录流程如果你用的是 API Key 模式需要在配置里显式禁用 OAuth。在settings.json里加上{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: sk-你的密钥, CLAUDE_CODE_DISABLE_OAUTH: 1 } }这个环境变量告诉 Claude Code 不要走 OAuth直接用 Token。改完重启生效。技能不触发。如果world-builder没被激活先确认.claude/skills/world-builder/SKILL.md存在且 YAML 头格式正确。然后在对话里直接点名「用 world-builder 技能」强制触发一次。如果还是不行检查description字段是否被正确解析可以用/skills命令查看加载状态。模型切换后报错。从 Claude 切到 GLM 时如果报模型不存在说明model字段的值不在 TaoToken 的支持列表里。去接入文档查最新的模型 ID注意大小写和连字符。切换模型不需要改 Key 和 Base URL只改model一个字段。排查时养成看日志的习惯。Claude Code 的详细日志可以用claude --debug启动会打印每次请求的 URL 和响应状态定位问题比猜快得多。6. 长期编码与 Agent 场景的通道选择写到三万字以上你会发现单次对话已经装不下所有设定。这时候需要把上下文管理起来让模型在生成新内容时能参考已有设定。Claude Code 的 Memory 机制可以解决这个问题在项目根目录放一个CLAUDE.md把核心设定摘要写进去每次启动都会自动加载。但 Memory 会占用上下文窗口设定越多留给生成的空间越少。我的做法是把CLAUDE.md控制在两千字以内只放势力名称、地理关系、魔法体系的核心规则细节留在worldbuilding/目录里让lore-checker按需读取。如果你要跑批量生成比如一次性产出二十个城邦建议用 Coding Plan 而不是按次调用。Coding Plan 页面 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 有包月方案适合高频调用。批量任务可以写成一个脚本循环调用 API每次生成一个城邦中间用lore-checker校验避免设定冲突累积。对于更复杂的 Agent 场景比如让模型自主规划「先写地理、再写势力、最后写历史」的多步骤任务Claude Code 的 Agent 机制比 Skill 更合适。Agent 有独立的上下文不会污染主对话。你可以定义一个world-architectAgent给它只读权限和设定目录的访问权让它自主完成整个区域的构建。通道选择上短期试验用模型对话页面快速验证长期项目用 Coding Plan 包月批量任务走 API 直连。三种方式共用同一个 TaoToken Key切换成本很低。最后给一个实用技巧把每次生成的设定用 git 提交commit message 写清楚生成了哪个区域、用了哪个模型。这样当设定出现矛盾时可以快速定位是哪次生成引入的。我现在的设定集有四十多次提交回滚和对比都很方便。写到这个阶段工具已经不再是瓶颈真正决定质量的是你对世界内在逻辑的把控。
返回列表