Repository navigation
Replies: 2 comments
|
The diagnosis matches what the code does, and this is a distribution problem worth solving. I have spent several rounds building plugins that live exactly at the profile boundary, and there are three states a target-profile picker has to keep separate. All facts below are from the tree as it stands today or from reports linked here. 1. The capability exists, but its create path does not validate the target. initProfile(dir, PROFILE_TEMPLATES[profile]?.bundles ?? DEFAULT_PROFILE_BUNDLES)
2. "Installed" and "selected" are two different writes. Install writes the profile's 3. Two profile-local failure modes, both of which hit marketplace-installed plugins first.
4. On the declaration in §3.2. If a plugin is to declare that it needs its own profile, the declaration has to be readable from the manifest without executing plugin code: the installer reads npm metadata before install, and §非目标 rules out install-time script execution. So it belongs in None of this asks for a new mechanism; it is the three states a picker must distinguish. Both plugins named above are published on npm with public repositories, so if any of this is useful as evidence for the design, the measurements and their reproductions are there — happy to dig further into any of them. |
|
还有一种破坏性更低的解法: 提供一个跳转和一个卡片接口,用户点击后可以把安装prompt发送到默认工作区,接下来使用dsh按照prompt的指导走正常npm流程安装 |
Uh oh!
There was an error while loading. Please reload this page.
1. 快速预览
官方桌面端的插件市场是生态里最权威可信的分发入口,但当前安装器把安装目标固定为正在运行的那个 profile,这意味着,对于必须自己实现profile才能获得预期功能的插件,他们将不被官方桌面端插件市场分发入口认可。
官方桌面端从市场安装时只能落进当前 profile 的设计在产品定位上确实是非常正确的,但 DeepSeek-Harness 采用多 profile 设计无疑是允许社区制作自建 profile 的插件。尽管考虑到多 profile 的插件管理可以轻易由第三方社区管理器实现,但是无法被用户量最大的官方桌面端的官方插件市场和官方插件管理器安装,对于那些必须拉起独立 profile 的插件是极大的打击。
本提案不是要求把desktop app变成一个多 profile 控制台软件,本提案请求补一个接口:让用户在安装时能看到并选择目标 profile —— 或是官方认为的任何更好的解决方案,目的是为那些在设计上必须拉起独立 profile 的插件提供官方桌面端插件市场的分发与下载可行性,从而避免这些插件被排挤出权威插件入口。
2. 背景与证据
2.1 现状:安装与管理都绑定"运行中的 profile"
@deepseek-ai/dsh-plugin-manager注入profileContext,并把this.profile = ctx.profileContext作为所有操作的落点(packages/boot/plugin-manager/src/index.ts:177,192,209);安装、移除、列举、开关都写this.profile.dir(同一文件:281,303,478,536,543,666,716等)。就现有代码看,安装操作没有暴露"目标 profile"入参:一次安装必然落在当前宿主的 profile 上。官方桌面端只有一个 profile:$DSH_HOME/profiles/desktop(apps/desktop/src/paths.ts:19),并且由 Electron 独占(同文件:20的 lock;CLI 侧另有rejectElectronProfile明确拒绝第三方 CLI 触碰它,apps/cli/src/args.ts:83-87)。2.2 需要独立组合的插件,在市场上没有"归属"
有些插件天生不适合与宿主共用一份组合:
dsh.profile.bundles是一个有序数组,新选中的 bundle 追加在末尾,后应用的 patch 按 id 覆盖先前的(plugin-manager的selectBundle;packages/boot/app-boot/src/profile.ts的加载顺序)。以社区中一个终端前端插件为例,它的 bundle patch 会覆盖宿主未被官方 web bundle 覆盖的 8 行(system-prompt/llm-deepseek/agent-loop/session-telemetry-otel/plugin-package-inventory-deepseek/sandbox-policy/approval/session-persistence-jsonl)——影响面是整个宿主。于是从官方市场安装这类插件,只剩三种结果:
dsh plugin --profile X add),而官方安装器出于安全考虑不执行插件脚本,用户被推向手敲 CLI 或手改profiles/*/package.json。对于相当多的用户,会认为未被收录于官方插件市场的插件是不被官方认可的。2.3 反证:跨 profile 安装的能力已经存在
dsh plugin --profile <name> add <pkg>就是跨 profile 安装:目标 profile 不存在时由initProfile初始化(apps/cli/src/plugin.ts:40:PROFILE_TEMPLATES[profile]?.bundles ?? DEFAULT_PROFILE_BUNDLES),随后正常走 pnpm。3. 目标 / 非目标
目标
非目标
desktopprofile 开放给第三方 CLI 或任意进程All reactions