dsh-matrix-rain
awa-123-cw
DeepSeek Harness WebUI 动效美化插件:聊天背景黑客帝国代码雨,雨字内容 = 当前会话 AI 思考链(流式实时),设置页调色盘 + 全套 DIY
PROJECT TOPICS
PROJECT README
DeepSeek Harness 的可视化 Cordis 插件树编排器
DSH Visual Composer 是一个运行在 DeepSeek Harness Web 界面中的社区插件。它把当前 Profile 的 Cordis 插件树转换成可视化画布,让你查看插件、添加插件或 Group、拖拽 Composer 管理的节点、编辑配置覆盖,并在保存前审阅脱敏后的 YAML Diff。
[!IMPORTANT] 本项目是独立社区原型,不是 DeepSeek AI 官方插件。DeepSeek Harness 目前仍处于 Developer Preview,插件接口可能在后续 RC 版本中变化。

DeepSeek Harness 采用“万物皆插件”的 Cordis 架构,但 Profile 的最终结构通常由 Bundle、cordis.patch.yml、Group 嵌套和运行时状态共同决定。只阅读 YAML 很难快速回答以下问题:
Visual Composer 将这些信息集中到 DSH Web 的插件设置页中,同时严格遵循 Cordis Patch 的真实语义,不把插件树伪装成任意连线的工作流引擎。
disabled 和完整 config 覆盖。cordis.patch.yml 中有明确标记的区域,保留其他文本与注释。!!js 表达式及敏感配置进行脱敏和编辑保护。| 项目 | 当前验证版本 |
|---|---|
| DeepSeek Harness | 0.1.0-rc.6 |
| Node.js | ^22.19.0 或 >=24.0.0 |
| UI | DSH Web Profile |
| 操作系统 | 已在 macOS 验证;实现使用跨平台 Node.js API |
使用前请确保:
dsh 命令可以正常执行;web Profile;http://127.0.0.1:4632;从本仓库的 Releases 页面下载:
dsh-plugin-visual-composer-0.1.0.tgz
然后安装到 Web Profile:
dsh plugin --profile web add ./dsh-plugin-visual-composer-0.1.0.tgz
启动 DSH Web:
dsh --profile web
预构建 tarball 已包含 Host 和 Client 产物,安装时不需要在本机执行本项目的构建脚本。
git clone https://github.com/VanillaCreamer/dsh-plugin-visual-composer.git
cd dsh-plugin-visual-composer
npm ci
npm run pack
构建成功后,当前目录会生成:
dsh-plugin-visual-composer-0.1.0.tgz
安装并启动:
dsh plugin --profile web add ./dsh-plugin-visual-composer-0.1.0.tgz
dsh --profile web
如果使用的是 DeepSeek Harness 源码 checkout,请在相应工作目录中将 dsh 替换为 pnpm dsh:
pnpm dsh plugin --profile web add /绝对路径/dsh-plugin-visual-composer-0.1.0.tgz
pnpm dsh --profile web
dsh plugin --profile web remove dsh-plugin-visual-composer
卸载插件不会主动删除其历史备份,也不会移除已经写入 cordis.patch.yml 的 Composer 管理块。建议卸载前先在界面中清除不再需要的草稿和覆盖。
建议第一次使用时先添加一个空 Group,以熟悉预览、保存和回滚流程。
左侧区域用于创建草稿节点:
@scope/plugin、./local-plugin.mjs;cordis:group 草稿;Visual Composer 不负责下载或安装第三方代码。模块必须先安装到当前 Profile,否则预览会被服务端拒绝。
安装插件包示例:
dsh plugin --profile web add <包名或本地路径>
安装完成后重新打开或刷新 Visual Composer,再添加对应模块 Entry。
中间画布显示当前运行时插件树:
pending、loading、active、failed、unloading 或 inactive。拖拽行为:
选中节点后,右侧 Inspector 可以:
config;如果配置包含密钥、Token、认证字段、!!js 表达式或其他被判定为敏感的值,该配置不会发送到浏览器,也不能在 Inspector 中替换。
点击 预览变更 后,右侧会显示:
预览不会返回完整 cordis.patch.yml,也不会向浏览器暴露管理块之外的用户配置。
Cordis Patch 可以按 ID 覆盖、禁用或插入 Entry,但不能任意移动 Bundle 已经定义的 Entry。Visual Composer 因此只允许拖动自身管理的 Insert 节点,不会制造无法落盘的“伪排序”。
config 是完整替换,不是深度合并例如运行时配置为:
{
"timeout": 30000,
"retry": 3
}
如果在 Inspector 中保存:
{
"timeout": 10000
}
最终覆盖不会自动保留 retry。请在提交前确认完整配置。
Visual Composer 将新节点转换为 Patch insert:
- id: tools
insert:
- id: my-tool
name: my-tool-package
config: {}
根级节点则生成没有父 ID 的 insert Patch。
插件只管理以下标记之间的内容:
# >>> dsh-visual-composer managed block
- id: some-plugin
name: package-name
disabled: true
# <<< dsh-visual-composer managed block
标记之外的用户文本、注释、未知字段和 !!js 表达式保持原样。标记只会在 YAML 顶层整行出现时被识别;多行字符串中的同名文本不会被误判为管理块。
一次正式保存会经历:
cordis.patch.yml;备份默认保存在当前 Profile 下:
$DSH_HOME/profiles/<profile>/.dsh-visual-composer/backups/
插件保留最近的轮换备份。点击 回滚最近备份 时:
Visual Composer 可以修改运行中的插件树,因此它被设计为一个仅限本机的高权限配置界面。
API 同时要求:
localhost、127.0.0.0/8 或 [::1];即使 DSH Web 配置了 LAN trustedHosts,远程设备也不能访问 Visual Composer API。
cordis.patch.yml;realpath containment 检查;以下内容不会直接下发到浏览器:
!!js 表达式;敏感值检测属于纵深防御,不应替代正确的密钥管理。仍建议通过环境变量或 DSH 支持的安全机制注入凭据,不要把明文秘密写入普通配置。
以下 Entry 默认不能通过 Visual Composer 禁用:
visual-composer;webserver、web-runtime、modules、connection;client-runtime、client-hmr;ui-layout、ui-sidebar、ui-settings;api-gateway、api-remotes、timer、hmr、include。这是为了避免用户从界面中卸载 Web Shell、配置 Loader 或 Visual Composer 自身。
Host 插件配置还支持额外的 protectedIds:
- id: visual-composer
name: dsh-plugin-visual-composer
config:
protectedIds:
- my-critical-plugin
DSH Web Browser
└─ lib/client.js
├─ settings.plugins.tab
├─ Cordis Tree / Palette / Inspector
└─ Preview / Apply / Rollback
│ local-only HTTP API
▼
DSH Host
└─ lib/index.js
├─ Loader tree projection
├─ Draft validation
├─ Secret redaction
├─ Patch composition
├─ Atomic persistence
├─ Backup rotation
└─ HMR transaction confirmation
│
▼
$DSH_HOME/profiles/<profile>/cordis.patch.yml
包中包含两个构建入口:
lib/index.js:Host API、Loader 投影、校验、持久化、备份与 HMR 确认;lib/client.js:注册到 settings.plugins.tab 的 React Client 插件。项目结构:
.
├── src/
│ ├── index.ts # Host 插件与本机 API
│ ├── patch.ts # 管理块、校验、序列化与 Diff
│ ├── types.ts # Host/Client 共享类型
│ └── client/
│ └── index.tsx # Web UI
├── test/
│ └── patch.test.ts # Patch 与安全边界测试
├── cordis.patch.yml # 安装时注入 Visual Composer
├── esbuild.mjs # Host/Client 双入口构建
├── package.json
└── README.md
安装依赖:
npm ci
常用命令:
npm run check # TypeScript 严格类型检查
npm test # Vitest 单元测试
npm run build # 构建 Host、Client 和类型声明
npm run pack:check # 完整检查并执行 npm pack --dry-run
npm run pack # 完整检查并生成 tarball
本地完整验证:
npm run check
npm test
npm run build
npm run pack:check
安装刚构建的版本:
dsh plugin --profile web remove dsh-plugin-visual-composer
dsh plugin --profile web add ./dsh-plugin-visual-composer-0.1.0.tgz
dsh --profile web
建议使用专门的测试 Profile,不要直接对重要工作 Profile 进行开发调试。
依次检查:
dsh plugin --profile web why dsh-plugin-visual-composer
dsh --profile web --dump-config
确认:
dsh.profile.bundles 中包含本插件;Visual Composer 只编排已存在的代码。先安装目标插件:
dsh plugin --profile web add <目标插件包>
然后刷新 Composer。
查看页面顶部是否提示 HMR 不可用。如果 HMR 被禁用,需要重启:
dsh --profile web
磁盘上的 cordis.patch.yml 在页面加载后发生了变化。请刷新 Composer,重新检查草稿和 Diff,再保存。
该节点的配置包含被脱敏的字段或表达式。Visual Composer 会将真实值保留在 Host 内,但不会允许浏览器替换整段配置。请直接使用本地编辑器修改对应配置。
这是 Cordis Patch 的语义限制,不是前端缺陷。已有 Bundle Entry 只能覆盖或禁用,不能通过 Patch 任意移动。只有 Composer 管理的绿色 Insert 节点可以拖动。
只有成功进入正式保存流程后才会产生备份。尚未保存过时没有可回滚内容。
0.1.0-rc.6;后续 RC 可能需要适配。config 使用完整替换语义,不提供深度合并。可能的后续方向:
依赖图应由运行时 Service 信息自动推导,而不是允许用户随意连线;插件依赖与工作流边不是同一个概念。
欢迎通过 GitHub Issues 提交:
提交代码前请运行:
npm run check
npm test
npm run build
npm run pack:check
报告问题时建议附上:
请勿在公开 Issue 中提交 API Key、Token、Cookie、完整私有配置或未经脱敏的 cordis.patch.yml。
本项目基于 MIT License 发布。
DeepSeek、DeepSeek Harness 及相关标识属于其各自权利人。本项目与 DeepSeek AI 没有官方隶属、授权或背书关系。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。