🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

免构建插件集 huyang218/dsh-plugins

DeepSeek Harness
huyang21872 天前有提交已提供中文文档扫描:含敏感能力

按名或路径安装十八款免构建插件,扩展模型与界面

28.4/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add huyang218/dsh-plugins
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · market
装得上吗
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 72 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 49 处,展示前 38 条)
  • 发起网络请求
    packages/astock/lib/data.js:133
    const response = await fetch(url, { signal });
  • 发起网络请求
    packages/astock/lib/data.js:206
    const response = await fetch(url, { signal });
  • 发起网络请求
    packages/astock/lib/data.js:275
    const response = await fetch(url, {
  • 发起网络请求
    packages/ecom-keepa/lib/index.js:166
    const payload = await used.request('product', {
  • 发起网络请求
    packages/ecom-keepa/lib/index.js:203
    const payload = await used.request('product', {
  • 发起网络请求
    packages/ecom-keepa/lib/index.js:245
    const payload = await used.request('query', {
  • 请求外部主机open.feishu.cn
    packages/im/lib/channels.js:85
    const response = await fetch('https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal', {
  • 发起网络请求
    packages/im/lib/channels.js:85
    const response = await fetch('https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal', {
  • 请求外部主机open.feishu.cn
    packages/im/lib/channels.js:98
    const response = await fetch('https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=chat_id', {
  • 发起网络请求
    packages/im/lib/channels.js:98
    const response = await fetch('https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=chat_id', {
  • 发起网络请求
    packages/im/lib/channels.js:180
    const json = await (await fetch(url)).json()
  • 发起网络请求
    packages/im/lib/channels.js:190
    const json = await (await fetch(url, {
  • 发起网络请求
    packages/im/lib/channels.js:271
    const json = await (await fetch(inbound.replyWebhook, {
  • 发起网络请求
    packages/im/lib/channels.js:286
    const response = await fetch(DINGTALK_GATEWAY, {
  • 请求外部主机bots.qq.com
    packages/im/lib/channels.js:321
    const json = await (await fetch('https://bots.qq.com/app/getAppAccessToken', {
  • 读取本地文件
    packages/seal/lib/convert.js:64
    await access(candidate)
  • 读取本地文件
    packages/seal/lib/convert.js:121
    await access(produced)
  • 读取本地文件
    packages/seal/lib/convert.js:123
    const listing = await readdir(workDir).catch(() => [])
  • 写入本地文件
    packages/seal/lib/convert.js:126
    if (produced !== target) await rename(produced, target)
  • 读取本地文件
    packages/seal/lib/index.js:147
    return { target, bytes: await readFile(target.path ?? target.displayPath) }
  • 写入本地文件
    packages/seal/lib/index.js:507
    await writeFile(output, await save(pdf))
  • 写入本地文件
    packages/seal/lib/index.js:607
    await writeFile(output, await save(pdf))
  • 写入本地文件
    packages/seal/lib/index.js:717
    await writeFile(output, signed)
  • 写入本地文件
    packages/seal/lib/index.js:798
    await writeFile(p12Path, made.p12, { mode: 0o600 })
  • 写入本地文件
    packages/seal/lib/index.js:799
    await writeFile(certPath, made.certificatePem)
  • 读取本地文件
    packages/seal/lib/index.js:864
    const pdf = await loadPdf(await readFile(output))
  • 写入剪贴板
    packages/shortcuts/lib/client.js:138
    const p = navigator.clipboard.writeText(text);
  • 发起网络请求
    packages/shortcuts/lib/client.js:395
    const p = fetch('/dsh-shortcuts-permission?sessionId=' + encodeURIComponent(currentSessionId) + '&preset=' + encodeURIComponent(preset));
  • 写入本地文件
    packages/sprite/lib/index.js:144
    await mkdir(candidate, { recursive: false })
  • 写入本地文件
    packages/sprite/lib/index.js:149
    await mkdir(dirname(candidate), { recursive: true })
  • 写入本地文件
    packages/sprite/lib/index.js:304
    await writeFile(imagePath, encodePng(image))
  • 写入本地文件
    packages/sprite/lib/index.js:306
    await writeFile(promptFile, full + '\n')
  • 读取本地文件
    packages/sprite/lib/index.js:430
    const image = decodeWithin(await readFile(source.path), config)
  • 读取本地文件
    packages/sprite/lib/index.js:436
    scaleProfile = JSON.parse(await readFile(profile.path, 'utf8'))
  • 写入本地文件
    packages/sprite/lib/index.js:461
    await mkdir(join(dir, 'frames'), { recursive: true })
  • 写入本地文件
    packages/sprite/lib/index.js:464
    await writeFile(sheetPath, encodePng(result.sheet))
  • 读取本地文件
    packages/sprite/lib/index.js:638
    const image = decodeWithin(await readFile(found.path), config)
  • 发起网络请求
    packages/vision/lib/index.js:582
    return fetch(wire.url(route), {
扫描于 2026/11/3(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库
涉及外部主机:open.feishu.cn、bots.qq.com

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 按名或路径安装插件
  • 免构建ESM包
  • 扩展模型与界面

README

由 DeepSeek 最新模型翻译生成
dsh-plugins DeepSeek Harness(dsh)的插件仓库 —— dsh 是基于 Cordis 的「一切皆插件」agent 运行框架。 License: MIT Build-free ESM Tests: node:test English · 中文 这里每个包都是可安装的 dsh 组合包(bundle):纯 ESM、免构建,可以从 npm 装、从 git 装,也可以直接指向源码目录一边改一边用。 dsh 能跑的地方它们都能跑:命令行、macOS 与 Windows 上的 [dsh Desktop][desktop] (它的插件管理器可以按包名、URL 或本地路径直接把这里的插件装进去),以及手机上的 [dsh Android][android]。 [desktop]: https://github.com/huyang218/dsh-desktop [android]: https://github.com/huyang218/dsh-android 插件 三种形态,由各自 package.json 的 dsh.category 区分——一个插件扩展的是什么, 决定了它从哪里能被看见: | 分组 | 谁能看见 | 扩展什么 | 指南 | | tools/…
展开完整文档(README 剩余 1 节)
dsh-plugins

DeepSeek Harness(dsh)的插件仓库 ——
dsh 是基于 Cordis 的「一切皆插件」agent 运行框架。

License: MIT
Build-free ESM
Tests: node:test

English · 中文

这里每个包都是可安装的 dsh 组合包(bundle):纯 ESM、免构建,可以从 npm 装、从 git 装,也可以直接指向源码目录一边改一边用。

dsh 能跑的地方它们都能跑:命令行、macOS 与 Windows 上的 [dsh Desktop][desktop]
(它的插件管理器可以按包名、URL 或本地路径直接把这里的插件装进去),以及手机上的 [dsh Android][android]。

[desktop]: https://github.com/huyang218/dsh-desktop
[android]: https://github.com/huyang218/dsh-android

插件

三种形态,由各自 package.json 的 dsh.category 区分——一个插件扩展的是什么, 决定了它从哪里能被看见:

| 分组 | 谁能看见 | 扩展什么 | 指南 |
| tools/… | 模型 | 模型可调用的能力,会写进系统提示词 | tools 指南 |
| runtime/… | 都看不见 | 围绕 harness 自身的 waterfall 包装与共享服务 | runtime 指南 |
| ui/… | 用户 | Web 客户端扩展——结果卡片、键盘操作界面 | ui 指南 |

分类的后半截是领域:tools/finance 与 ui/finance 是 A 股的数据面、信息面与持仓; tools/vision 让纯文本模型能借助多模态模型看图;tools/ecommerce 是跨平台的电商选品研究; tools/documents 直接加工文件本身;tools/game 做 2D 游戏美术素材; runtime/provider、runtime/observability、runtime/reliability、runtime/llm 是共享凭证、度量、重试与网关兼容;runtime/im 让聊天软件能驱动会话;ui/productivity 是 Web 客户端本身的操作效率;ui/observability 把 agent 正在干什么变成用户看得见的画面。

按需取用

tools/ — 模型可调用的能力

| 插件 | 做什么 | 包名 |
| astock | A 股行情、K 线、技术指标、全市场筛选、财报、资金流、可转债——免费,少数工具需 Tushare token | dsh-plugin-astock |
| vision | 让纯文本 agent 中途调用多模态模型——Qwen / Kimi / OpenAI / Claude / Gemini,返回结构化证据而不是散文 | dsh-plugin-vision |
| ainfo | A 股新闻、券商研报、业绩预告、分红、股东增减持、十大股东——需 Tushare token | dsh-plugin-ainfo |
| seal | 给 PDF 盖章并签名——合同章、骑缝章,以及用你的证书对整个文件做 PAdES 数字签名 | dsh-plugin-seal |
| aportfolio | 跨会话记住持仓与自选,实时估值,给出盈亏、占比与目标价触发 | dsh-plugin-aportfolio |
| ecom | 把亚马逊 / Shopify / 淘宝天猫 / 京东 / 拼多多 / 抖音的商品链接归位,并说明该平台真正披露什么销量——带口径窗口、精度与来源,绝不给裸数字 | dsh-plugin-ecom |
| sprite | 游戏用的 2D 精灵图:出图模型画网格原图,本地抠底、切帧、统一缩放与地面线对齐并做几何 QC,产出透明帧、整表、预览 GIF 与引擎图集 | dsh-plugin-sprite |

runtime/ — 围绕 harness 的行为,模型看不见

| 插件 | 做什么 | 包名 |
| im | 用手机上的聊天软件给 agent 下指令——飞书 / 企微 / 钉钉 / QQ 驱动真实回合并回复;白名单默认全拒 | dsh-plugin-im |
| tushare | 共享的 Tushare Pro 接入:一个 token、一个配额闸、一份交易日历,以及 Agent 能据以行动的错误分类 | dsh-plugin-tushare |
| ecom-keepa | 电商工具的 Keepa 接入:亚马逊商品详情与 Product Finder,把平台披露的月销量原样保留为分档值 | dsh-plugin-ecom-keepa |
| ecom-jd | 电商工具的京东联盟接入:这几个平台里唯一一个对别人商品公布真实 30 天口径的——但只数联盟渠道,按「下限」如实报出 | dsh-plugin-ecom-jd |
| tool-health | 记住哪些工具一直在失败,并在下一次会话开工前告诉模型 | dsh-plugin-tool-health |
| tool-usage | 计量每个工具的调用次数、耗时分位数与失败数,可设预算提醒 | dsh-plugin-tool-usage |
| tool-retry | 对 socket 重置、限流、超时这类可恢复失败做重试,只针对运维点名可安全重复的工具 | dsh-plugin-tool-retry |
| gateway-compat | 网关的 SSE 流缺 [DONE] 时,不让一次已经完整的回复被判为失败 | dsh-plugin-gateway-compat |

ui/ — Web 客户端扩展

| 插件 | 做什么 | 包名 |
| astock-chart | 把 astock_data 的结果画成带成交量的 K 线图——需要 native 或 both 呈现模式 | dsh-plugin-astock-chart |
| shortcuts | Web 客户端键盘快捷键:34 个功能,每个绑定都可自己录制 | dsh-plugin-shortcuts |
| office | 侧边栏里的像素办公室:固定一套专员班底,所有会话的活聚合到他们身上——干活、排队、打盹都看得见 | dsh-plugin-office |

每个插件自己的中英文 README 才是它做什么、需要什么代价的准确说明。按包名安装:

dsh plugin --profile web add dsh-plugin-astock

想找本仓库没有的插件? CATALOG.zh.md 按分类列出了由他人维护的插件。

[!NOTE]
金融插件通过 tushare provider 共用一份凭证,而不是各自向用户要同一个 token。
每个需要凭证的工具都在自己的描述里写明——这样模型能在有免费替代时选免费的, 在没有时如实告诉用户缺什么。

安装

装进 dsh profile,从 npm:

dsh plugin --profile web add dsh-plugin-astock

或从源码目录安装——这也是对着运行中的 profile 做开发的方式,因为装进去的是符号链接,改完代码重启服务即可生效:

dsh plugin --profile web add ./packages/astock

启动前先确认它进了组合树:

dsh --profile web --dump-config # 看插件对应的那一行

配置

导出了 Schemastery Config 的插件不需要用户碰命令行:桌面壳(比如 [dsh Desktop][desktop])会在安装时按 schema 渲染表单。值最终落成 profile 的 cordis.patch.yml 里一条按 id 定向的覆盖,你也可以手写:

- id: astock
config:
tushareToken: '你的 token'

[!IMPORTANT]
层顺序上后应用者按行胜出,并且 patch 是整行 config 替换、不深度合并——覆盖别人的行时要把需要的键全部重述一遍。

工具呈现模式——一次会话里工具走原生调用、Code Mode、还是两者皆可——由 agent 预设选定一次,作用于会话里的每一个工具,而不是按插件区分。本仓库有几个插件要求特定模式, 而这个选择会影响你装的所有其他插件:见工具呈现模式。

开发

npm install # 仓库根;为所有包解析 peer 依赖
npm test # 全部包
npm test -w dsh-plugin-astock # 单个包
node --test packages/astock/test/*.test.js # 单个文件

测试用 Node 内置 runner(node:test):零测试依赖、免构建,和插件本身的加载方式
一致。测试跑的是真实发布入口(lib/index.js)和真实的 defineTool,所以 schema
违规会在单测阶段就红,而不是等到 dsh 启动时才崩。

[!TIP]
单测绿不等于可以交付——它不经过 Loader,也不经过真实组合。

CLAUDE.md 是完整的开发规范——插件生命周期、配置、工具编写、waterfall 扩展点、bundle 分层、测试约定,以及改完插件后的验证清单。它写给 AI 编码 agent,但人类贡献者需要的规则完全相同。

贡献

1. 按要做的东西读对应指南:tools(模型可调用的能力)、
runtime(waterfall 包装与共享服务)、
ui(Web 客户端扩展)。
2. 建 packages//,含 package.json(含 dsh.category)、cordis.patch.yml、 lib/index.js、README.md、LICENSE。
3. 用命名导出 name / inject / apply。default 导出会让 Loader 丢掉 inject,而它失效后的表现完全不像是导出方式引起的,很难查。
4. 加 test/plugin.test.js,覆盖导出形态和全部注册。
5. 跑 npm test,并走一遍 CLAUDE.md 里的验证清单。

有四处名字容易混:

| 位置 | 值 | 用途 |
| package.json 的 name | dsh-plugin-astock | npm 包名 |
| lib/index.js 导出的 name | astock | Loader 诊断用的短名,不带前缀 |
| cordis.patch.yml 的 id | astock | 组合树里的行 id,配置覆盖按它定向 |
| cordis.patch.yml 的 name | dsh-plugin-astock | 按包名引用,不是路径 |

相关项目

| 项目 | 是什么 |
| DeepSeek Harness | 运行时本身,也就是 dsh——这里每个插件扩展的对象 |
| dsh-desktop | macOS 与 Windows 桌面应用:安装并更新运行时、持有服务进程与存储,并在窗口里安装、配置、停用、更新插件 |
| dsh-android | Android 应用:host 与 client 都跑在手机上,不连服务器,也不需要另一台开着的电脑。尚早——旁加载 apk,且没有 shell 工具 |

dsh-desktop 与 dsh-android 与本仓库出自同一作者,均为非官方项目,与 DeepSeek 无隶属关系。

许可

MIT,见 LICENSE。
预览分享卡片长什么样 ↓huyang218/dsh-plugins
分享 · DeepSeek Harness Hub
huyang218/dsh-plugins

按名或路径安装十八款免构建插件,扩展模型与界面

这是你的仓库?认领条目

回到顶部