dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
Composer compact control for the DeepSeek Harness web UI: a button beside the model selector that runs the deployment's own /compact command.
English | 中文
AI 生成代码。 本包由 AI 智能体(DeepSeek Harness,模型
deepseek-flash)在人类主导的会话中编写,并由运行它的人发布。安装前请先审阅代码,尤其在你允许它的prepare脚本于自己机器上执行之前。哪些验证过、哪些没有,见 AI 生成声明。
DeepSeek Harness Web 输入框的压缩控件:一个按钮,就坐在模型选择器左边,点一下执行当前部署自己的 /compact 命令。
点它就压缩当前会话。按钮通过 Session 的命令通道提交裸 /compact 行,也就是说:持久化的尝试记录、压缩锁、摘要路由,以及 Chat 视图本来就渲染的那个流程节点,全都保持 /compact 自己那套。这个插件只贡献手势和它的本地化拒绝提示 —— 绝不另开一条压缩路径。
压缩中…,直到压缩那个回合结束才回到普通标签。这段窗口是一个三步闩锁:手势置位 → 观察到回合启动 → 回合结束释放。只看运行状态是不够的 —— 在智能体本来就在运行时被准入的压缩,控件永远看不到「回合启动」这一步,这正是曾经导致压缩结束后标签卡在「压缩中」的情形。/compact 命令的部署会被明确报为「能力缺失」,而不是看起来成功了。dsh plugin --profile web add dsh-plugin-compact-button
如果你用的 profile 不叫 web,换成你自己的名字。这个包声明了 dsh.bundle,所以 dsh plugin 会自动把它的 patch 层注册进 profile。重启 dsh web 并刷新页面;构建载荷是在启动时组合的,所以第一次光刷新不够。
dsh plugin --profile web add github:liutian11451-png/dsh-plugin-compact-button
Git 安装拉的是源码而不是构建产物,所以这个包带了一个 prepare 脚本,用普通 tsdown 从 src/ 构建 lib/ —— 不需要同级仓库,也不做类型检查。pnpm ≥10 会拒绝执行 Git 依赖的 prepare,直到你显式允许,所以第一次 add 会以 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 失败,并打印出该加的确切 key。Git 安装的 key 指向解析出来的 tarball,而不是光秃秃的包名:
allowBuilds:
dsh-plugin-compact-button@https://codeload.github.com/liutian11451-png/dsh-plugin-compact-button/tar.gz/<commit-sha>: true
把 pnpm 打印出的那一行原样抄进去(它带着本次安装解析到的提交号),然后重新 add。注意:这条允许等于「准许在安装时于你机器上执行这个包的代码」,要把它当成这个意思看待。请固定到具体提交(github:liutian11451-png/dsh-plugin-compact-button#<sha>),免得以后一次 push 就悄悄换掉实际运行的代码。
一个换装时的坑:如果这个插件之前是从本地目录装的,请先移除。profile 的 node_modules 里残留的链接会和随后进来的 Git 安装冲突,pnpm 会在导入阶段以 EPERM 软链错误失败。
如果不想让使用者做这个允许,就发 npm,或者用 pnpm pack 出 tarball —— 这两种都不需要任何构建权限。
dsh plugin --profile web add /absolute/path/to/dsh-plugin-compact-button
部署必须挂载压缩能力 —— dsh-command-compact 加一个压缩后端。两者都在标准 preset 里。没有该命令时按钮仍会渲染,点击会返回明确的「能力不可用」原因;客户端事先无法知道宿主的命令目录。
package.json # dsh.bundle + dsh.client 清单
cordis.patch.yml # 插入本包的加载器行
src/index.ts # 根半(空实现)
src/client/index.ts # 浏览器半:注册座位
src/client/CompactButton.tsx # 控件本体
src/client/locales.ts # 中英字典
src/client/CompactButton.module.css # 芯片外观与拒绝提示条
tsdown.config.ts # 消费侧构建
smoke.mjs # 加载器契约冒烟测试
根半是刻意留空的。harness 的客户端模块注册表是遍历宿主 Loader 的行来发现 dsh.client 包的,所以这个包需要一行已挂载的行作为载体 —— 那行的全部作用就是这个。
pnpm install
pnpm build # 产出 lib/index.js 和 lib/client.js
pnpm typecheck
node smoke.mjs # 用桩 shell 求值构建出的浏览器半
smoke.mjs 检查两条容易写坏、且要到启动才暴露的契约:产物必须接受 window.__ModuleLoader__.load({ id, factory }) 交接并返回 module.exports;apply() 必须注册恰好一个 conversation.input.right 条目,其注入的动词提交 /compact 并把三种准入结果都折叠成文案。
浏览器包不是普通的 ESM 构建。shell 会抓取 lib/client.js 并求值它,所以这个文件必须是 CommonJS 闭包工厂 —— 这就是 tsdown.config.ts 里 banner、intro、footer 的由来。ESM 或没有这层包装的产物会在启动时抛错。
shell 模块表能回答的标识符(react、react/jsx-runtime、cordis、共享的 UI primitives 与 store)保持 require(...) 调用;其余全部内联。模块表回答不了的 require 是必然的运行时抛错,所以构建配置里的 external 列表是显式写死的,而不是从包的依赖里推导。
dsh-command-compact 的部署会渲染按钮,点击后给出「能力不可用」的原因。压缩中… 覆盖的是「从手势到压缩回合结束」这段窗口。由自动策略发起的压缩、或任何别的回合,都不会改这个标签;控件在该回合运行期间只是变灰。compactNow 的要求一致;它不是回合中途强制压缩的手段。platform: web;没有终端界面上的等价物。本包由 AI 智能体编写,不是人类逐字敲出来的。它由 DeepSeek Harness 驱动 deepseek-flash 模型,在其人类发布者(@liutian11451-png)主导的会话中于 2026-09-12 产出。人类负责选择功能、确认方案、运行程序并反馈实际表现;本仓库中的源码、测试、构建配置与文档由智能体编写。同一份声明也以机器可读形式记录在 package.json 的 aiDisclosure 字段里。
请据此对待这份代码:安装前先读一遍;Git 安装向你索要的 allowBuilds 许可,请当成「准许在你自己机器上运行未经人工审阅的生成代码」来对待。
pnpm test —— 8 项组件测试全绿,其中包含针对一个实际使用中发现的「忙碌标签闩锁」缺陷的回归测试pnpm typecheck —— 干净node smoke.mjs —— 针对构建产物的 21 项加载器契约断言:闭包工厂交接、导出的 apply/inject 面、注册的座位与顺序,以及三种准入结果的折叠dsh plugin add github:…)完整走过一遍,包括消费者侧的 prepare 构建/compact 的部署上实测按钮 —— 只有测试里桩化的 matched: false 路径。MIT