deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
dsh-plugin-console 是一个可安装到 DeepSeek Harness Web profile 的插件管理器:它把社区目录、当前 profile 的包清单和 Loader 运行态放在 Settings 的一级“插件管理”页面里,并通过官方 dsh plugin 命令完成安装、更新和删除。
dsh.bundle.patch 和生命周期脚本;GitHub 包固定到 40 位 commit,并确认 package.json 与声明的 patch 文件存在。dsh.profile.bundles 中的对应层,确保下次启动不再加载已删除插件;删除包不会擅自删除包创建的数据。disabled 状态;可随时恢复,管理器自身不会允许自暂停。DSH_HOME、随机本地端口和隔离 HOME/TMP 中启动完整 Web profile;已安装的其他第三方 bundle 也会一起启动,因此插件间、插件与 DSH/Cordis 的初始化冲突会在新版本写入前被发现。目标 bundle 的 Loader 条目、精确包版本、客户端 bundle 的语法/执行/唯一包名注册/模块依赖和 HTTP 资源全部通过后才保留新版,否则自动恢复旧版本。浏览器内 UI 交互仍由用户在重启刷新后人工确认。node_modules;供应链策略在命令开始前拒绝时不会破坏现有依赖。latest/next 全部通道取最高版本,如 rc 系列中 latest 落后于 next 时会直接显示 next 的更新),并可强制「重新检查」绕过缓存、一键更新 DeepSeek Harness 本体。更新只支持 npm 全局安装(自动解析运行中 dsh 可执行文件所属的 npm prefix);执行时先精确校验新旧版本,再用新 Harness 在隔离副本中启动完整 profile——所有已安装插件的 Loader 条目、激活状态、client bundle 图与 HTTP 表面全部通过才接受,任何插件初始化失败都会自动重装旧版 Harness 并再次隔离验证;更新成功后运行中的 Host 保持旧版本,重启 DSH 后生效。在 DSH 安装所在环境运行:
# npm 发布版
dsh plugin --profile web add dsh-plugin-console
# 本地源码检出目录
dsh plugin --profile web add .
验证 bundle 层:
dsh --profile web --dump-config
安装或更新插件后需要重启 dsh web,因为 Web client module roster 在进程启动时扫描 profile 包。
bundle 默认配置位于 cordis.patch.yml。可在 profile 的 cordis.patch.yml 中覆盖完整行配置,注意 DSH patch 对 config 是整段替换:
- id: plugin-console
config:
catalogUrl: https://awesome-dsh-plugin.com/plugins.json
cacheMaxAgeMs: 172800000
requestTimeoutMs: 15000
maxCatalogBytes: 5000000
maxReadmeBytes: 262144
operationTimeoutMs: 300000
canaryTimeoutMs: 60000
dshBin: dsh
npmBin: npm
也支持环境变量:
DSH_PLUGIN_CONSOLE_CATALOG_URLDSH_PLUGIN_CONSOLE_DSH_BINDSH_PLUGIN_CONSOLE_NPM_BIN目录缓存写入 $DSH_HOME/cache/plugin-console/catalog.json。上游不可用时保留最后一次有效目录,不会用空响应覆盖缓存。catalogUrl 必须是绝对 HTTPS URL。dshBin / DSH_PLUGIN_CONSOLE_DSH_BIN 与 npmBin / DSH_PLUGIN_CONSOLE_NPM_BIN 是管理员级配置,会被作为本机可执行文件启动,不应接受不可信输入。
Harness 更新版本来自 @deepseek-ai/dsh 的全部 npm dist-tag(latest/next 等),面板显示版本所在的通道,并总是取各通道中的最高合法 SemVer;「重新检查」会绕过 5 分钟缓存强制重新拉取 dist-tags。
DSH 插件是 Host 进程中的受信任代码,不是隔离的浏览器扩展。这个管理器遵循以下边界:
install 字符串。install、update、remove、pause、resume,没有任意 pnpm argv 或 shell 接口。shell: false 调用 dsh plugin。--ignore-scripts;需要构建脚本的包不会被静默放行。baseUrl 推导并限制在 $DSH_HOME/profiles 下。<prefix>/lib/node_modules 或 Windows <prefix>/node_modules 布局,且 prefix 的 bin 面存在);其他安装方式只展示状态,不提供更新按钮。更新目标固定为 @deepseek-ai/dsh 的精确 npm 版本,命令参数数组固定、shell: false。--dump-config 快照完整组合(含 !!js 表达式的本地求值),写入后校验精确版本与 CLI 输出,再以新二进制运行全 profile 隔离 canary;失败自动重装旧版并再次验证。更新的是 Harness 本体,属于执行新一版受信任代码,确认页明确警告。“已验证”只表示 manifest 和 artifact 结构符合 DSH 安装约定,不表示作者或代码经过安全背书。
要求 Node.js 22.19+ 或 24+、pnpm 10+。Host/Client peer contract 固定到已验证的 DSH 0.1.0-rc.6:
pnpm install
pnpm run typecheck
pnpm run test
pnpm run build
如果本机 pnpm 因 approve-builds 阻止开发依赖的安装脚本,可以直接运行已安装的工具:
node node_modules/typescript/bin/tsc --noEmit
node node_modules/vitest/vitest.mjs run
node node_modules/tsdown/dist/run.mjs -c tsdown.config.ts
包结构:
src/catalog.ts 社区 feed、缓存、npm/GitHub 验证
src/profile.ts profile manifest、包清单、Loader 运行态
src/operations.ts plan、串行 dsh CLI 变更、失败恢复
src/harness.ts DSH 安装解析(npm global prefix)与更新状态
src/harness-operations.ts Harness 更新 plan/execute、版本校验、回滚
src/canary.ts 插件隔离 canary + 全 profile Harness canary
src/index.ts Host API /api/plugin-console
src/client/index.ts Web Settings slot + 侧边栏入口注册
src/client/PluginManageSettingsTab.tsx 商店、已安装、详情和确认 UI
src/client/HarnessUpdateAction.tsx 侧边栏 DSH 更新入口与确认面板
src/client/*.module.css 主题变量和响应式布局
tests/ 目录、profile、事务、canary、Harness 更新与构建契约测试
贡献、安全与发布说明:
这个包遵循 DSH 官方的 Cordis 方式:插件通过 apply(ctx) 注册能力,依赖通过 inject 声明,外部资源通过 ctx.effect() 回收;持久化 profile 由 dsh plugin / pnpm 负责,Loader 只负责当前进程生命周期。
官方参考:
本项目的主体业务实现为独立编写,但使用或改写了以下 MIT 项目的接口与实现模式:
tsdown.config.ts 的 client envelope 与 CSS-module bundler。构建配置是直接改写,不只是产品灵感。以下项目仅作为产品和交互行为参考,没有直接并入其源码:
完整版权、revision 和 MIT notice 见 THIRD_PARTY_NOTICES.md。
目录同步和 artifact 验证使用结构化 metadata,不把 AI 输出当成安装依据。后续可以增加一个只读的 AI 摘要层,用于从已验证 README 生成“能做什么 / 怎么用 / 注意事项”,但摘要必须标注为模型生成,安装目标、版本和风险仍以 Host 的 manifest 验证为准。
MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: plugin-manager。