返回目录
其他 待识别

dsh-plugins

An0range/dsh-plugins

个人维护的 DeepSeek Harness(DSH)动态 Cordis 插件集合:选段批示与追问(anno)、布局命名检查器(linsp)。

Stars
0
Forks
0
Issues
0
更新
今天

PROJECT TOPICS

项目标签

PROJECT README

README

DSH 插件集合(dsh-plugins)

🌐 English | 中文

个人维护的 DSH(DeepSeek Harness) 插件集合与开发工具链:动态面源码(本目录各子目录)、 静态组合面包(packages/)与工程化工具(tools/)。 跨插件的开发踩坑记录集中在 PITFALLS.md

双面策略(重要):本目录(anno/ linsp/ shot-helper/ table-zoom/)是动态面源码 (开发迭代用:cordis 预设会话 cordis_define + cordis_run 即装即跑)。anno / linsp / shot-helper / table-zoom 四个已稳定插件的静态面(日常使用:开机即挂、无批准卡)位于 packages/,两面的关系、安装与切换见 docs/plugin-dual-face.md

仓库结构

目录 内容
anno/ linsp/ shot-helper/ table-zoom/ 动态面插件源码
packages/ 静态面 npm 包:dsh-annodsh-linspdsh-shot-helperdsh-table-zoom
tools/ 移植 / 构建配置 / 发布前验证 / 启动健康自检 / 逃生 patch
docs/ 双面策略、上游 issue 草稿、静态插件移植配方

日常使用(静态面,无批准卡)

cd packages/dsh-anno && dsh plugin --profile web add link:.
cd packages/dsh-linsp && dsh plugin --profile web add link:.
cd packages/dsh-shot-helper && dsh plugin --profile web add link:.
cd packages/dsh-table-zoom && dsh plugin --profile web add link:.
# 重启 dsh web 即生效

开发迭代(动态面)

cordis 预设会话里 read 对应插件的 host.js / client.js,再 cordis_definekind:"new",idPrefix 3-6 个小写字母)+ cordis_run,浏览器批准即可。验证通过后, 把改动同步进 packages/ 静态包并重新构建。改完静态包必须先跑 pwsh -File tools/verify-static.ps1,通过才重启正式 DSH(防 client 半打崩 shell, 见 docs/plugin-dual-face.md 第五节)。

目录 插件 最新版本 职责
anno/ 选段批示与追问 v2.5.0 选中文本 → 右键「选段批示」→ 批示卡片(⚡追问到可配置模型的子会话并回贴报告 / 加入批示队列并批量注入输入框)
linsp/ 布局命名检查器 v2.6.0 全局快捷键进入命名模式:hover 高亮、点击复制「分区名·元素名 + XPath/getByRole」,用于向 AI 精确描述界面位置
shot-helper/ 截图助手 v1.8.0 发版辅助工具:驱动页面 UI 状态并回传元素坐标(通用 scroll/hover/hover-hold/click + 品红定位框 frame/中国红引导圈 + 各插件固定流程),配合 Win32 脚本拍元素级截图(本仓库界面截图均由它拍摄)
table-zoom/ 表格放大预览 v1.0.0 宽表格在消息内智能滚动(GitHub 同款 CSS);悬停表格出现跟随鼠标的 ⛶ 按钮,点击后浮层全屏查看完整表格

为什么需要这些插件

anno(选段批示与追问):AI 的长回复动辄几十屏。阅读时你想"这里记一笔""这句没懂、想立刻问一句", 但打断主对话去打字会丢失阅读位置,把追问发进主会话又会污染上下文。 anno 给出两条不打断的通道——右键把选中文本+批示暂存为队列A1 A2 …), 或一键派发到独立子会话用指定模型追问(/btw 的平替),完成后回复才贴回对话。 核心价值:阅读心流不被破坏,主会话上下文不被污染。

linsp(布局命名检查器):改造 DSH 前端、或向 AI 反馈界面问题时,最难的是 "我指的是哪个东西"。截图会过时、文字描述会歧义。linsp 让你 hover 任意元素、 一键复制「分区名 · 元素名 + XPath/getByRole」这种精确坐标,粘贴给 AI 即可被 无歧义地理解。核心价值:人与 AI 之间共享一套界面元素命名语言。

shot-helper(截图助手):给插件拍「带上下文的元素级截图」时,手工摆状态、 手工量坐标既慢又容易错位。shot-helper 把页面本身当可编程对象驱动——自动开出 菜单/卡片/队列/Dialog、回传精确坐标,配合截屏脚本按像素裁剪,一次校准后批量 复现。核心价值:发版截图可复现、可自动化;它同时演示了动态插件的一种 冷门用法(client 半部驱动页面 UI)。普通用户不必安装,发版时再用。

table-zoom(表格放大预览):AI 回复里的 Markdown 表格常比消息栏宽,要么撑破 布局、要么横向滑动看一半猜一半。table-zoom 让宽表格只在表格内部滚动(GitHub README 同款方案,不挤压列宽),鼠标悬停表格时右缘出现跟随鼠标的 ⛶ 按钮, 点击后浮层全屏查看完整表格(自带边框/斑马纹,深浅色适配)。核心价值: 宽表格不破坏阅读版面,想看全貌一键放大

