dsh-web-search-ddg
aooyoo
Zero-token DuckDuckGo search provider for the DeepSeek Harness (DSH) web seam — local headless browser, no API key, no m…
PROJECT TOPICS
PROJECT README
🌐 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-anno、dsh-linsp、dsh-shot-helper、dsh-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_define
(kind:"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】… 一行一条,一键注入输入框 |
![]() |
设置 → 插件 → 选段批示与追问:划词触发开关、追问模型选择 |
![]() |
设置 → 插件 → 布局命名检查器:复制内容勾选、全局快捷键 |
![]() |
命名模式:hover 高亮 + 「分区名·元素名」名牌,点击即复制 |
![]() |
悬停宽表格(table-zoom):表格在消息内横向滚动不撑破版面,右缘出现跟随鼠标的 ⛶ 放大按钮(中国红圈标注) |
![]() |
点击 ⛶ 后浮层全屏预览:完整表格 + 边框/表头底色/斑马纹,Esc 或点遮罩关闭 |
动态插件没有 npm 分发渠道,安装 = 把插件目录里的 host.js / client.js
两个函数体文件内容分别粘贴进 cordis_define 的 code.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) { … } } 结尾),不要在外面再包函数。cordis_define(kind:'existing')追加新包,再用 cordis_run(mode:'update') 切换。开发/移植者请看 PITFALLS.md——沙箱限制、子代理 provider、
reportFrom 约束、两层沙箱、z-index 堆叠、监听器叠加等 10 条坑都在那里,每条带
版本状态标签与设计因果。
另有两份面向生态的说明:
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,再与站内分类词典和词根规则比对。