READMESource: main@2fd0235a
dsh-tarot · 命运牌桌
在 DSH 里玩塔罗:你提问 → 助手给牌阵 → 你在聊天里报数字 → 牌桌翻牌 → 助手解牌。
牌桌有两个入口,数据同源:
- 侧边栏常驻:左边栏多了个「✦ 命运牌桌」图标(在插件、日程下面),点开是整张牌桌—— 没牌局时是「还没摆开的牌」引导页(三张牌背 + 可用牌阵一览 + 去对话按钮), 有牌局时是大卡片、78 张牌墙和牌义。
- 输入框上方:聊天时小牌桌随牌局出现,可收起,也可以点「整张牌桌」跳过去。
侧边栏面板没有会话绑定,显示的是最近这一局(最后被起局 / 抽牌的那张桌子)。
怎么用
- 直接跟助手说你想问什么:「帮我看看这段感情」「明天面试怎么样」。
- 助手会起一局,告诉你牌阵和位置,让你 在 1–78 里报 N 个数字。
- 你报数字(比如
12 34 56,可以分批)。 - 牌桌上的牌会当场翻开:牌名、正逆位、关键词都在牌下面。
- 助手在聊天里逐张解,最后给结论和建议。
其它说法:
- 「你帮我抽」→ 助手代抽剩下的牌。
- 「换个问题」→ 助手重新起局。
- 「收起来」→ 清掉这一局。
牌阵
| key | 名称 | 张数 | 位置 |
|---|---|---|---|
one |
单张指引 | 1 | 此刻的指引 |
three |
时间之流 | 3 | 过去 / 现在 / 未来 |
love |
关系之镜 | 5 | 你 / 对方 / 连结 / 阻碍 / 建议 |
career |
事业十字 | 5 | 现状 / 机会 / 阻碍 / 你的底牌 / 建议 |
celtic |
凯尔特十字 | 10 | 现状 … 结果 |
yesno |
是否之间 | 3 | 支持 / 反对 / 建议 |
助手也可以用 positions 自定义牌阵(最多 10 张)。
存档
抽满一局(所有位置都翻开)后,这一局会自动存下来:问题、牌阵、每个位置上的牌、正逆位、关键词,都会写进
~/.dsh/tarot/history.json
解读是在之后补上的:助手写完解读会调一次 note,把那段文字存进同一条记录。侧边栏「命运牌桌」顶部有两个页签:
- 牌桌 —— 当前这一局(没牌局时是引导页);
- 存档 —— 按时间倒序列出所有牌局(问题 + 日期 + 牌阵 + 牌名串),点一条进去看大卡片和完整解读。
存档最多保留 200 条,插件重载、DSH 重启都还在。
接口
| 方法 | 路径 | 用途 |
|---|---|---|
| GET | /api/tarot/state?session=&since= |
牌桌轮询:当前牌局 + 牌阵目录 |
| GET | /api/tarot/history |
存档列表(含解读正文) |
| POST | /api/tarot/control |
控制口:{action: start/pick/draw/status/reset/note/history/import, session, ...},与工具同一份逻辑 |
/api/tarot/control 是给拿不到 tarot 工具的调用方(比如命令行脚本)用的:它和工具走同一个 runCommand,行为、校验、失败原因完全一致。import 只在这个口上开放,用于补录旧牌局(只要给牌名 + 正逆位,其余从牌库补全)。
安装
git clone https://github.com/chen-bi/dsh-tarot.git
然后在 DSH 里让助手装:plugin_manager → install_bundle,target 指向克隆下来的目录(本仓库根目录)。
装完刷新一次页面(新客户端包要重新加载)。之后牌桌只在有牌局时出现在输入框上方,侧边栏入口则一直常驻。
要求:DSH 版本带 webServer 与 client bundle 支持;宿主侧用到 @deepseek-ai/cordis 与 react(peerDependencies)。
结构
| 文件 | 作用 |
|---|---|
index.js |
Host:tarot 工具、/api/tarot/state + /api/tarot/history + 控制口、存档落盘、系统提示 |
deck.js |
78 张牌的数据、6 种牌阵、洗牌与抽牌逻辑(纯函数) |
client.js |
浏览器半侧:侧边栏图标 + 主面板(牌桌 / 存档)+ 输入框上方小牌桌 |
smoke.mjs |
自检:mock ctx 跑一遍工具、接口、存档(用临时文件)node smoke.mjs |
说明
- 进行中的牌局按会话存在内存里,DSH 重启就没了;抽满的牌局不受影响(已落盘)。
- 网页端只读:抽牌永远由聊天里的助手发起,牌桌不会替你决定抽哪张。
- 牌面美术(卡面、花色、牌背金线)是插件自带的原创 SVG/CSS,不依赖外部图片。
No comments yet. Be the first to write one.