npm.io
0.1.5 • Published 19h ago

dsh-blackjack

Licence
MIT
Version
0.1.5
Deps
1
Size
120 kB
Vulns
0
Weekly
0

dsh-blackjack 插件

社区第三方项目声明

本插件由个人开发者发布与维护,与任何模型厂商均无关联:不是任何厂商的官方 项目、不代表其立场、未获其背书或授权,也不使用其名称与标识作为本项目的品牌 元素。包名与命令中的 dsh- / bj- 前缀仅遵循社区插件的命名惯例,用于标识 本插件的兼容目标与命名空间,不代表 dsh 官方发布或认可。

安装进你自己的 dsh 后,在对话里直接打开一张 21 点牌桌:赢牌拿游戏币 CHIP,CHIP 可以单向兑换为「已兑换额度」,这份额 度只能在本插件的续命路由里消费——当且仅当你自己配置的模型额度耗尽时,插件 才会用这份额度接住那一次失败的请求,让你不用中断手上的任务去充值或等待。

参与永远免费:每天有固定的免费手数,玩输了不扣任何东西,也不影响你自己的 密钥或余额。全部规则细节见下方「参与规则」。


这是什么、怎么玩

牌桌由一个牌局服务端(packages/server,由运营者自托管)维持权威状态,插件只 是它的客户端:

  • 文字命令/blackjack 系列命令零成本——它们全部走 dsh 的命令层而不是发 一条模型消息,所以打牌本身不消耗你的任何 token 额度。
  • 图形牌桌(可选):如果你的 dsh profile 带了 Web GUI(例如 @deepseek-ai/dsh-web-app),对话流里会出现一张可点击的牌桌卡片,动作按钮 与文字命令等价,只是换了个界面。没有 Web GUI 的纯终端 profile 里,文字命令 照常可用,插件不会因为缺一个可选服务而报错。

一局牌:/blackjack deal 开局(默认用当天的免费手,也可以 deal <注额> 用余 额加注)→ 按提示用 bj-hit / bj-stand 等动作命令打完 → 结算,赢家拿 CHIP。

命令表

命令 作用
/blackjack 查看当前状态:有牌局在打就显示牌局,没有就显示余额/免费手/兑换门槛
/blackjack agree 首次使用必须先执行:阅读须知并同意后才能上桌
/blackjack deal [注额] 开一局新牌。不带参数用当天的免费手;带一个正整数注额则从余额里加注
/blackjack exchange [数量] 把达标余额兑换为可消费额度。首次(还没绑过 GitHub)会给出一个配对链接,需要去浏览器完成绑定;绑定之后带上数量就在命令里直接兑换,不再需要浏览器
/blackjack reset confirm 清除本机保存的牌桌凭证(服务端记录不受影响,重新 agree 会注册一个新账户)
/bj-hit 要一张牌
/bj-stand 停牌,进入结算
/bj-double 加倍注额并再要一张牌
/bj-split 把一对相同点数的牌分成两手
/bj-insure 庄家明牌为 A 时购买保险
/bj-decline 不购买保险

bj-* 六个动作命令只在有进行中的牌局时才有意义;没有牌局时执行会提示先 /blackjack deal

兑换的两条路径

兑换要求绑定 GitHub(一个 GitHub 身份只对应一个钱包,这是奖池出口唯一的反小号 闸门)。绑定这件事只能在浏览器里完成——它走的是 GitHub 官方的 OAuth 授权码流。 但绑定只需要做一次

  1. 首次/blackjack exchange 给你一个短期配对码和链接。在浏览器里打开、 点「用 GitHub 继续」完成绑定,然后在同一页面的表单里填数量兑换。
  2. 之后/blackjack exchange <数量>。插件用它自己持有的令牌直接调服务端 的兑换接口,不再生成配对码、不再需要打开浏览器。不带数量时会先回显你的 余额与门槛,并提示补上数量——兑换不可逆,插件不会替你猜一个数字。

余额没到门槛、或者数量超过余额,都会得到一句明确的中文提示("余额还没到兑换门 槛。" / "余额不足以完成这个动作。"),账本一分不动。


安装

dsh plugin --profile web add -w dsh-blackjack
dsh --profile web

web 换成你实际要装的 profile 名。

尚未发布到 npm 时,上面这条命令还装不到东西。从源码装:

git clone https://github.com/yul761/dsh-blackjack
cd dsh-blackjack && pnpm install          # 会自动构建插件的 dist/
dsh plugin --profile web add -w "$PWD/packages/plugin"

注意不能直接 pnpm add github:yul761/dsh-blackjack:这是个 monorepo, 从 git 源装会拿到仓库根(一个没有入口的私有 workspace 根),而不是 packages/plugin 里的插件包。

为什么一定要带 -w dsh 的每个 profile 目录本身就是一个 pnpm 工作区(自 带 pnpm-workspace.yaml),而 pnpm 默认拒绝在没有 -w/--workspace-root 的 情况下向工作区添加依赖——省掉这个参数,安装命令会直接失败退出,而不是装 出一个残缺的状态。这不是本插件独有的坑,其它社区 dsh 插件的安装文档也踩过同一 处并确认了同样的结论。

先进入一个会话,再用 /blackjack

在 dsh 的启动页(新开 dsh 时那个 “Into the Unknown” 界面)执行 /blackjack, 命令会真的执行,但画面上什么都不会出现——牌桌要等你进入一个会话后才显示。

这不是本插件的问题:宿主对所有插件注册的命令都这样(用一个只返回一行文字、 不碰任何服务的最小插件验证过,表现完全一致),而宿主自己的内置命令(如 /goal) 则会正常渲染并切进会话视图。

