Editor's note

memorax-ai/dsh-harmony

A library for patching, replacing and decorating dsh plugin during runtime

This is a DeepSeek Harness (DSH) plugin. Review its GitHub README, installation information, maintenance status, and public security signals here.

Harmony

dsh-harmony

DeepSeek Harness 插件的运行时 Patch 协调层。
一个用于在运行时修补、替换和装饰 DeepSeek Harness 插件的库。

开始使用 · 文档 · 报告问题

许可证:MIT Node.js npm 版本 GitHub Stars Awesome DSH Plugin

简体中文 / English

简介

当一个 DeepSeek Harness 插件需要修改另一个插件、又不值得为此维护 Fork 时,可以使用 Harmony。它会在目标插件运行前加载 Patch,在内存中修改编译产物,再让 Harness 运行修改后的代码。

Source Patch 使用 TSQuery 查找 TypeScript AST 节点,再用 MagicString 改写对应的源码区间。Patch 逐个执行,后一个会读取前一个留下的结果,因此多个插件可以修改同一目标。安装目录里的文件不会改变。

Provider 可以声明自己的 Patch 应排在另一个 Provider 之前或之后;单个 Patch 也可以改用自己的规则。用户还能把不同 Provider 的 Patch 交错排列。若几处修改必须一起成功,可以把它们放进组合 Patch:它们共用一个位置和开关,任何成员失败时都不应用。

对于浏览器插件,Harmony 还会按 Patch 顺序整理 Provider 所属的 <style data-plugin> 标签。每个 Provider 只有一组样式,它在 CSS 层叠中的位置由最后一个启用的 Patch 决定。Patch 重载后,Harmony 会再整理一次。

Harmony 为 DeepSeek Harness 插件之间的协作补上了修改能力。

为什么使用 Harmony

目标已经暴露所需能力时,普通 DSH 扩展点仍然是首选。Harmony 解决的是公开 API 与维护 Fork 之间的空白:修改目标没有暴露的内部组件、Loader 条目或编译后行为。

不使用 Harmony使用 Harmony
隐藏或复制内部 UI,并长期同步两套实现在原位置替换选中的组件或编译后调用点
修改 node_modules、维护 Fork,或升级后重新应用改动只在内存中变换源码;已安装文件逐字节保持不变
选择器漂移后由 UI 静默失效暴露问题钉死目标版本和 expect;失配会在 status 中明确失败
把最终 Bundle 当作黑盒检查原始源码、每一步 Patch 和最终变换结果
手动清理定制改动禁用或移除 Provider 即恢复原始行为

Harmony 不会把编译内部变成稳定的公开 API;它让这项依赖变得明确、有序、可检查且可逆。

Respect

灵感来源于 Andreas Pardeike 和其它开发者创作的同名 C# 项目 Harmony

AI Agent:使用仓库内置 Skill

安装、选择和编写 Patch、执行运行时操作或排查问题前,请加载 use-dsh-harmony

安装

需要 Node.js ^22.22.3>=24.11.1,以及 @deepseek-ai/dsh@0.1.0-rc.7

npm install -g @deepseek-ai/dsh@0.1.0-rc.7
npm install -g dsh-harmony
dsh web

启动 WebUI 后打开 设置 → Harmony。Profile、Desktop 集成、更新和卸载说明参见安装指南

Patch 模型

Harmony 按一份全局 patchOrder 运行所有 Patch。Provider 级 before / after 负责通常的先后关系;单个 Patch 只要声明其中一项,就改用自己的规则。在 设置 → Harmony 中,用户可以移动整个 Provider,也可以把一个 Patch 插到另一个 Provider 的两个 Patch 之间。保存时,Harmony 会检查列表是否恰好包含每个已注册 Patch 一次。

组合 Patch 让多个 Patch 共用一个排序位置和开关。成员按声明顺序执行,而且只有全部成功才会应用。独立 Patch 失败时,Harmony 会报告并跳过它;后续 Patch 和 Host 仍会运行。

React-aware Patch

修改编译后的 React 目标时,在 Patch Provider 中安装 dsh-harmony-react

npm install dsh-harmony-react

element() 修改选中的 jsx / jsxs 调用点,component() 修改这些调用共享的组件定义。它们和其它 Source Patch 使用同一份顺序。

API作用范围
element()一个或多个调用点:替换、包裹、插入、变换 Props 或移除
component()所有通过已初始化变量或具名函数声明进行的调用:装饰或替换

为了让后续 Component Patch 继续修改同一定义,Harmony 会把函数声明改写为已初始化的 const。新绑定不再提升;如果文件在声明前读取组件,请改用核心 Source Patch。React 集成还介绍了选择器、Inspect trace 和 Studio。

文档

主题指南
运行时架构Harmony 是什么?
安装与 profile安装
编写源码、语义、加载器与组合 PatchPatch 编写指南
Provider/Patch 排序、状态、检查和重载运行操作
使用 dsh-harmony-react 编写 React PatchReact 集成
Studio 预览Studio 集成
命令、限制与故障CLI · 限制 · 故障排查

开发

所有维护中的实现源码均使用 TypeScript。用于发布的编译产物由构建生成,不纳入 Git 跟踪。

文档源码与本地预览工具位于 docs 分支。

npm test

许可证

MIT

REPOSITORY SIGNALS

Security & install evidence

This score is based solely on public repository metadata and the install evidence registered here — it is not a code security audit.

Traceable source

From a public plugin catalog, linked to a public GitHub repository.

License

The repository declares the MIT license.

Maintenance activity

Code updates within the last 180 days.

Install evidence

No verifiable install metadata registered yet — please review the repository instructions manually.

Install lifecycle scripts

Detected postinstall, prepare — review the scripts before installing.

Things to notelifecycle-scripts