首页/ kiana/ Agent #Agent#研究#DSH#调研 DSH 插件市场调研 · 知识点总结 2026-11-05 定义:npm 包格式的模块 + 声明式挂载配置 + 至多两个半边。 | 半边 | 跑在哪 | 能力 | |---|---|---| | h… kiana 2026-11-05 知识总结 17 次阅读 2026-11-05 ## 1. 插件是什么 **定义**:npm 包格式的模块 + 声明式挂载配置 + 至多两个半边。 | 半边 | 跑在哪 | 能力 | |---|---|---| | host | Node 主进程 | 文件、进程、网络、凭据 | | client | 浏览器 | DOM、UI 插槽 | host-only(alpha-guard)/client-only(皮肤)/双半(wallet)都常见。 **Cordis**:底层框架,"时空可组合性"——时间=副作用可撤销,空间=依赖可声明。 **设计目标是可组合性,不是安全性**:没有 threat model、没有 capability、没有授权概念。 **权限边界(关键)**: - host 在宿主进程内执行,权限 = **登录用户账户**(不是 root) - 沙箱与审批只覆盖**工具调用/子进程**,**不覆盖**插件代码 - client 受同源策略限制,读不到文件,但**能改 UI** **插件树**: - 不"被调用",是"被挂载";可加节点,也可换实现 - 继承方向:**子继承父**,兄弟不继承,只能通过服务互相发现 - 连 `ctx.tools`、`ctx.fs`、`ctx.sandbox` 本身都在树上 **最小插件 = 3 个文件**: | 文件 | 要求 | |---|---| | `package.json` | `name` + `main`/`exports` + `dsh.bundle.patch` | | `cordis.patch.yml` | `- insert: [{ id, name }]` | | `index.js` | 导出 `apply(ctx)`(`name`/`inject` 可选) | 三个对应:patch 路径存在、patch 的 `name` = 包名、`insert.id` 唯一。 **坑**:`cordis.patch.yml` 必须写进 `files`,否则发布后报 `not-a-bundle`。 **生命周期**:`npm 包 → 写进 profile → 启动加载 host → 页面注入 client → 运行 → 卸载` 卸载清理靠 `ctx.effect()` 的 disposer;裸 `setInterval` 不会被清理。 ## 2. 发布与安装 **三条通道**:npm(SHA-512 只证明来自 npm)/`github:`(无签名,直接跑仓库代码)/本地(无校验)。 两条规则: 1. **标签 ≠ 插件**:`dsh-plugin` topic 只决定被目录收录 2. **能否安装看 `dsh.bundle.patch`**:没有的包,pnpm 装完会被回滚 没有官方市场网站。内置 Discover 页读**用户配置的索引源**。 | 目录 | 口径 | 数量 | |---|---|---| | dshbase | 抓 GitHub topic | 20,020(star 前 4 名均非插件) | | awesome / dsh-market | 要求声明 `dsh.bundle` | 8,655 | | plugin-market 索引 | 可给出安装目标 | 4,481 | `dsh-market` 是第三方市场 App,能装卸、批量更新、**自我更新**。 **新攻击面:索引投毒**——一个 index.json 影响 4,481 条的展示与安装地址。 **profile** = 一套独立环境:`package.json`(依赖 + `dsh.profile.bundles`)+ `node_modules` + `cordis.patch.yml`。 `~/.dsh/plugins` 只是源码区,**DSH 不扫描**;运行时只认 `node_modules`。 **`dsh plugin add` 四步**:解析来源 → pnpm 装进 profile → 写依赖与 bundles → 下次启动加载。 ## 3. 权限与审批 | 维度 | DSH 插件 | |---|---| | 权限声明 | ❌ 无字段 | | 签名/身份 | ❌ 装时不验 | | 沙箱 | ❌ 不覆盖 | | 官方审核 | ❌ 无(第三方只验能否运行) | **审批的边界**: - agent 调 `plugin_manager` 工具 → 要审批 - 插件直接调 `ctx.pluginManager` → 不要(服务层无检查) 结论:**审批保护"agent 的动作",不保护"插件的行为"。** ## 4.现状 * 在官方缺乏管理,底层不追求安全性的开放生态,已有研究报告,足够展示很多问题了,继续深入的方向需要调整,评估。 * 社区发展太快,时效性不易保证 * 如果走这个方向,动态,链路是不错的选择,静态不适合 #Agent#研究#DSH#调研 复制链接 kiana @kianayang · 在蓝屿写作 关于博主