deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
jackxiao-hub/dsh-plugin-tree
A DSH web client plugin that turns the Settings → Plugins page into a dependency-layered plugin tree, plus an interactive dependency graph. Dependencies are prerequisites: see at a glance how plugins stack on each other, toggle them, and check for updates.
PROJECT TOPICS
PROJECT README
DSH(DeepSeek Harness)Web GUI 客户端插件:把 设置 → 插件 页面升级为依赖分层的插件明细树,并附带一张可交互的依赖关系图。依赖即前置条件——一眼看清插件之间的上下层关系,直接启停、检查更新。
A DSH web client plugin that turns the Settings → Plugins page into a dependency-layered plugin tree, plus an interactive dependency graph. Dependencies are prerequisites: see at a glance how plugins stack on each other, toggle them, and check for updates.
L{n}),层可折叠并显示插件数;无匹配条目的层自动隐藏cordis.patch.yml,重启保留)pnpm outdated 并发检查,60 秒缓存);有新版时行内出现"更新"按钮(pnpm add <pkg>@latest),安装后提示重启生效$DSH_HOME 默认为 ~/.dsh。
方法 A:一行命令(推荐,bundle 安装,发布后可用)
dsh plugin --profile web add github:jackxiao-hub/dsh-plugin-tree
建议固定 commit 安装:
github:jackxiao-hub/dsh-plugin-tree#<commit-sha>——固定后每次安装内容可复现、便于审计;不固定则随仓库最新提交变化。
装完重启 dsh web 生效(依赖 pnpm,npm install -g pnpm 即可)。
方法 B:插件市场
设置 → 插件市场 → 搜索 dsh-plugin-tree → 一键安装(收录于 awesome-dsh-plugin 后出现)。
方法 C:手动 link 安装(当前方式,无需发布)
C:\dev\dsh-plugin-treepackage.json 中:{
"dependencies": {
"@dsh-external/dsh-client-ui-plugin-tree": "link:C:/dev/dsh-plugin-tree"
},
"dsh": {
"profile": { "bundles": ["@dsh-external/dsh-client-ui-plugin-tree"] }
}
}
pnpm install 后重启 dsh web。profile 的
package.json(依赖与dsh.profile.bundles层栈)属于dsh plugin命令维护;手改仅限发布前的本地开发捷径,发布后请用方法 A/B。
插件市场功能已拆分为独立插件 @dsh-external/dsh-client-ui-plugin-market,本插件只负责插件明细。
重启后进入 设置 → 插件,出现"插件明细"标签:默认只显示第三方插件(切换"来源 → 全部"查看完整树);点击任意插件展开详情;工具栏可切到"依赖树"、执行"检查更新"。
无配置项。 本插件是纯 UI 投影 + 用户主动触发的操作,所有行为内建,不需要 cordis.patch.yml 配置块(bundle 安装时只插入一行挂载)。
ctx.loader.entries() 与各包 package.json(建树)、profile manifest(来源分类)cordis.patch.yml(仅替换目标 {id, disabled} 行,保留注释与其他内容)pnpm outdated / pnpm add(会访问配置的 npm registry,尊重 .npmrc 镜像)package.json 移除 @dsh-external/dsh-client-ui-plugin-tree 依赖与 dsh.profile.bundles 行(方法 A/B 则用 dsh plugin --profile web remove <spec>)dsh webpnpm add 只改磁盘,运行中的 loader 仍持有旧模块,重启 dsh web 后新版本才挂载。include: 预设),状态各自独立;树中按 entry id 判定,依赖图按包名合并为一个节点。./remote 导出(无对应产物),补齐 lib/invariant.js 伴生件产物(不随 bundle 自动挂载:等待 invariants 服务的 entry 会使 web 启动失败,需组合层显式挂载);Fiber 状态改按命名常量镜像映射(跨包 const enum 无法在 verbatimModuleSyntax 下引用,同官方处理);pnpm 命令超时改为调用方显式传入;安装说明补充 commit 固定建议deps/dependents 携带 entryId,同名 chips 各显其态、各跳其行;修复整层静态过滤后的深度压缩、RPC schema 同步entry.update,热生效持久化)MIT License(见 LICENSE)。发现安全问题请通过 GitHub issue 私密描述(不要贴凭据/日志中的敏感信息),或直接提 PR 修复。
L{n}), collapsible with per-layer counts; empty layers auto-hidecordis.patch.yml, survives restarts)pnpm outdated, 60s cache); rows with a newer version get an inline Update button (pnpm add <pkg>@latest), then a restart applies it$DSH_HOME defaults to ~/.dsh.
Method A: one-line install (recommended, bundle; once published)
dsh plugin --profile web add github:jackxiao-hub/dsh-plugin-tree
Pin the commit for reproducible installs:
github:jackxiao-hub/dsh-plugin-tree#<commit-sha>. Unpinned installs follow whatever the repo's latest push contains.
Then restart dsh web (requires pnpm — npm install -g pnpm).
Method B: plugin market
Settings → Plugin Market → search dsh-plugin-tree → one-click install (once listed in awesome-dsh-plugin).
Method C: manual link install (current way, no publishing needed)
C:\dev\dsh-plugin-treepackage.json:{
"dependencies": {
"@dsh-external/dsh-client-ui-plugin-tree": "link:C:/dev/dsh-plugin-tree"
},
"dsh": {
"profile": { "bundles": ["@dsh-external/dsh-client-ui-plugin-tree"] }
}
}
pnpm install, then restart dsh web.The profile's
package.json(dependency +dsh.profile.bundlesstack) is maintained by thedsh plugincommand; hand-editing is a pre-publish dev shortcut only — use Method A/B once published.
The plugin-market feature lives in the separate plugin @dsh-external/dsh-client-ui-plugin-market; this plugin covers plugin details only.
After the restart, open Settings → Plugins and find the "Plugin details" tab: third-party plugins are shown by default (switch the vendor filter to "All" for the full tree); click any plugin to expand its details; the toolbar switches to the "Dependency graph" and runs "Check updates".
None. This is a pure UI projection plus user-triggered actions — everything is built in, no cordis.patch.yml config block needed (the bundle install just inserts a mount row).
ctx.loader.entries() and per-package package.json (tree building), profile manifest (provenance)cordis.patch.yml on toggle (only the target {id, disabled} row; comments and other content preserved)pnpm outdated / pnpm add (talks to the configured npm registry, respects .npmrc mirrors)@dsh-external/dsh-client-ui-plugin-tree from the profile package.json (dependency + dsh.profile.bundles row; for method A/B use dsh plugin --profile web remove <spec>)dsh webdsh web; client-side (UI) changes apply on refresh (per-request rev), no restartdsh web and refresh.pnpm add only touches disk; the running loader keeps the old modules until dsh web restarts.include: presets) with independent states; the tree keys them by entry id, the graph merges them into one node per package../remote export (no matching artifact), shipped the lib/invariant.js invariant companion (NOT auto-mounted from the bundle: an entry waiting for the invariants service aborts web boot — compositions mount it explicitly); Fiber states now map through a named-constant runtime mirror (cross-package const enums are unreachable under verbatimModuleSyntax, same stance as the official packages); pnpm command timeouts are passed explicitly by callers; install docs recommend pinning the commitdeps/dependents carry entryId; same-named chips each show their own status and jump to their own row; depth compression after whole-layer static filtering; RPC schema syncentry.update, hot and persistent)MIT License (see LICENSE). To report a security issue, describe it privately in a GitHub issue (no credentials or sensitive log excerpts), or open a fix PR directly.
MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。