deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:ARFCON/dsh-hub-DSH
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
把 DSH 的插件更新引擎、全局记忆、记忆图谱(graph-memory)、插件市场(dsh-market) 和自身更新检查整合进一个插件,在设置页统一查看与管理。
替代旧插件 dsh-plugin-updates(更新检查器)与 dsh-memory(全局记忆):二者功能全部并入 dsh-hub,记忆数据路径不变、不丢失。
| 模块 | 说明 |
|---|---|
| 🛠 插件更新引擎 | 原 dsh-plugin-updates 全部功能:已装插件版本对比(npm registry / GitHub release/tag)、一键更新、批量全部更新、启用/停用、卸载(含 bundle 与 patch 清理)、Desktop 客户端内置核心包检查、客户端配套插件(assets/plugins)更新、启动自检自动修复(损坏的 package.json / cordis.patch.yml 原子写恢复、插件入口缺失修复)。原生适配 Gitee 版 DSH Desktop(my-yang-yunfan/dsh_desktop):客户端版本对比走 GitHub + Gitee 双源(与官方客户端同款端点与「取最高版本」语义,GitHub 限流时 Gitee 兜底),国内用户可直接打开 Gitee 发布页下载安装包 |
| 🧠 全局记忆 | 原 dsh-memory 的 5 个 memory_* 工具(save / search / list / get / delete),所有会话共享,JSONL 存储(~/.dsh/memory/memories.jsonl),卸载旧 dsh-memory 后历史记忆原样保留 |
| 🕸 graph-memory 挂载 | 检测到 plugin-src/graph-memory 源码即自动装配(写入 profile bundles + link + node_modules junction,幂等);设置页展示安装状态与记忆库统计(节点 / 边 / 社区,直接只读 SQLite,不依赖 graph-memory 本体) |
| 🛒 dsh-market 联动 | 检测插件市场(dshmarket)是否安装:已装 → 设置页状态展示,引导到「设置 → 插件市场」;未装 → 提醒并给出安装命令 |
| 🧩 zat-dsh-engine 联动 | 检测 zat-dsh-engine(插件市场引擎,mishibeikejie/zat-dsh-engine)是否安装:已装 → 设置页状态展示,未装 → 提醒并给出安装命令 |
| 🔄 自身更新检查 | 从 GitHub 仓库 ARFCON/dsh-hub-DSH 读取 package.json 版本号对比本地(raw.githubusercontent + jsDelivr CDN 双源,规避 GitHub API 限流 403) |
设计原则:只挂载、不修改。dsh-hub 不改动 graph-memory 与 dsh-market 本体,只做检测、装配、状态展示与入口联动。
依赖:Node.js ≥ 20、pnpm、dsh CLI。
# 在解压后的插件目录里执行
.\install.ps1
# 或指定 profile
.\install.ps1 -Profile web
./install.sh
# 或指定 profile
./install.sh web
# 把插件放到源码目录
mkdir -p ~/.dsh/plugin-src
cp -R dsh-hub ~/.dsh/plugin-src/
# 安装依赖
cd ~/.dsh/plugin-src/dsh-hub && pnpm install
# 挂载到 profile
dsh plugin --profile web add "link:$HOME/.dsh/plugin-src/dsh-hub"
安装完成后重启 DSH 服务(DSH Desktop 重启,或重启 dsh web)。
打开 设置 → 插件 → 插件中枢,总览各模块状态:
~/.dsh/memory/memories.jsonl(支持 $DSH_HOME 覆盖),升级不丢数据。~/.dsh/graph-memory/graph-memory.db,dsh-hub 只读统计,不写入。lib/
index.js 宿主端:更新引擎 + 记忆工具注册 + dshHub Remote 网关(10 个 Remote 方法)+ 客户端双源版本查询(queryClientRelease)
client.js 客户端:设置页「插件中枢」Tab(中枢卡片 + 插件更新列表)
typert.js Typert Remote 定义(与 index.js 的 Remote 方法同步)
memory-core.js 记忆核心(JSONL 读写、搜索评分、mtime 缓存)
维护铁律:
lib/index.js 的 methods 列表、lib/typert.js 的 invocations、lib/client.js 的 REMOTE.descriptors;lib/typert.js 不可删除(否则 RPC 404);package.json / cordis.patch.yml 一律经 writeTextSafe() 原子写入(.tmp + .bak + rename),不落半截文件;validName / isValidName 白名单;curl 一律 shell:false + -f + --ssl-no-revoke(Windows);reconcileBundles 只处理 dependencies 里读得到 package.json 的名字(不变量 #10,勿恢复 repairBundlesOrphans 逻辑);mishibeikejie/zat-dsh-engine)状态检测,在「插件中枢」设置页显示安装状态、版本号与安装提示;未安装时提醒并给出安装命令与仓库链接,已安装时引导用户到插件市场mishibeikejie/zat-dsh-engine 的 GitHub 仓库映射,避免客户端插件更新时因本地副本缺少 repository 字段而无法识别来源ARFCON/dsh-hub-DSH 后的配套同步收尾:publish.ps1 默认 RepoName 改为 dsh-hub-DSH(避免 PowerShell 5.1 跟随旧名 301 重定向丢 Authorization 头导致全部上传 401);PUBLISH.md 新增「上传全部 401」排查条目minimumReleaseAge 供应链策略会静默抑制 @latest 对新发布包的解析(输出 "Already up to date" 版本停留);改为先查 npm 最新版本、再用显式版本 pnpm add name@version(dshmarket 1.8.0→1.11.0 实测更新成功),并增加「版本未变化即失败」断言tags/2.0.0 必 404;下载端自动尝试 原 tag / v+tag / 去 v(实测下载成功)ARFCON/dsh-hub-DSH(原 DSH_Automatic-update-plugin),自更新源、发布脚本默认仓库、README/PUBLISH 链接全部同步my-yang-yunfan/dsh_desktop):客户端最新版本检查走 GitHub + Gitee 双源(与官方客户端 client-updater 同款端点与「取最高版本」语义,GitHub API 限流 403 时 Gitee 兜底),客户端区块显示最新版本与来源,一键打开 Gitee / GitHub 发布页CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。