deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
Unofficial community plugin. Not affiliated with DeepSeek. 非官方社区插件,与 DeepSeek 官方无关。依靠AI生产的代码。
更好的 DSH —— 一个符合 DeepSeek Harness 插件标准的双半部插件(host + browser),为 dsh Web GUI 补上几件顺手的小工具:归档会话管理、系统级任务通知、版本检查、模型路由、多任务定时调度(心跳/定点)、仿 DeepSeek 官网的消息滚动导航。所有能力都在「设置 → 更好的 DSH」下,随装随用。
中文 · English
本插件已上架 dsh-market,可以在市场插件里发现并下载。
已发布到 npm,终端里一条命令即可装入你的 DSH:
dsh plugin --profile web add dsh-better
安装后重启 DSH 生效,设置页出现「更好的 DSH」入口。
设置 → 更好的 DSH:
model_route 工具让智能体在对话中自主切换(设计移植自 dsh-model-router,按需裁剪);所有配置改动实时生效,无需重启。
标准双半部插件:宿主半部运行在 Node 后端进程内,注册一组仅回环可达的 /api/dsh-better/* exact API 路由;浏览器半部按页加载,向设置页注入界面与交互,经由上述路由与宿主通信。
对 dsh 运行时的依赖全部在运行期解析:dsh-better 经符号链接目录加载,无法静态 import "@deepseek-ai/*",宿主半部以启动入口为锚点解析所需宿主模块(与运行实例同一份构建产物),缺哪一块就单独降级对应功能并给出警告,绝不拖垮后端启动。
三层安全栅栏:只接受回环连接;校验 Host 头(防 DNS 重绑定);POST 强制声明 application/json——跨站"简单请求"无法伪造该头,而这些路由也永不应答 CORS 预检,跨站伪造页面动不了你的存档。
.jsonl 会话日志,并从工作区记录与归档集中一并移除;正在直播的会话拒绝删除(session-live);domain/changed 转发即时收敛——所有打开着的页面无需手动刷新。DSH_BETTER_REPO_ROOT 环境变量显式指定 → 从启动入口(argv[1])与工作目录向上查找最近的 @deepseek-ai/dsh package.json(源码运行与打包安装都能命中)→ node 可执行文件旁的 pnpm 全局 store → 约定路径扫描 <盘符>:\.dsh\deepseek-harness。路径含 node_modules 判为「发行包安装」,apps/cli 布局判为「源码构建」;盘扫与 pnpm 探测是 Windows 特有,unix 上静默跳过;/releases/latest(该端点排除预发布——上游 release 全是预发布时恒 404,属预期)→ /releases 列表取首个非草稿(失败重试 1 次)→ github.com/<repo>/releases.atom 订阅源(与前两者不同主机,api.github.com 整体故障时的独立通路,重试 1 次)。单请求超时 9 秒;成功缓存 5 分钟;24 小时内有过成功值时,全源失败兜底展示旧值并带「缓存数据(可能过期)」徽章——陈旧数据优于白屏报错;0.1.1-rc.2 < 0.1.1、数字预发布标识符按数值比较),比较器单独导出供测试;cmd /d /s /c start 为内层 cmd 分配全新控制台——绕开 detached: true 等价 DETACHED_PROCESS、控制台程序不分配任何控制台的坑;macOS open -a Terminal;Linux 依次尝试 x-terminal-emulator / gnome-terminal / konsole / xfce4-terminal,以 250ms error-race 区分「缺程序」与真实启动,迟发 error 挂 no-op 监听防止拖崩后端。窗口完全独立于后端生命周期,不受其管理或终止,命令由你自己粘贴执行,插件绝不代输。better-model-router(刻意区别于原版插件,二者可以共存);model_route 工具(默认关闭):开启后智能体可在对话中自主切换当前会话模型,但只能切到白名单里逐条精确列出的组合,每次执行仍经实时精确校验;开启但白名单为空时不注册任何工具;聊天流中有对应的路由卡片;一个页面管理任意多条任务(上限 20),每条任务都有独立的名称、开关、类型、时间、提示语与目标,共用一套投递路径。调度器完全运行在 dsh 后端进程里——网页关掉照常触发:
sessionController 的标准恢复路径冷恢复后注入——与你在网页里点开它再发消息完全等价,代价是被唤醒的会话会常驻内存;{time} 占位符(注入时替换为当前时间),留空使用默认巡检提示语;消息以插件来源注入,与官方 schedule 提醒同一套机制;实现上的三个要点:
better-scheduler({ version: 2, tasks: […] },上限 20 条),保存走版本号乐观锁,被其他窗口改动时明确提示冲突;宿主以 scope.watch 订阅变更,保存后逐任务即时重新武装,无需重启。旧的单任务配置(独立的心跳/定点条目)读取时自动迁移为任务列表——已配置的延续原计时状态,从未配置过的安装迁为空表;sessionController.resolveAgent 取回代理(目标不在内存则走标准冷恢复),再以 agent.followup 注入用户消息;主工作区根目标按 cwd 匹配活跃 root 会话(上限 5)逐一投递。网页上的「触发一次」走的就是这条链路,等于对生产投递做端到端演练。官方已有内置替代(v0.4.1 起本功能默认关闭):dsh 0.1.2-alpha.1 起官方自带了「轮次导航」(会话右侧的回合刻度条)。本功能转为可选增强——默认关闭,保持官方原样;开启开关即为全局接管:所有会话中的官方轮次导航一律隐藏,与本功能刻度条当屏是否显示无关(某会话刻度不足两条或消息尚未载入时只是本功能刻度条暂不出现,官方导航依然保持隐藏);关闭开关则全部会话立即还原官方导航。开关实时生效,无需刷新页面。跳转默认与官方轮次导航同一套语义(瞬时定位写入,配合官方的滚动台账,不会被流式输出拽回);设置页另有「平滑滚动跳转」可选开关,打开后恢复旧版的平滑滑动+心跳守卫机制(流式输出期间偶尔需要多滑一两次才能到位)。
user / steering(运行中插话)聊天节点各对应一根刻度,以稳定锚点 key 对齐到渲染出的消息行;ResizeObserver 跟随布局变化;当前浏览位置的判定在每次滚动时同步计算——刻意不用 rAF,后台标签页里 rAF 冻结会让高亮刻度滞留旧位置;nav 元素;插件自己的导航带专属标记,绝不会被误伤;light-dark() 自动跟随浅色/深色;自定义配色保存在浏览器本地(localStorage),改动即时生效。界面上我们有点小骄傲:全程沿用 dsh 原版的设计语言——颜色、圆角、间距、字体一律取自当前主题的语义变量,不引入任何第三方样式。无论你换到哪个主题,它都像原生自带的功能页一样自然融入。
遇到任何问题——安装失败、界面异常、通知不响、路由不生效……或者有任何功能建议——都欢迎到 Issues 提出,多多益善。描述越具体(DSH 版本、操作系统、复现步骤),修复越快。
在官方宿主更新到正式版之前,本插件只适配 DSH 0.1.2-rc.1 这一个版本(含以此自报版本号的 post-rc.1 master 构建)。package.json 的 engines.dsh 已按精确版本钉死,dshmarket 会对其它宿主版本显示不兼容。0.1.3 起的 alpha 实测存在会话历史无法显示等严重问题,升级宿主请等官方正式版。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。