news 2026/10/3 12:11:12

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从装 opencode 到用六爻算卦 Skill:把本地配置改到 TaoToken 的完整记录

1. 为什么要在终端里跑一个六爻算卦 Skill

opencode 是一个跑在终端里的 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 | bash

npm 方式:

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.json,Windows 在%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/api,API 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 里 export:

export TAOTOKEN_API_KEY="sk-你的密钥"

这样配置文件可以进版本库,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_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=api-keys ,接入文档 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=doc 。想先验证模型对话效果,用模型对话页 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=chat 。长期在终端里跑编码和 Agent 任务,可以看 Coding Plan https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=coding-plan 。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/3 12:09:15

TaoToken 实战:用 C 语言捕获 Windows 鼠标点击与移动行为

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华