ARTICLE DETAIL

资讯详情

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

Node 环境跑 docmd,AI 助手 Token 从 TaoToken 出

Node 环境跑 docmd,AI 助手 Token 从 TaoToken 出 1. 从 docmd AI 助手 401/404 切入Token 应该从 TaoToken 出在 Node 20 环境里跑 docmd页面能打开但内置 AI 助手一问就 401/404这类问题通常不是 Markdown 写错而是 AI 助手的 Key 和 Base URL 没落到 TaoToken。先到 TaoToken 官网 创建 Key后面所有配置都以https://taotoken.net/api为 Base URL。本文面向 Node 开发者目标很具体在 Node 环境把 docmd 跑起来让它把 Markdown 资料变成文档站并让文档站里的 AI 助手通过 TaoToken 取 Token。真正消耗 Token 的是 docmd 内置 AI 助手不是 Markdown 渲染也不是静态站构建。因此你要区分两条链路一条是 Node CLI 构建与本地预览另一条是 AI 助手的模型请求。前者依赖 Node 版本和启动命令后者依赖Base URL API Key 模型 ID。只要其中任意一项错了就会出现“站点正常、AI 助手报错”的割裂现象。下面按可复现顺序拆开先确认 Node 版本再启动 docmd再写环境变量模板最后把 Claude Code、Codex、CC Switch 的配置分开处理避免把ANTHROPIC_*错套到 Codex 上。2. Node 版本与 docmd 启动命令先把 Markdown 站跑起来docmd 属于 Node 侧工具链最稳妥的做法是使用仍然维护中的 LTS。建议 Node20.11.0以上优先20.18.x或22.12.xnpm 建议10pnpm 建议9。如果你还在 Node 16 或早期 Node 18常见现象是 CLI 能安装但执行时报ERR_REQUIRE_ESM、fetch is not defined、structuredClone is not defined或者在读取 Markdown 目录时因为文件系统 API 差异中断。docmd 的 AI 助手还会涉及流式响应、fetch、AbortController等能力这些在较新的 Node LTS 中更稳定。先检查本机环境node -v npm -v corepack enable pnpm -v如果node -v低于20.11.0不要硬跑。用 nvm、fnm 或 Volta 切到 Node 20 LTSnvm install 20 nvm use 20 node -v接着确认 docmd CLI 是否可执行。不同版本的 docmd 初始化参数可能略有差异先用--help看当前版本支持哪些子命令npx docmdlatest --help如果帮助信息正常输出就可以初始化一个文档站项目。下面给出一条常见路径若你的 docmd 版本使用不同子命令以--help输出为准npx docmdlatest init docs-site cd docs-site npm install npm run dev有些版本可以直接用开发模式启动npx docmdlatest dev --host 127.0.0.1 --port 5173启动后你应当能看到本地地址通常是http://127.0.0.1:5173或 CLI 输出的其他端口。此时只证明 Markdown 渲染和静态站服务正常不代表 AI 助手已经可用。一个推荐的项目结构如下docs-site/ docs/ index.md guide/ install.md ai-assistant.md .env.local .gitignore package.json docmd.config.ts.gitignore至少包含node_modules/ .env .env.local dist/ .docmd-cache/环境变量模板建议单独放.env.local不要提交到 Git。下面这份模板覆盖 docmd AI 助手最常用的 OpenAI 兼容风格变量DOCMD_AI_PROVIDERopenai-compatible DOCMD_AI_BASE_URLhttps://taotoken.net/api DOCMD_AI_API_KEYYOUR_API_KEY DOCMD_AI_MODELYOUR_MODEL_ID DOCMD_AI_TEMPERATURE0.2 DOCMD_AI_MAX_TOKENS2048 DOCMD_MCP_ENABLEDtrue DOCMD_MCP_TRANSPORTstdio如果你的 docmd 版本直接读取 OpenAI SDK 的通用变量也可以额外准备一份映射OPENAI_BASE_URLhttps://taotoken.net/api OPENAI_API_KEYYOUR_API_KEY OPENAI_MODELYOUR_MODEL_ID注意这里不是说 docmd 一定只认OPENAI_*而是因为不少 Node 工具会优先读取 OpenAI 兼容变量。核心原则只有一个Base URL写https://taotoken.net/apiKey 写你在 TaoToken 创建的 Key模型 ID 写你实际要用的模型。不要把 Key 写进 Markdown也不要让浏览器前端直接拿到 Key。启动时加载环境变量set -a source .env.local set a npm run devWindows PowerShell 可以这样临时注入当前进程Get-Content .env.local | ForEach-Object { if ($_ -match ^\s*([^#])(.*)$) { [Environment]::SetEnvironmentVariable($matches[1].Trim(), $matches[2].Trim(), Process) } } npm run dev如果启动失败先分三层排查Node 版本、docmd CLI 是否可执行、环境变量是否进入进程。不要一上来就改 Markdown 正文因为 Markdown 只影响文档内容不影响 AI 助手鉴权。3. 把 docmd AI 助手切到 TaoTokenBase URL、Key 和模型 ID 三件套docmd 的 AI 助手能不能回答取决于它向后端模型服务发请求时带了什么。你需要把三个值对齐Base URLhttps://taotoken.net/apiAPI KeyYOUR_API_KEY实际填写你从 TaoToken 创建的 KeyModel IDYOUR_MODEL_ID实际填写你要使用的模型标识先到 TaoToken 官网 的 API Keys 页面创建 Key然后回到项目里写.env.local。如果你还没有确认模型 ID可以从 TaoToken 官网 的模型对话入口查看当前可用模型再把模型 ID 填到DOCMD_AI_MODEL。如果 docmd 支持配置文件配置示例可以写成下面这种结构。字段名请以你当前 docmd 版本为准但核心值不要变import { defineConfig } from docmd; export default defineConfig({ title: Node 开发文档站, description: Markdown 构建AI 助手走 TaoToken, ai: { enabled: true, provider: openai-compatible, baseUrl: process.env.DOCMD_AI_BASE_URL || https://taotoken.net/api, apiKey: process.env.DOCMD_AI_API_KEY || YOUR_API_KEY, model: process.env.DOCMD_AI_MODEL || YOUR_MODEL_ID, temperature: 0.2, maxTokens: 2048 }, mcp: { enabled: true, transport: stdio, allowWrite: false } });这段配置的重点不是字段名完全照抄而是让 docmd 的 AI 助手请求发往https://taotoken.net/api。如果你把 Base URL 写成别的地址或者 Key 里多了空格、少了字符AI 助手就会返回 401。如果你把模型 ID 写错或者 Base URL 路径拼接不符合预期就会返回 404 或model not found。配置完成后不要只看页面是否打开。先直接用 curl 验证 TaoToken 这条链路是否通curl -sS https://taotoken.net/api/chat/completions \ -H Authorization: Bearer YOUR_API_KEY \ -H Content-Type: application/json \ -d { model: YOUR_MODEL_ID, messages: [ { role: user, content: 只回复 ok } ], stream: false }如果返回正常说明 Key、Base URL、模型 ID 至少有一组可用。然后再回到 docmd 页面测试 AI 助手。如果 curl 正常而 docmd 报错问题在 docmd 的环境变量注入或配置读取如果 curl 也报 401问题在 Key如果 curl 报 404重点检查模型 ID 和请求路径。再给一个 Node 侧的最小验证脚本方便确认fetch在 Node 环境里能否访问 TaoTokenconst baseUrl process.env.DOCMD_AI_BASE_URL || https://taotoken.net/api; const apiKey process.env.DOCMD_AI_API_KEY || YOUR_API_KEY; const model process.env.DOCMD_AI_MODEL || YOUR_MODEL_ID; const res await fetch(${baseUrl}/chat/completions, { method: POST, headers: { Content-Type: application/json, Authorization: Bearer ${apiKey} }, body: JSON.stringify({ model, messages: [{ role: user, content: 只回复 ok }], stream: false }) }); console.log(res.status); console.log(await res.text());用 Node 执行node --env-file.env.local check-ai.mjs如果 Node 版本支持--env-file这种方式比手工导出变量更干净。若你的 Node 版本不支持就继续用前面的source或 PowerShell 注入方式。4. docmd 的 MCP 与 AI 助手安全边界只读文档不直连生产库docmd 自带 AI 助手和 MCP这对文档站很有吸引力AI 助手可以读取本地 Markdown、目录结构、搜索结果然后基于文档回答问题。但边界必须提前画清楚。不要让 MCP 或 AI 助手直连生产数据库也不要让 Agent 自动执行线上 SQL。需要查 SQL 时由你在本地终端手动执行再把必要结果粘贴回文档或对话上下文。MCP 的合理用途是只读访问文档目录、本地缓存和公开配置而不是接管生产环境。一个偏保守的 MCP 配置形态如下。若你的 docmd 版本没有对应子命令就不要强行拼造先确认 CLI 是否支持mcp再决定是否启用{ mcpServers: { docmd-local-docs: { command: npx, args: [ docmdlatest, mcp, --docs, ./docs, --readonly ], env: { DOCMD_AI_BASE_URL: https://taotoken.net/api, DOCMD_AI_API_KEY: YOUR_API_KEY, DOCMD_AI_MODEL: YOUR_MODEL_ID } } } }安全清单建议至少满足只挂载docs/、README.md、package.json等非敏感路径。MCP 默认只读写操作必须本地人工确认。不把.env、私钥、数据库连接串暴露给 MCP。不让 AI 助手生成并自动执行生产命令。需要访问数据库时只在本地开发库执行生产库另走审批和审计。文档站 AI 助手只回答文档问题不承担运维执行器角色。这样配置后docmd AI 助手消耗的 Token 仍然从 TaoToken 出但权限边界由你控制。MCP 负责“让助手看见文档”TaoToken 负责“让助手有模型能力”两者不要混成一条不受控的执行链。5. Claude Code、Codex、CC Switch同一把 TaoToken Key 的三种写法很多 Node 开发者会同时使用 docmd、Claude Code、Codex 和 CC Switch。它们可以复用同一把 TaoToken Key但配置文件不能混。尤其是 Claude Code 使用ANTHROPIC_*Codex 使用config.toml不要把这套ANTHROPIC_*套到 Codex 上否则 Codex 不会按你预期读取。Claude Code 的settings.json可以这样写{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: YOUR_API_KEY, ANTHROPIC_MODEL: YOUR_CLAUDE_MODEL_ID, ANTHROPIC_SMALL_FAST_MODEL: YOUR_FAST_MODEL_ID } }如果你在 shell 里临时验证也可以这样导出export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_AUTH_TOKENYOUR_API_KEY export ANTHROPIC_MODELYOUR_CLAUDE_MODEL_ID claudeCodex 走config.toml不要用ANTHROPIC_*。示例model YOUR_CODEX_MODEL_ID model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEY wire_api chat对应环境变量export TAOTOKEN_API_KEYYOUR_API_KEY codexCC Switch 可以把多套配置收拢成“三件套”供应商名称TaoToken Base URLhttps://taotoken.net/api API KeyYOUR_API_KEY切换时只改这三项。不要在 CC Switch 里把 Claude Code 的ANTHROPIC_*复制到 Codex 配置也不要把 Codex 的model_provider写进 Claude Code 的settings.json。docmd 的 AI 助手则继续使用DOCMD_AI_*或 OpenAI 兼容变量。四者共用同一把 Key但变量命名空间分开排障时才不会互相污染。如果你还没有创建 Key先回到 TaoToken 官网 创建如果只是在模型选择上犹豫可以先在模型对话页试一轮再决定 docmd 默认模型。6. 常见报错排查表401、404、429、流式中断、Node ESM下面按现象排查不要盲目重装。现象常见原因处理方式401 invalid api keyKey 错误、多了空格、复制不完整到 TaoToken 官网重新创建 Key填YOUR_API_KEY重启 docmd404 model not found模型 ID 写错或 Base URL 拼接不对确认 Base URL 为https://taotoken.net/api模型 ID 从模型对话页确认429 Too Many Requests并发过高或短时间请求过多降低并发增加退避重试不要连续刷新 AI 助手流式响应中断网络抖动、超时、代理层缓冲先用stream: false验证再调超时减少长上下文ERR_REQUIRE_ESMNode 版本或模块类型不匹配切到 Node 20 LTS检查package.json的typefetch is not definedNode 版本过旧升级到 Node 20.11或使用支持 fetch 的运行时docmd: command not found未全局安装或 npx 缓存异常用npx docmdlatest必要时清理 npx 缓存AI 回答不引用文档MCP 未启用、索引未构建、docs 路径不对检查DOCMD_MCP_ENABLED、./docs路径和只读权限浏览器控制台 CORS前端直接请求模型服务让 docmd 服务端代理请求不要把 Key 暴露到浏览器页面正常但 AI 无响应环境变量未进入进程在启动命令前加载.env.local或使用node --env-file关于 401最常见的是 Key 复制时带了换行或空格。建议重新生成后只复制一次直接写入.env.local然后完全重启 docmd。关于 404先确认 Base URL 没有被你改成带路径的地址例如多了/v1或少了/api。本文统一要求https://taotoken.net/api。关于 429不要把它理解成配置错误它通常说明链路已经通了只是请求频率太高。关于流式中断先用非流式请求确认最小闭环再打开流式。另外不要把 Key 写进会被提交的文件。推荐echo .env.local .gitignore git status --short如果已经提交过 Key立刻在 TaoToken 控制台作废并重新创建不要只删文件内容。7. 文末 CTA从模型对话到 Claude Code 文档的落地顺序到这里docmd 在 Node 环境的链路应该已经清晰Node 20 LTS 负责运行 CLIdocmd 把 Markdown 资料组织成文档站AI 助手通过https://taotoken.net/api取 TaoToken 的模型能力MCP 只读访问本地文档Claude Code、Codex、CC Switch 各自使用独立配置。接下来按顺序落地即可先去模型对话页验证模型是否可用https://taotoken.net/models/detail/chat?utm_sourcetaotoken_aicg_blog_endutm_contentdocmd_node_chat如果你准备长期在编码工具里使用查看 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentdocmd_node_coding创建或重新生成 API Key填入YOUR_API_KEYhttps://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentdocmd_node_keys需要配置 Claude Code 时对照 Claude Code 文档里的settings.json和ANTHROPIC_*写法https://taotoken.net/doc/ClaudeCodeAnthropic?utm_sourcetaotoken_aicg_blog_endutm_contentdocmd_node_claude最后检查一遍你的项目.env.local里只有YOUR_API_KEY占位、Base URL 是https://taotoken.net/api、模型 ID 来自实际可用列表、MCP 没有暴露生产库、Codex 没有误用ANTHROPIC_*。完成这些后再启动npm run dev或npx docmdlatest devdocmd 的 AI 助手就会按预期工作。
返回列表