跳到主内容

dsh-toolkit

24Star1Fork1Issue0Watching

DSH 零依赖工具集合,一次挂载 10 个确定性小工具供 AI 调用

机审证据5/5方法论数据来源安装命令持续维护DSH 版本风险扫描
机审证据安装命令仓库已核验dsh-plugin Topic许可证READMEAI 百科
语言
TypeScript
License
MIT
分支
main
collectiondshdsh-plugintoolkitzero-dependency

安装

命令web profile
$ dsh plugin --profile web add github:omdsh-dev/dsh-toolkit

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

对话式安装

帮我安装 DeepSeek Harness 插件 omdsh-dev/dsh-toolkit:先查看仓库 https://github.com/omdsh-dev/dsh-toolkit 确认安全性,然后执行安装命令并验证插件加载成功。

把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。

一句话定位

DSH 零依赖工具集合,把时间、编码、JSON、计算器、CSV、正则、Markdown、Diff、统计、Schema 这 10 个确定性小工具一次性挂载到 DSH,让 AI 在对话里直接调用而无需再装 10 个独立插件。

核心能力

  • 注册 10 个常用确定性工具(time / encoding / json / calculator / csv / regex / markdown / diff / stat / schema),供 AI 在工具调用时直接选用
  • 提供 collection 形态:通过 catalog.json + scripts/install-*.sh 一次性把全部子包安装到 web 或 headless profile,脚本幂等可重复执行
  • meta 包原子挂载:通过相对路径动态导入聚合 10 个子包,任一子包失败时逆序回滚已注册工具,不留下半成品状态
  • 子包可独立安装:每个 dsh-tool-* 都是独立 bundle,可单独装/启/卸,例如只装 csv 或只装 diff
  • 跨环境离线运行:所有子包零依赖、纯函数实现,不联网、不读文件、不写文件、不调 git
  • 安全护栏:每个工具都设置 timeoutMs 兜底与单侧输入/输出字节上限,regex 用 worker 硬超时

技术实现

  • 语言: TypeScript(ESM 模式,tsc 编译到 lib/)
  • 关键依赖: @deepseek-ai/cordis、@deepseek-ai/dsh-tools、@deepseek-ai/dsh-invariants
  • 架构模式: 根 meta 包通过相对路径动态 import 10 个子包(../packages/dsh-tool-*/lib/index.js),调用其 apply() 向 ctx.tools.register 注册工具;patch 通过 package.json#dsh.bundle.patch 指向 cordis.patch.yml,DSH 加载时把 tool-kit 插入 profile layer 栈
  • 入口文件: src/index.ts(meta 包聚合入口)、packages/dsh-tool-*/src/index.ts(10 个子包各自入口)

适用场景

日常对话或自动化任务里需要做 JSON 路径查询、CSV 解析、正则匹配、Markdown↔HTML 转换、文本/JSON/CSV/Markdown Diff、描述统计、JSON Schema 校验等"小而确定"的操作时,挂一次本集合就能让 AI 直接调用,避免为每个工具单独搜装插件。适合不需要写脚本、只用 AI 工具调用就能解决的场景。

前置依赖与兼容性

依赖最低版本说明
DSH0.1.0-rc.1+peerDependencies 要求 @deepseek-ai/dsh-invariants 与 @deepseek-ai/dsh-tools 在 [0.0.1-rc.1, 0.2.0),@deepseek-ai/cordis ^4.0.1
Node.js>=22.19.0package.json#engines 声明 ^22.19.0 || >=24.0.0
平台macOS / Windows / Linux纯 TypeScript 实现,未声明任何原生依赖;脚本在 README 提及 Windows 路径需用正斜杠(C:/...)
原生模块无仅依赖运行时 JS 包,不引入 node-gyp、node:sqlite、node-pty 等原生模块

安装方式

dsh plugin --profile web add github:omdsh-dev/dsh-toolkit

也可使用仓库自带脚本批量安装到 web/headless:

./scripts/install-web.sh       # 全部 10 工具 → web profile
./scripts/install-headless.sh  # 全部 10 工具 → headless profile
./scripts/install-all.sh       # 两个 profile 都装

配置项

本插件无需额外配置。所有子工具均通过 ctx.tools.register 注册为 DSH 工具调用,参数(如 regex 的 pattern、csv 的分隔符、schema 的 schema)由每次工具调用时传入,不读取任何 config / env 变量。

常见问题

Q: meta 包和独立 bundle 模式有什么差别?我该用哪种?