界面速览

02/05 图中的红框是文档标注(截图时叠加的示意图框),不是插件 UI。 以上截图均由仓库内置的 shot-helper 驱动拍摄。

截图 说明
整体界面 DSH 界面全貌:插件不新增常驻面板,只以输入区两个小按钮(见 02)与右键菜单的形式存在
输入区入口 输入区入口:红框内为「布局」(linsp)与「划词」(anno)两个按钮
右键菜单 选中文本 → 右键菜单:复制 / 选段批示
批示卡片 批示卡片:⚡ 追问(派发独立子会话、用指定模型)/ + 加入队列
批示队列 批示队列条(红框):【A1】… 一行一条,一键注入输入框
anno 设置 设置 → 插件 → 选段批示与追问:划词触发开关、追问模型选择
linsp 设置 设置 → 插件 → 布局命名检查器:复制内容勾选、全局快捷键
命名模式 命名模式:hover 高亮 + 「分区名·元素名」名牌,点击即复制
表格悬停按钮 悬停宽表格(table-zoom):表格在消息内横向滚动不撑破版面,右缘出现跟随鼠标的 ⛶ 放大按钮(中国红圈标注)
表格全屏预览 点击 ⛶ 后浮层全屏预览:完整表格 + 边框/表头底色/斑马纹,Esc 或点遮罩关闭

节制哲学(设计原则,欢迎 review)

  1. 一个插件只做一件事:anno 管"选段→批示/追问",linsp 管"看布局", shot-helper 管"拍截图";hover 命名曾内置在 anno 里,后拆分为独立插件—— 克制是特性,不是缺陷。
  2. 绝不打扰主会话:追问走子会话而非注入输入框;派发失败只弹 toast 提示, 绝不偷偷内联提交。
  3. 触发保持克制:主触发是显式的右键菜单;划词直触发默认关闭,是可选项。
  4. 不越权、不偷写、零补丁(0 patch):只写自己声明的位置;诊断/调试设施 不进发布版;不修改 DSH 任何源码或部署文件,只通过官方扩展面 (Slot / 包私有 RPC / 宿主服务 / localStorage)挂接,DSH 升级不影响插件。
  5. 能回退:每个版本是不可变包,旧版本永远可回滚(版本历史见下)。

安装(在 DSH 中使用)

动态插件没有 npm 分发渠道,安装 = 把插件目录里的 host.js / client.js 两个函数体文件内容分别粘贴进 cordis_definecode.host / code.client, 然后 cordis_run(以 anno 为例):

cordis_define({ plugin: {kind:'new', idPrefix:'annos'}, name:'选段批示与追问 v2.5.0',
  purpose:'…', code: { host: <anno/host.js 内容>, client: <anno/client.js 内容> } })
→ cordis_run(pluginId, packageId, 'run')

注意:

  • 每个 *.js 文件内容是函数体(以 return { apply(ctx) { … } } 结尾),不要在外面再包函数。
  • 插件随 Harness 进程存活;进程重启后需重新 define/run(或做成 Agent 预设随会话挂载)。
  • 更新插件时用 cordis_definekind:'existing')追加新包,再用 cordis_run(mode:'update') 切换。

已知边界(踩坑记录)

开发/移植者请看 PITFALLS.md——沙箱限制、子代理 provider、 reportFrom 约束、两层沙箱、z-index 堆叠、监听器叠加等 10 条坑都在那里,每条带 版本状态标签与设计因果。

另有两份面向生态的说明:

  • 官方功能对比——本仓库插件相对最新版官方 DSH 是补充而非重复造轮子;
  • 官方扩展面覆盖——官方 API 哪些已被本仓库实战验证、哪些仍是社区空白。

设置持久化

anno 与 linsp 均以 localStorage 为设置来源(插件更新不丢失):

  • anno.settings.v1{ quickTrigger: boolean }
  • linsp.settings.v1{ parts:{region,kind,snippet,xpath,role}, shortcut, hoverThrough }

版本历史

anno:v1.0.0 → v1.5.0 → v1.6.0 → v1.6.4 → v1.7.2 → v1.8.0(one-shot 子会话尝试)→ v1.9.0(路线有误,勿用)→ v2.0.0 → v2.1.0 → v2.2.0(continuable 子会话)→ v2.3.0(追问模型可配置)→ v2.4.0(修复回复提取)→ v2.4.1 → v2.5.0(发布版)

linsp:v1.0.0 → v2.0.0 → v2.1.1 → v2.2.0 → v2.3.0 → v2.4.0 → v2.5.0 → v2.6.0(发布版)

shot-helper:v1.0.0 → v1.1.2 → v1.2.5 → v1.3.3 → v1.4.0 → v1.8.0(发布版)

table-zoom:v1.0.0(发布版)

动态插件的不可变包在每个 Harness 进程内独立编号(pkg-N),跨部署不通用,故不在此列出。

许可证

MIT © An0range

CLASSIFICATION EVIDENCE

分类依据

项目类型待识别
功能分类其他
规则置信度

系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。