
toybox
☆ 0DSH 插件玩具箱 —— 构建链:TypeScript 源码(plugins/<id>/src/*.mts)→ 单文件 MCP 服务器产物(.dsh-plugin/server/*.mjs)
Get this plugin
Review the source, then continue to the publisher.
dsh plugin add dsh-toybox@latestAbout this plugin
Source snapshot 8/13/2026🧸 toybox —— DSH 插件玩具箱
正经插件去 OMDSH Hub,整活插件来 toybox。 一个专门收藏"有意思"的 DeepSeek Harness (DSH) 插件的仓库: 有趣的技能、古怪的 MCP 服务器、能讲段子的工具。每个插件都有源码、离线打包与协议验收标准——只是比正经插件多了一点灵魂。
版权:本仓库为独立插件项目,版权归作者(mattheliu)所有;仅包含原创插件代码,不包含 DeepSeek Harness 的实现源码。
⚠️ 当前可用性
目前仅为源码与静态包候选。 使用获授权的 registry 只读访问探测显示
@deepseek-ai/dsh-repository-plugin 返回 HTTP 404,也没有发现官方改名包。
因此 toybox 可以验证自己的 TypeScript 构建、MCP 协议、skill frontmatter 和
仓库自有 packager,但目前不能基于 npm 产物完成 DSH 安装或运行时兼容性
验收。
下方 Git source 配置仅作为依赖发布后的条件式示例。必须等官方 Repository Plugin 包通过权威来源可用后再做运行验收,不要用名称相似的第三方包代替。
🏠 住户(插件目录)
| 住户 | 类型 | 简介 | 状态 |
|---|---|---|---|
| code-archaeologist | skill | 代码考古学家:以田野考古方法论解剖遗留代码——地层判定、出土文物登记、发掘报告、保护性迁移建议。让"这代码为什么长这样"变成一场有证据的考古发掘 🏛️ | ✅ 本地静态验证 |
| almanac-mcp | mcp | 老黄历·今日宜忌:宜忌/冲煞/幸运方向(按天干五行推算,含星期彩蛋)、抽签(seed 可复现)、每日一诗。开工前先问一句"今日宜 merge 吗" 📜 | ✅ 本地协议验证 |
| naming-master-mcp | mcp | 取名大师:古风/赛博/极简/程序员梗四种风格给变量、函数、项目、宠物起名,带出处梗,起名困难症终极解药 📛 | ✅ 本地协议验证 |
| decision-dice-mcp | mcp | 决策骰子:抛硬币/掷骰/命运抉择,选择困难时的"天意裁决",附经典决策技巧提示 🎲 | ✅ 本地协议验证 |
| chinese-colors-mcp | mcp | 中国传统色:61 色库(名称/HEX/典故)搜索、按日期"今日色"、按色系出和谐色板,前端配色秒变文化人 🎨 | ✅ 本地协议验证 |
| time-capsule-mcp | mcp | 时间胶囊:把想法封存,N 天后才能"挖出来"回看;未到期服务器拒绝泄露内容,写给未来的自己 ⏳ | ✅ 本地协议验证 |
| bug-tamer | skill | Bug 驯兽师:诱捕(最小复现)→ 驯化(根因)→ 放归(回归测试)→ 饲养手册(防复发),bug 修复方法论 🦁 | ✅ 本地静态验证 |
| code-talent-scout | skill | 代码星探:函数选秀 S/A/B/C 评级,四维评分卡 + 证据点评 + 回炉重造方案 🕵️ | ✅ 本地静态验证 |
表中“本地验证”不包含 DSH 运行时挂载;运行验收仍等待官方依赖可用。
想入住?看 入住指南 —— 写 TS 源码 →
pnpm build→ README 加一行,完事。
📦 条件式 Git source 配置
官方 Repository Plugin 包可用后,用发布仓库的完整 40 位 commit 替换下面的
占位值。仓库与插件包均保留 private: true,计划仅通过 Git source 分发,不
发布到公共 npm registry。
以下配置当前不能基于 npm 依赖完成运行验证;接入时应以届时的官方文档为准:
- id: repository-plugins
name: '@deepseek-ai/dsh-repository-plugin'
config:
repositories:
- 'github:omdsh-dev/toybox#<COMMIT_SHA>&path:/plugins/almanac-mcp/.dsh-plugin'
各插件发布 ref(本仓库每个 commit 都是不可变身份,更新插件 = 换 ref):
| 插件 | 类型 | 发布 ref |
|---|---|---|
| almanac-mcp | mcp | <COMMIT_SHA> |
装好后对模型说一句:"帮我考古一下 legacy/payment.js 这段代码",收获一份地层剖面 + 文物清单 + 保护性发掘建议;再问一句"今天宜忌如何?抽个签",它就会翻老黄历、给你抽一支 🎋;卡在起名或选择困难时,喊它"给这个模块起个古风名字"或"抛个硬币决定今晚吃啥" 📛🎲。
🔨 构建链
MCP 插件源码是 TypeScript(plugins/<id>/src/<id>.mts),由 toybox 构建链编译为仓库候选静态包使用的单文件产物(.dsh-plugin/server/<id>.mjs):
pnpm install # 安装 typescript + @types/node
pnpm build # 编译全部插件:tsc -p plugins/*/tsconfig.json
pnpm build:one <id> # 只编译一个
pnpm typecheck # 只做类型检查(--noEmit)
pnpm verify # 一键全验:build + prepare 冒烟 + MCP 协议冒烟 + skill frontmatter
TOYBOX_GITHUB_REPOSITORY=omdsh-dev/toybox pnpm release:prepare
- 编译器选项启用
strict、noUncheckedIndexedAccess和exactOptionalPropertyTypes。 - 产物是零依赖单文件(只有
node:内置 import),.mts输入保证.mjsESM 输出。仓库自有 packager 只整理静态资源,不负责 TypeScript 编译。 - 产物随源码一起提交(
.dsh-plugin/是交付物);改源码后必须pnpm build再提交。 pnpm verify验证的是 toybox 自有 packager 与 MCP/skill 内容,不代表兼容尚未公开发布的 Repository Plugin,也不代表 npm 上的某个“最新版本”。- 语言统计:
.gitattributes把构建产物标为 generated,.mts显式归 TypeScript。
语言统计重算时机:push 触发、异步刷新(.gitattributes 的 linguist 规则随最新 commit 生效)。
🏗️ 入住指南
新插件四步入住:
- 写源码:
plugins/<id>/src/<id>.mts(TypeScript,零依赖);技能插件则是plugins/<id>/.dsh-plugin/skills/<id>/SKILL.md。 - 建包:
plugins/<id>/.dsh-plugin/(package.json+prepare.js+.mcp.json或skills/)+plugins/<id>/tsconfig.json(extends根 base),按仓库维护的候选静态格式组织。 - 构建 + 自证:
pnpm build:one <id>编译;跑一遍仓库自有prepare.js确认产物生成;官方依赖可用后再补真实 DSH 运行时挂载验收。 - 登记:README 住户表加一行。
玩具箱纪律
- 好玩是第一生产力,但验收标准不能少:每个插件必须能过仓库自有 packager,README 里写清“什么时候用”。
- 不重复造轮子:正经通用插件(git 提交信息、代码规范……)去 dsh-hub,toybox 只收有梗的。
- 诚实标注:判断类技能要带证据(参考 code-archaeologist 的"证据链"纪律),段子归段子,结论归结论。
🗺️ 规划中住户(候选,未开工)
| 住户 | 类型 | 梗点 | 状态 |
|---|---|---|---|
🧘 代码瑜伽 code-yoga | skill | 重构动作瑜伽体式化,小步可验收 | 候选 |
🌐 代码翻译官 code-translator | skill | 老代码现代化"翻译",原文/译文对照 | 候选 |
🧭 代码导游 code-tour-guide | skill | 带新人逛代码库的旅游路线 | 候选 |
🃏 代码塔罗 code-tarot-mcp | mcp | 编程概念牌组 22 张大阿卡纳 | 候选 |
🚑 乱码急救员 mojibake-medic | skill | 中文编码救援:GBK/UTF-8/转义诊断修复 | 候选(已下架待重启) |
想新增别的?看 docs/CONTRIBUTING.md。
📜 许可
本仓库的源码、插件与文档统一采用 MIT 许可,版权归作者 mattheliu 所有(见 LICENSE)。