A: 推荐独立 bundle 模式——每个子包都是独立插件,可以单独装/启/卸,配合 scripts/install-*.sh 也能一键批量装。只有当业务上需要一次性原子挂载全部工具(即"装就全装、卸就全卸")时,才用 meta 包(dsh plugin --profile web add github:omdsh-dev/dsh-toolkit)。

Q: 我之前单独装过 tool-csv,再装 meta 包会不会冲突?

A: 会。10 个子包注册的 DSH 工具名(time/encoding/json/calculator/csv/regex/markdown/diff/stat/schema)会与 profile 中已存在的同名工具冲突,导致注册报错。遇到这种情况,请先移除已单独装的同名工具再装 meta,或改用独立 bundle 模式(推荐)。

Q: 装到 web 之后,dsh run 能直接用到这些工具吗?

A: 不能。web 与 headless 是 DSH 中两个独立的 profile,web 安装不会自动覆盖 headless;dsh run 默认使用 headless profile。脚本里也分别提供了 install-web.sh / install-headless.sh / install-all.sh 三种入口。

Q: 这 10 个工具能离线用吗?需要联网或读本地文件吗?

A: 可以。所有子包都是零依赖、纯函数实现,diff 模块的源码注释也写明不读文件、不联网、不写文件、不调 git。JSON Schema、CSV、正则等工具完全基于输入字符串工作;encoding 工具只处理 UTF-8 文本。

Q: regex 工具会不会因为灾难性回溯把进程卡死?

A: 不会。regex 子包用 worker 硬超时做兜底;其他子包也各自有 timeoutMs 上限(time 1000ms、diff 2000ms、schema 3000ms,pattern worker 另加 1000ms),每个工具同时设了单侧输入/输出字节上限,避免大输入阻塞。

Q: 不想用 meta 包,只想要其中一个工具,怎么装?

A: 每个子仓库都是独立 bundle,可单独安装,例如 dsh plugin --profile web add github:omdsh-dev/dsh-tool-csv、dsh plugin --profile headless add github:omdsh-dev/dsh-tool-diff,不必依赖本 collection 仓库。

Q: meta 包 apply 失败时会不会留下"装了一半"的状态?

A: 不会。src/index.ts 在 apply 期间临时包装 ctx.tools.register 捕获每个工具的 disposer,任一子包注册失败时按逆序调用 disposer 回滚已注册工具,最后抛出包含"已回滚数量"信息的错误,不残留部分注册。

上手难度

入门 — 安装一行命令即可生效,AI 在对话中按需调用,无需写配置或脚本;理解各工具的 action 含义后即可直接使用。

已知问题与限制

  • 命名冲突:meta 包的 10 个子工具名(time/encoding/json/calculator/csv/regex/markdown/diff/stat/schema)与同名独立 bundle 冲突,profile 中若已存在同名工具,装 meta 包会注册失败(README.md:107-109)
  • encoding 工具的 hash 仅供非安全用途(md5/sha1/sha256/sha512),工具参数会被记入会话日志,禁止用来传密钥或 token(packages/dsh-tool-encoding/src/index.ts:21-27)
  • encoding 工具只支持 UTF-8 文本;非 UTF-8 输入不会被自动转码
  • diff 工具单侧输入上限 256KB、输出上限 64KB、Myers diagonal 预算 2000、行数 50K 上限,超出会按 maxChanges 与字节预算截断并注明(packages/dsh-tool-diff/src/index.ts:1-9)
  • schema 工具 strictSchema 默认 true,maxErrors 默认 100、范围 1..1000,输出上限 1 MiB(packages/dsh-tool-schema/src/index.ts:1-12)
  • time 工具只接受严格 ISO 8601 时间戳(YYYY-MM-DD 或 YYYY-MM-DDTHH:mm:ssZ,可选 .SSS 与 ±HH:MM 偏移),其他格式会被拒绝
  • csv 工具按 RFC 4180 严格引号解析,query 为精确匹配(非子串),列名在第一行为 header 时使用,否则用 1-based 索引
  • regex 工具为避免长耗时匹配,pattern/输入都有硬性大小上限与 worker 超时
  • 仓库内未发现 TODO/FIXME/HACK/XXX 注释

查看使用指南 →

该插件的安装步骤、关键要点、FAQ 与兼容性说明(基于已收录字段派生)。

收录徽章

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/omdsh-dev/dsh-toolkit)

把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。

返回插件目录