Replies: 2 comments 2 replies
|
把插件市场做成官方内置、可启停的元插件——这个设计很妙:发现/下载/安装/卸载封装成一个插件,既满足市场诉求又保持"一切皆插件"的纯粹性。 我们第 7 章生态预测里提过"插件市场标准化是必然方向"(dsh-plugin topic + 数量增长催生市场),你这个方案把工程取舍(可启停/元插件)落地了。已收录进第 7 章作为生态方向参考:https://github.com/Electricitysheep/dsh-handbook/blob/main/docs/07-ecosystem.md |
1 reply
|
谢谢!《记忆体》#1822 我看了——跨会话、隔离、用户显式挂载的记忆单元,正好戳中当前"记忆一锅乱炖"的痛点(会话结束日志就没了 / session-reference 只能 @提及 3 个源)。 这个提案和社区记忆家族(dsh-sgme 按场景注入/dsh-memory/AgentSoul)是同一方向的更底层设计——"记忆体"如果做出来,上面那些插件都可以挂在它上面。 已把 #1822 收录进手册第 8 章(记忆方向)+ 生态章节,会持续跟踪:https://github.com/Electricitysheep/dsh-handbook/blob/main/docs/08-tools-context.md |
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
来自社区用户的建议,投在这里是希望和社区一起把它打磨成形,而非求立即实现。文中几处已刻意留白,标在"开放问题"里,欢迎维护者和社区一起讨论工程取舍。若我对现状理解有误,也请直接指出。
背景与动机
DeepSeek Harness 的「一切皆插件」在技术层面已经成立——
ctx.registry/ctx.plugin/ctx.inject让每个能力都是可替换的插件。但在分发层面,插件仍只能通过本地文件扫描被发现,没有下载、安装、卸载的用户路径:ui-settings-plugin-inventory是只读的 Loader 清单,其 Known Limitations 明确写着缺 provenance(出处)、grouping by source(按来源分组)、plugin mutation controls(安装/卸载)。ui-settings-plugins的 Known Limitations 里:仓库外分发的插件无法把自己的配置暴露到设置页,因为配置暴露是 Host 白名单(packages/host/apiproxy的 allowlist)而非插件声明。CONTRIBUTING.md明确鼓励社区插件(关联dsh-plugintopic 分享),并声明「不认为官方仓库的包天生比社区包更重要」「本仓库是 idea、官方 showcase、灵感来源,而非命令(mandate)」。结论:分发与发现是当前生态链上缺失的一环。本文提议用「元插件」补上它,且不引入任何新特权。
提案:市场是一个插件
Plugin Marketplace = 一个官方内置的元插件,它做四件事:发现(浏览远程目录)、安装(拉取并落地)、卸载(移除)、信任呈现(标注来源与权限)。
因为是插件,所以:
ui-settings-plugins已声明settings.plugins.tab根列表 slot,现有all(清单)和configurable(配置)两个 tab 都是插件贡献的;市场就是第三个贡献同一 slot 的 tab,无需改造外壳。ctx.remote.pluginInventory.list()读 Loader 快照,市场在它之上增加写路径即可。元插件的自指闭环
市场 UI 本身是一个插件 → 它出现在自己的清单里 → 用户能通过它禁用市场自己。这不是缺陷,而是「一切皆插件」哲学的可验证证明:没有不可替换的第一方能力。
清单规范:plugin.manifest.json
现有元数据散在
package.json的dsh字段(如dsh.client.inject、dsh.client.platform),但缺三样市场必需的声明:version/ 兼容范围dependenciespermissions提议定义
plugin.manifest.json(或扩展dsh字段),让市场在安装前就能向用户展示「这个插件要什么权限、依赖什么、兼容什么」。信任模型:判官 / 决策者 / 分发者三层
这是本提案与官方哲学咬合最紧的部分。信任不是「官方替你决定装什么」,而是「用户决定,官方和社区让这个决定成为知情的决定」。
trust字段「呈现差异而非强制执行」dsh-plugintopic 自托管CONTRIBUTING.md鼓励的生态方向关键原则沿用
agent-presets的既有哲学:trust 字段用于呈现差异(标记system/user/third-party),不是用于强制执行。用户看到「第三方、未审查、请求了 shell 权限」后仍可选择安装——选择是知情的,后果是用户的。沙箱与依赖隔离
现状的沙箱是文件系统沙箱(
fs-sandbox、sandbox-windows-acl、landlock-run),不是插件能力沙箱;依赖隔离靠 pnpm workspace 的 peerDependency 静态约束。市场引入第三方代码后,需要补两件事,但建议分阶段、不阻塞 MVP:
isolaterealm 可复用)。与现有架构的关系
ctx.registry/ctx.pluginui-settings-plugin-inventoryui-settings-plugins的settings.plugins.tabslotagent-presets的 trust 呈现apiproxy开放问题(诚邀社区意见)
ui-settings-plugins已点破——第三方插件如何在不改packages/host/apiproxy的前提下暴露自己的配置?这是第三方插件生态的第一道技术门槛,市场提案绕不开它。dsh-plugintopic?如何防伪造与防篡改(签名、checksum)?permissions声明到 ctx 服务级别,还是更粗/更细?如何防止插件声明与真实行为不符。参考
CONTRIBUTING.md:「不认为官方包天生比社区包更重要」「本仓库是 idea 而非 mandate」。ui-settings-plugin-inventory/ui-settings-plugins的 Known Limitations(官方已列出 provenance / grouping by source / mutation controls 为 Deferred Work)。agent-presets的 trust 哲学:the trust field exists so consumers can present that difference, not to enforce it.姊妹提案:记忆体(Memory Body)#1822
All reactions