从装 opencode 到用六爻算卦 Skill:把本地配置改到 TaoToken 的完整记录

发布时间:2026/10/3 12:11:20
从装 opencode 到用六爻算卦 Skill:把本地配置改到 TaoToken 的完整记录 1. 为什么要在终端里跑一个六爻算卦 Skillopencode 是一个跑在终端里的 AI 编程助手它能读文件、改代码、执行命令本身不带任何算命能力。Skill 是它的扩展机制你可以把它理解成给 opencode 装的小程序装上一个 Skill它就多一种本领。六爻算卦 Skill 干的事情很具体——你告诉它想问什么它调用排盘脚本把卦画出来标上干支、六亲、世应再让模型按一套固定方法论写一段白话解读最后把结果存进 records 目录。这套组合的价值在于分工明确。排盘是死规则纳甲、装卦、定世应、找旬空程序算得绝对准不该让模型去心算解读需要经验和语言组织交给模型按方法论说人话。两边一配合你只管开口问中间那些容易出错的步骤全被脚本接管了。适合谁三类人。第一类是想在终端里跑通自定义 Skill 的开发者六爻这个例子足够小目录结构、SKILL.md 写法、调用链路都能看清。第二类是对传统文化排盘感兴趣、又不想手动画卦的人。第三类是已经在用 opencode 写代码想顺手把模型接入统一到一个网关上的用户——这篇会把本地配置改到 TaoToken 的完整链路写清楚包括 Base URL、API Key、Model ID 三件套怎么填。我试过把这套流程从零走一遍踩的坑主要集中在两处Skill 目录放错位置导致模型说我没有这个能力以及模型接入点没配对导致请求直接 401。下面按顺序拆开讲每一步都给可复制的配置和命令。2. 前置准备opencode 安装与 TaoToken 接入点配置opencode 的安装方式有三种官方一键脚本、npm 全局安装、桌面版。终端用户推荐前两种Windows 用户如果不想折腾 WSL2直接用桌面版也不影响后面装 Skill。一键脚本curl -fsSL https://opencode.ai/install | bashnpm 方式npm install -g opencode-ai/cli装完验证opencode --version能蹦出版本号就说明二进制在 PATH 里了。接下来是接入点配置这一步决定了 opencode 背后调的是哪个模型服务。opencode 支持在项目级或用户级配置文件里指定 provider我们把它指向 TaoToken 的 API 地址。TaoToken 的 API 入口是https://taotoken.net/api兼容 OpenAI 风格的请求格式。你需要在控制台创建一个 API Key然后写进 opencode 的配置。配置文件位置按平台区分macOS/Linux 在~/.config/opencode/opencode.jsonWindows 在%APPDATA%\opencode\opencode.json项目级则放在项目根目录的.opencode/opencode.json。一个最小可用的配置片段长这样{ $schema: https://opencode.ai/config.json, provider: { taotoken: { npm: ai-sdk/openai-compatible, name: TaoToken, options: { baseURL: https://taotoken.net/api, apiKey: sk-你的TaoToken密钥 }, models: { claude-sonnet-4-5: { name: Claude Sonnet 4.5 }, gpt-4o: { name: GPT-4o } } } }, model: taotoken/claude-sonnet-4-5 }这里三件套要对应上Base URL 是https://taotoken.net/apiAPI Key 从控制台的 API Keys 页面拿Model ID 填你实际要用的模型标识。opencode 的 provider 机制要求npm字段指定适配器包OpenAI 兼容接口统一用ai-sdk/openai-compatible。如果你更习惯用环境变量而不是把 Key 写进文件可以改成options: { baseURL: https://taotoken.net/api, apiKey: {env:TAOTOKEN_API_KEY} }然后在 shell 里 exportexport TAOTOKEN_API_KEYsk-你的密钥这样配置文件可以进版本库Key 留在本地环境里。配置写完后启动 opencode它会读取model字段指定的默认模型。想临时切换模型在会话里用/models命令选。有一点要注意opencode 的配置 schema 会随版本更新字段名偶尔有调整。如果启动时报 schema 校验错误去文档页对一下当前版本的字段定义别死抄旧配置。3. 可复制配置Skill 目录结构与 SKILL.md 写法Skill 的加载靠目录约定opencode 会在项目里扫描.opencode/skills/下的子目录每个子目录代表一个 Skill目录里必须有SKILL.md。这个文件是 Skill 的说明书模型靠它判断什么时候该用这个技能、怎么调用。先拿六爻 Skill 的源码git clone https://github.com/stFloat/liuyao-skill.git克隆下来会得到一个liuyao-skill文件夹里面有个liuyao-najia子目录这才是真正的 Skill 本体。把它整个复制到项目的 skills 目录下mkdir -p .opencode/skills cp -r liuyao-skill/liuyao-najia .opencode/skills/最终目录结构应该是你的项目/ ├── .opencode/ │ ├── opencode.json │ └── skills/ │ └── liuyao-najia/ │ ├── SKILL.md │ ├── scripts/ │ │ └── najia.py │ └── records/SKILL.md里的 frontmatter 决定了 Skill 的元信息典型写法--- name: liuyao-najia description: 六爻纳甲排盘与解读。当用户要求起卦、排盘、问财运事业感情或提供爻值序列要求解读时使用。 --- # 六爻纳甲 ## 使用方式 用户提出起卦请求时调用 scripts/najia.py 生成卦盘 再按方法论输出解读最后将结果写入 records/ 目录。 ## 参数 - 爻值六个数字取值 6/7/8/9从初爻到上爻 - 日期可选默认今天 - 问题用户所问之事description字段很关键模型靠它做技能路由。写得太泛会导致该触发时不触发写得太窄又会误触发。六爻这个场景把起卦、排盘、财运、事业、感情、爻值这些触发词都列进去比较稳。如果你不想手动 clone也可以直接在 opencode 会话里让它帮你装帮我把这个六爻 skill 从 GitHub 装上 github.com/stFloat/liuyao-skill装到 .opencode/skills/ 下面。opencode 会自己下载并放到正确位置。装完不需要重启它会在下一次会话扫描时发现新 Skill。判断有没有加载成功可以在会话里问一句你现在有哪些 skill或者直接发起卦请求看它会不会调用排盘脚本。4. 验证请求一次起卦的完整调用与结果确认配置和 Skill 都就位后验证分两步先确认模型接入通了再确认 Skill 能被正确加载和响应。第一步发一个最简请求确认链路curl https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer sk-你的密钥 \ -H Content-Type: application/json \ -d { model: claude-sonnet-4-5, messages: [{role: user, content: 回复 ok}] }返回里有choices数组且内容正常说明 Base URL、Key、Model ID 三件套没问题。如果这里就报错先别往下走去第 5 节对错误码。第二步进 opencode 会话发起卦请求。直接打字不用记命令帮我用六爻起一卦问今日财运如果 Skill 加载正常opencode 会识别到这是排盘请求调用scripts/najia.py然后返回一段带卦盘和解读的内容。正常输出大致长这样本卦: 地风升 变卦: 泽天夬 日辰: 庚午 月建: 申 空亡: 戌,亥 爻位 六神 六亲 干支 五行 世应 卦象 上爻 螣蛇 官鬼 癸酉 金 ━ ━ 五爻 勾陈 父母 癸亥 水 (动·空) ━×━ 四爻 朱雀 妻财 癸丑 土 世(动) ━×━ 三爻 青龙 官鬼 辛酉 金 ━━━ 二爻 玄武 父母 辛亥 水 (空) ━━━ 初爻 白虎 妻财 辛丑 土 应(动) ━×━后面会跟一段白话解读比如今日有财机会但容易得而复失宜小步快取。同时结果会写进records/目录文件名带日期方便回查。如果你自己掷过铜钱把六个爻值按从初爻到上爻的顺序告诉它爻值是 6 7 7 6 6 8问今日财运日期 2026-08-24只想解读不想重排就说用新排盘给我的地风升变泽天夬做趋势解读验证 Skill 是否真的被调用有个简单办法看records/目录有没有新文件生成。如果模型只是用嘴编了一段卦辞、没有落盘说明它没走 Skill 脚本大概率是SKILL.md的 description 没匹配上或者目录层级放错了。5. 常见报错排查401、local proxy failed 与 Skill 不触发这一节按真实报错对照遇到问题直接查表。401 Unauthorized。请求头里的 Key 无效或没带上。检查三处配置文件里apiKey字段有没有写错、环境变量TAOTOKEN_API_KEY有没有 export 到当前 shell、Key 有没有在控制台被禁用。用 curl 单独测一次能快速定位是配置问题还是 Key 问题。local proxy failed / connection refused。opencode 启动时连不上配置的 Base URL。常见原因是baseURL写成了https://taotoken.net少了/api或者本地网络把请求拦了。确认地址是https://taotoken.net/api末尾不要多加斜杠。reading choices of undefined。返回体里没有choices字段通常是模型 ID 写错了服务端返回了一个错误对象而不是正常响应。把model字段改成控制台里列出的确切模型标识别自己拼名字。OAuth / 登录态相关报错。如果你之前配过别的 provider 并留了 OAuth 凭据opencode 可能优先走了旧凭据。清掉旧的 auth 缓存或者在配置里显式指定model: taotoken/xxx强制走新 provider。Skill 不触发模型说我没有这个能力。九成是路径问题。确认最终路径是你的项目/.opencode/skills/liuyao-najia/SKILL.md注意是liuyao-najia这一层不是外层的liuyao-skill。另外确认SKILL.md的 frontmatter 格式正确---包裹的头部不能少。Skill 触发了但排盘脚本报错。检查 Python 环境najia.py依赖标准库还是第三方包缺依赖就按报错装。脚本路径在SKILL.md里是相对路径确认调用时的工作目录对得上。改了配置不生效。opencode 有配置缓存改完opencode.json后重启会话。项目级配置优先级高于用户级如果两处都写了 provider以项目级为准。排查顺序建议从外到内先用 curl 确认 API 通再确认 opencode 能正常对话最后确认 Skill 被加载。哪一层断了就修哪一层别一次改一堆配置。6. 把链路固定下来从临时试跑到日常使用跑通一次之后建议把配置固化避免每次重装环境都要重新折腾。项目级配置进版本库Key 用环境变量注入。这样团队里其他人 clone 下来只要 export 自己的 Key 就能用不用改文件。.opencode/skills/目录也一起提交Skill 跟着项目走换机器不用重新 clone。模型选择上排盘脚本是确定性的不消耗模型能力解读部分才需要模型。日常问卦用中等能力的模型就够长会话或复杂解读再切更强的模型。opencode 里用/models随时切不用改配置文件。records 目录建议加进.gitignore卦例是个人数据没必要进版本库。想长期留存就单独备份这个目录。如果你后面要接更多 Skill目录结构照抄这套.opencode/skills/skill-name/SKILL.md加脚本目录。description 写清楚触发场景脚本保持无状态、输入输出明确模型调用起来就稳。最后提醒一句六爻排盘对齐的是传统纳甲规则解读走的是可复现的方法论结果只作趋势参考。涉及钱财、健康、法律这些重大事项还是以专业机构和持证人士的意见为准。工具的价值在于把排盘这种机械劳动自动化决策的脚始终在你自己身上。需要创建 API Key 或查看接入文档可以从这里进API Keys 页面 https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentapi-keys 接入文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentdoc 。想先验证模型对话效果用模型对话页 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentchat 。长期在终端里跑编码和 Agent 任务可以看 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentcoding-plan 。