
1. 为什么要在 Claude Code 里给 product-flow 配一条统一通道product-flow 是一个把产品决策拆成 5 段闭环的 Claude Code pluginspark 收敛灵感、audit 审方向、frame 出 5 件套、spec 写 PRD、verdict 做上线后判决。它本身不产出模型能力所有推理都发生在 Claude Code 会话里。问题也正出在这里——当你把 product-flow 以 plugin 形式挂进 Claude Code会话里的每一次 skill 调用、每一次 sub-agent dispatch、每一次 PRD 生成都要走一条模型 API 通道。如果这条通道的 Key 散落在环境变量、shell profile、项目级.env里各写一份你会在三个地方反复踩坑换机器要重新配、团队协作时 Key 对不上、PRD 生成到一半报 401 却不知道是哪层配置没生效。这篇要解决的就是这一件事给 product-flow 在 Claude Code 里落一份可复制的config.toml骨架把统一 Key 和 API 通道的填写位置固定下来再用一次 PRD 生成链路验证整条路是通的。适合已经在用 Claude Code、想跑产品决策流程、但被多套 skill 切换和 Key 管理搞烦的人。读完你可以直接复制配置跑通一次从 spark 到 spec 的产品决策流程。我试过把 Key 分别塞进四个 skill 的独立配置里结果是 audit 段能跑、spec 段报错排查了半小时才发现是 sub-agent dispatch 那层读的是另一个变量。所以下面这份骨架的核心思路是通道只配一次所有段共用。2. TaoToken 前置通道、Key 与 plugin 的关系TaoToken 在这里扮演的角色是 Claude Code 会话背后的统一模型 API 通道。product-flow 的 5 段 skill 本身是 prompt 编排逻辑它们不关心模型从哪来只关心调用能不能通、返回稳不稳。你把通道配在 Claude Code 这一层product-flow 的所有段就自动继承。需要先明确三个概念的位置关系plugin 层product-flow 以 plugin 形式被 Claude Code 加载提供 5 段 skill 和触发词。通道层Claude Code 通过config.toml里的 provider 配置决定请求发往哪个 API 端点。Key 层API Key 是通道的凭证配一次plugin 内所有 skill 共用。所以配置顺序是先在 TaoToken 控制台拿到 Key再把 Key 和 API 端点写进 Claude Code 的config.toml最后确认 product-flow plugin 已被加载。三步里任何一步错位PRD 生成链路都会断。拿 Key 的入口在控制台创建后复制那串以sk-开头的字符串先存到安全的地方。注意 Key 只在创建时完整显示一次关掉页面就看不到了这是很多人第一次配就卡住的原因。提示不要把 Key 直接写进会提交到 git 的config.toml。下面骨架里我用环境变量占位实际填写时替换成你的读取方式。3. 可复制配置config.toml 骨架与填写位置Claude Code 的配置文件通常放在用户目录下的.claude/config.toml不同版本路径可能略有差异以你本地claude --version对应的文档为准。下面这份骨架把通道、Key、plugin 三块分开写方便你定位。# ~/.claude/config.toml # product-flow 产品决策 plugin 的统一通道配置骨架 [provider] # 统一 API 通道所有 skill 共用这一条 name taotoken base_url https://taotoken.net/api # Key 从环境变量读取避免明文入库 api_key_env TAOTOKEN_API_KEY # 请求超时PRD 生成链路较长给足时间 timeout_seconds 120 # 失败重试次数sub-agent dispatch 场景建议 2 max_retries 2 [model] # 默认模型product-flow 各段共用 default claude-sonnet-4-5 # spec 段生成 PRD 时可用更强模型按需覆盖 spec_override claude-sonnet-4-5 [plugins.product-flow] enabled true # plugin 加载路径按你 clone 的位置改 path ~/plugins/product-flow # 5 段 skill 的触发词前缀保持默认即可 trigger_prefix product- [plugins.product-flow.skills] spark product-spark audit product-audit frame product-frame spec product-spec verdict product-verdict填写位置说明逐块对照[provider]块是通道层base_url固定填https://taotoken.net/api不要带尾部斜杠。api_key_env写的是环境变量名不是 Key 本身。你在 shell 里这样导出# 写入 shell profile重启终端生效 export TAOTOKEN_API_KEYsk-你的Key[model]块决定 product-flow 各段用哪个模型。default覆盖 spark/audit/frame/verdictspec_override单独给 spec 段因为 PRD 生成对上下文长度和指令遵循要求更高。两个都填同一个模型也能跑先跑通再调优。[plugins.product-flow]块是 plugin 层。path指向你 clone 下来的 product-flow 仓库目录enabled true才会被 Claude Code 加载。[plugins.product-flow.skills]把 5 段触发词映射到具体 skill 名保持默认即可除非你改过 skill 文件名。注意config.toml里所有路径用绝对路径最稳~展开在某些版本下不生效建议直接写/Users/你的用户名/plugins/product-flow这种形式。配完保存重启 Claude Code 让配置生效。这一步不做后面验证会一直读到旧配置。4. 验证请求跑通一次 PRD 生成链路配置写完不算通要跑一次真实链路。product-flow 的验证动作我建议直接走 spec 段因为它会触发 sub-agent dispatch能同时验证通道、Key、plugin 加载三层。第一步确认 plugin 被加载。在 Claude Code 会话里输入/product-flow status预期返回 5 段 skill 的加载状态每段显示loaded。如果某段显示not found回去检查config.toml里path和skills映射。第二步触发 spark 段做一次轻量调用验证通道通不通我有几个 AI 工具想法不知道做哪个帮我收敛一下预期返回spark 段会输出 2-3 个候选方向并提示你选一个进入 audit。这一步如果报 401说明 Key 没读到检查TAOTOKEN_API_KEY是否在当前 shell 生效如果报连接超时检查base_url是否写成了带斜杠或带路径的形式。第三步直接跳到 spec 段验证 PRD 生成链路写需求 / 写 PRD预期返回spec 段进入 5 个 phase输出一份约 1.5 页的 PRD每个 MUST story 带sub_agent_hints块包含type、primary_skill、acceptance_check等字段。看到这个结构说明通道、Key、plugin、sub-agent dispatch 四层全通。第四步验证 verdict 段的历史读取能力因为它要读磁盘上的docs/verdicts/产品名-history.md上线 1 个月了跑一次 verdict预期返回verdict 段会先读历史文件如果不存在会提示你创建存在则输出持守/调整/杀三档判决。这一步验证的是 plugin 对本地文件系统的访问权限和 API 通道无关但属于完整链路的一部分。四步跑完你就有了一条可复现的验证路径。下次换机器复制config.toml、导出环境变量、clone plugin重跑这四步即可。5. 本篇常见错排查配置类问题大多集中在几个固定位置我按出现频率排一下。报 401 Unauthorized九成是 Key 没读到。先确认echo $TAOTOKEN_API_KEY有输出再确认config.toml里api_key_env拼写和导出的变量名完全一致大小写敏感。如果用了.env文件确认 Claude Code 启动时加载了它。报连接超时或 DNS 失败检查base_url是否写成了https://taotoken.net/api/多了尾部斜杠或https://taotoken.net/api/v1多了路径。正确形式就是https://taotoken.net/api。plugin 显示 not foundpath用了~没展开或路径指向了仓库的父目录而不是仓库根目录。product-flow 的根目录下应该有README.md和skills/文件夹path指到这一层。spec 段跑到一半中断timeout_seconds太短。PRD 生成链路涉及多轮 sub-agent dispatch默认 120 秒对复杂方向可能不够调到 180 或 240 再试。同时确认max_retries至少为 2网络抖动时能自动重试。sub_agent_hints 字段缺失说明 spec 段没走到 Phase 5通常是前面 phase 的 HARD-GATE 没过。检查会话里有没有出现「退回」提示按提示回到对应 phase 重写不要强行跳过。verdict 段读不到历史确认docs/verdicts/目录存在且当前工作目录正确。verdict 段读的是相对路径如果你在别的目录启动 Claude Code它会找不到文件。改了 config.toml 不生效Claude Code 不会热加载配置必须重启进程。改完保存后完全退出再启动不要只开新会话。提示排查时优先看 Claude Code 的日志输出它会打印实际请求的base_url和是否读到 Key比猜快得多。6. 接下来怎么用从验证到长期编码跑通上面四步验证后product-flow 的 5 段就可以正常用了。日常触发词保持默认spark 段说「我有几个想法不知道做哪个」audit 段说「这个方向值不值得做」frame 段说「frame 一下」spec 段说「写需求 / 写 PRD」verdict 段说「跑一次 verdict」。如果你打算把 product-flow 用在长期的产品迭代上尤其是 spec 段频繁触发 sub-agent dispatch 的场景建议把通道配置和 Coding Plan 结合看。Coding Plan 面向的是持续编码和 Agent 类调用product-flow 的 PRD 生成链路正好属于这一类配好之后不用每次担心额度。需要创建或轮换 Key 时入口在 API Keys 页面建议给 product-flow 单独建一个 Key方便按 plugin 维度追踪用量。接入细节和参数说明在接入文档里遇到本文没覆盖的报错可以对照查。想先不配 Claude Code、直接在网页里试一下模型对话效果可以用模型对话页面验证通道是否正常确认没问题再回到本地配config.toml。配置这件事的诀窍就一句通道只配一次Key 只存一处plugin 只指一个路径。三样对齐product-flow 的 5 段就能串起来跑不用再在 47 个 PM skill 之间手动切换。