所以第一次使用请先让对话真正开始——随便发一句话,或者从侧边栏打开一个已有 对话——再执行 /blackjack agree。注意点“新建会话”是没用的:那会把你送回启动页, 正是坏掉的那个状态。

只要对话已经开始,后面全程正常,牌桌、按钮、结算都没有任何问题。

版本要求:本插件锁定 dsh 0.1.0-rc.6

插件把 @deepseek-ai/dsh-* 的 peer 全部精确锁0.1.0-rc.6,不是写成 ^0.1.0-rc.6。这不是保守,是必须的:这套包锁步发布,rc 之间并不互相兼容,而 ^ 会让包管理器给宿主没有的那个 peer 装上更新的 rc——0.1.0 就是这么崩的 (dsh-llm-deepseek@rc.8 配宿主的 dsh-llm@rc.6,启动即报 does not provide an export named 'offloadRequestImages')。

所以:请用 dsh@0.1.0-rc.6。跑在别的 rc 上会看到 peer 版本警告,届时等插件 跟进发新版即可。

安装成功后,dsh 会读取插件 package.json 里的 dsh.bundle.patch 声明并自动把 blackjack.cordis.yml 接进 profile 的 bundle 层——不需要你手工再写一份 --patch 覆盖层。

配置

装完开箱即用:serverUrl 默认指向本项目运营者自托管的那一份服务,不改配置也能 直接玩。要在 profile 的 cordis.patch.yml 里覆盖也可以:

配置项 类型 默认值 说明
serverUrl string https://server-production-493c.up.railway.app 牌局服务端地址。想自建奖池就改成你自己的部署地址——服务端与本插件同仓开源,见仓库根 README 的部署一节
enabled boolean true 设为 false 可保留安装但完全停用:不注册任何命令,也不挂任何路由或续命钩子
# ~/.dsh/profiles/<profile>/cordis.patch.yml
- id: blackjack
  config:
    serverUrl: https://your-blackjack-server.example.com

续命路由到底怎么触发(务必读完)

插件会在 llm/stream 上挂一个观察者,但它绝不会拦截正常调用。触发续命只 有在同时满足以下条件时才会发生:

  1. 这次调用用的是你自己配置的模型 provider(不是插件自己的奖池路由,避免 死循环);

  2. 这次调用没有产出任何内容——哪怕已经吐出一个字,也不算数,插件绝不会在 内容已经开始返回后中途换源,那样只会造成重复或截断;

  3. 调用是以配额耗尽这一类错误收尾的(不是网络错误、不是参数错误、不是别 的任何原因);

  4. 你在本插件里已经完成过 /blackjack agree(本机存有牌桌凭证;没有这份 凭证,插件根本不会尝试)。

    这里只看凭证,不预先检查你的已兑换额度够不够。这是刻意的:查余额要在每 次失败调用上多打一次网络请求,拿到的还是一个可能已经过期的快照;而"有凭证、 余额为零"这条路本身就是安全的——奖池调用会被服务端直接拒绝,插件于是把你 原本的那个错误原样交还给你,跟没装插件完全一样。

四条同时成立时,插件才会把这一次失败的调用重发到奖池路由。

切换提示去哪了(请注意): 成功切换时插件会输出一行「已切换至奖池余额继续 本次请求。」,但在当前 dsh 版本里它只写进 dsh 自己的日志,不会出现在对话界面 里——这个版本没有给插件提供任何"往对话里插一条非模型消息"的通道,唯一现成的 通道会把内容写进模型可见的历史,那是本项目明确不做的(不污染上下文、不让模型看 到)。换句话说:一次调用可能是靠奖池额度完成的,而你在界面上看不到提示;要确认 消耗,请用 /blackjack 查看已兑换额度的变化。等 dsh 提供插件可用的会话内通知位, 这条会改成界面内提示。

如果奖池也用完了、或者奖池服务本身连不上,插件不会伪造一个成功结果——你会 原样收到你自己那次调用本来的失败原因,就像没装这个插件一样。换句话说:装上这 个插件,一次调用的结果只可能不变或变好,不会变坏


参与规则

  • 参与永远免费。 每日固定几手免费牌,零成本参与;不存在、也不会出现"付费 换手数 / 换概率 / 换赔率"的任何设计。
  • CHIP 与已兑换额度单向、封闭。
    • 不可提现,不折算任何法定货币,界面不显示金额;
    • 不可转让(含玩家之间转让),不可退换;
    • 不会进入任何模型厂商的账户
    • 唯一用途是通过牌局服务端的续命路由消费——除此之外没有任何出口。
  • 有赛季有效期。 已兑换额度有效期至本赛季末(含宽限期);连续一段时间无 游戏且无消费的账户余额会被回收进奖池。这些提醒会在插件里提前给出,兑换前也 会再提示一次。
  • 你自己的 API key 永远不会进入这套系统:插件不读取、不托管、不代管你自 己 provider 的任何密钥,续命路由用的是牌局服务端自己签发的凭证。

卸载与清除本机凭证

只想清掉本地保存的牌桌登录凭证(例如换机器、或者想用一个全新账户重新开始), 不需要卸载插件:

/blackjack reset confirm

(不带 confirm 时会先回显一遍这条操作的说明,避免误触。)这只清除本机保 存的凭证,服务端那边的账户记录不受影响;用 /blackjack agree 即可重新注册一 个新账户。

要完全移除插件本身:

dsh plugin --profile web remove dsh-blackjack

Keywords