DeepSeek Harness Hub
← 返回列表

会话压缩按钮liutian11451-png/dsh-plugin-compact-button

DeepSeek 客户端兼容 / 相关生态spec-screened在 GitHub 查看 ↗
未验证

在模型选择器旁一键压缩当前会话上下文

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/12 · 已提供中文文档

DeepSeek Harness Web UI 的 Composer 紧凑控制:模型选择器旁边的一个按钮,用于运行部署自有的 /compact 命令。

综合分
29.5
GitHub 分
29.5
用户评分
★ Stars
0
周下载量
兼容 / 相关生态插件(非 dsh 原生,请按其对应运行时安装)
git clone https://github.com/liutian11451-png/dsh-plugin-compact-button.git
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-plugin-compact-button

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 并刷新页面;构建载荷是在启动时组合的,所以第一次光刷新不够。

从 GitHub 检出安装

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/: true

把 pnpm 打印出的那一行原样抄进去(它带着本次安装解析到的提交号),然后重新 add。注意:这条允许等于「准许在安装时于你机器上执行这个包的代码」,要把它当成这个意思看待。请固定到具体提交(github:liutian11451-png/dsh-plugin-compact-button#),免得以后一次 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 的部署会渲染按钮,点击后给出「能力不可用」的原因。
- 准入不等于完成 —— 命令 RPC 在宿主准入该行时就返回,所以 压缩中… 覆盖的是「从手势到压缩回合结束」这段窗口。由自动策略发起的压缩、或任何别的回合,都不会改这个标签;控件在该回合运行期间只是变灰。
- 忙碌标签是有界的,不是精确的 —— 被准入、却始终没有可观察回合的尝试,会在 8 秒宽限期后释放,因为客户端拿不到可以等待的压缩生命周期。若压缩比这更晚才开始,控件会提前显示为空闲。
- 不能选区 —— 控件总是提交无参数形式,压的是后端自己认定的范围,永远不是手挑的片段。
- 仅空闲智能体 —— 智能体运行时变灰不可点,与 compactNow 的要求一致;它不是回合中途强制压缩的手段。
- 仅 Web profile —— 声明了 platform: web;没有终端界面上的等价物。

AI 生成声明

本包由 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 面、注册的座位与顺序,以及三种准入结果的折叠
- 本仓库的 GitHub Actions 工作流在每次 push 时跑上述四步,且已通过
- 插件已装进一个真实运行的 web profile 并在其中使用;上面描述的行为是实际观察到的
- GitHub 安装(dsh plugin add github:…)完整走过一遍,包括消费者侧的 prepare 构建

未验证的部分

- 没有人工逐行审阅。 发布者在运行中的应用里验证了行为,没有验证源码。
- 没有安全审计。 除测试覆盖和上述行为描述之外,没有对恶意或疏忽行为做过检查。
- 只有一台机器、一个平台。 开发、测试与实机使用都发生在 Windows + Node 24 + pnpm 11 上。CI 工作流跑在 Linux 上,所以构建在两个平台上被检验过,但界面只在一个平台上被看过。
- 没有干净机器的安装测试。 发布机器的 profile 里本来就有该插件的安装;在一个从未装过它的 profile 上安装没有被检验。
- 没有在缺少 /compact 的部署上实测按钮 —— 只有测试里桩化的 matched: false 路径。

许可证

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

同作者(liutian11451-png)的其他插件

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群