dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
Codex-style element annotation for DeepSeek Harness: Shift box selection, live style panel with from→to changes, Ctrl+click instant send, cross-page review sent as one message.
Codex 风格的界面批注插件,给 DeepSeek Harness 用。 打开当前工作区里正在跑的本地服务或静态页面,点元素、按住 Shift 框选区域、直接在页面上改样式实时预览,把修改意见一次性发进当前对话。
Codex-style element annotation for DeepSeek Harness. Open a local dev server or a static page from your workspace, click an element, Shift-drag a region, tweak styles with a live preview, and send the whole review into the current conversation in one message.
在线演示 Live demo — 三页静态站,可以直接试框选和跨页批注 · the same three pages, for trying region selection and cross-page review.
| 框选区域 | 样式实时预览 |
|---|---|
![]() | ![]() |

| dsh-annotate 0.1.14 | dsh-lens | |
|---|---|---|
| 框选区域 | 只能点单个元素 | 按住 Shift 点/拖,框内元素全收进一条区域批注(容器标 [容器],叶子带文本) |
| 样式面板 | 只能读计算样式 | 卡片里「⚙ 样式」展开,改 font-size / color / padding / margin / line-height / width,页面当场变,批注写 from → to |
| 快捷发送 | 存完再点发送 | Ctrl+点击元素 → 写(或不写)→ 回车,立即发进当前对话(只发这一条) |
| 挂载位置 | 只有右侧栏 | 右侧栏 tab + 对话区 View 标签(conversation.view)+ 输入框上方 dock |
| 跨页批注 | 按页隔离 | 一个会话里所有页面的批注一起收集、分组展示、一次发送 |
| 服务发现 | 本机所有 loopback 端口 | 只列当前工作区自己起的服务(按进程命令行/可执行文件/声明端口认领),噪音不进门 |
交互对齐 Codex 应用内浏览器文档:点元素=选元素,Shift 点/拖=框选区域,Ctrl+点=立即发送,样式收在卡片齿轮里。
这是一个本地插件,通过 link: 挂进 DSH profile,不需要发布到 npm。
git clone https://github.com/xulianglong-akk/dsh-lens.git
cd dsh-lens
node scripts/install.mjs # 写入 link 依赖 + profile bundle 行,并备份 package.json
然后在 profile 目录里装一次(只建链接,不联网):
cd "$DSH_HOME/profiles/desktop" # Windows: %USERPROFILE%\.dsh\profiles\desktop
pnpm install
最后完全退出并重开 DSH(刷新页面不够:宿主半侧一个进程只加载一次)。
如果插件目录路径含非 ASCII 字符(例如中文目录),部分 DSH 版本在改写 profile manifest 时会把路径写坏。稳妥做法是先建一个纯 ASCII 的 junction 再安装:
mklink /J D:\dsh-lens-src "D:\你的目录\dsh-lens",然后node scripts/install.mjs --link D:/dsh-lens-src。
卸载:node scripts/rollback.mjs(还原安装前的 package.json、删掉链接),然后重开 DSH。
入口:右侧栏「批注」、对话区「批注」View 标签,或 Ctrl+Shift+L。
4173 这样的端口/地址即可(打开过的会记住)。打开页面后自动进入圈选模式。Enter 保存,继续点下一个;Esc 退出圈选。Enter。Enter 立即发这一条。font-size 42.966px → 20px;「全部复原」撤回。🎯 界面标注 · 2 个页面 · 3 条
【http://127.0.0.1:5173/】
#1 h1
选择器: main#main > header > h1(命中 1 个元素)
位置/尺寸: 390×28 @ (47, 227) · 视口左上(17%W × 30%H)
计算样式: display:block; width:390px; font-size:20px; color:rgb(237, 240, 231); …
样式修改: font-size 42.966px → 20px
文本: 欢迎来逛逛。
批注: 标题太大,改 20px。
【http://127.0.0.1:5173/pricing】
#2 [框选区域] 1145×479 @ (143, 97)
框内元素: 26 个(按 DOM 顺序)
- section.grid [容器] @ 1016×319
- article.card [容器] …
- h2「面板 A · 大块,带嵌套」 @ 442×39
…
批注: 这三块卡片间距统一 24px。
每条都带:选择器 + 命中数、位置尺寸、视口方位、计算样式、可见文本、样式 from→to、批注正文。
本机跑着很多东西(各种客户端也占 loopback 端口)。dsh-lens 只把能证明属于当前工作区的服务列出来,证据三选一:
node scripts/dev-server.mjs)能在工作区里找到。外加上「工作区自己声明的端口」(--port、PORT || 4173、vite port:)。一条都对不上就不列,手填地址即可。
conversation.view 的语义是「一次只渲染一个目标视图」,切到「批注」时 Chat 会收起,底部输入框还会压住一点面板。想看对话就切回「对话」,或用右侧栏。127.0.0.1 / localhost / [::1];HTTPS 本地服务原样转发,不忽略证书错误。/proc + ps 分支,未在真机验证。Enter(可以写批注,也可以空着)——省掉的是「再去点发送」。lib/overlay.js、lib/shim.js 是每次回 HTML 重新读盘,刷新预览即生效。| 文件 | 作用 |
|---|---|
lib/index.js | 宿主半侧:工作区范围的服务发现、loopback 预览代理、注入 shim/overlay、POST /__dsh-lens/api |
lib/client.js | 客户端半侧:右侧栏 tab、conversation.view、header 按钮、输入框 dock、跨页批注列表与发送 |
lib/overlay.js | 注入预览页的浮层:点选、Shift 框选、样式面板、Ctrl 点击、零残留 |
lib/shim.js | 注入预览页的 URL/WS 映射与导航上报 |
scripts/install.mjs / scripts/rollback.mjs | 一条命令安装 / 回滚 |
test/host-harness.mjs | 不启动 DSH 的宿主半侧自测台(detect / preview) |
docs/demo/ | 三页静态示例站,用来试框选和跨页批注(GitHub Pages 也发布这个目录) |
CHANGELOG.md / CONTRIBUTING.md / SECURITY.md | 变更记录、开发约定、安全边界 |
node --check lib/index.js && node --check lib/client.js && node --check lib/overlay.js
node test/host-harness.mjs detect "D:/path/to/your/workspace"
node test/host-harness.mjs preview http://127.0.0.1:5173/ "D:/path/to/your/workspace"
Codex-style element annotation for DeepSeek Harness. Open a local dev server or a static page from the current workspace, click elements, Shift-drag a region, tweak styles with a live preview, and send the whole review into the current conversation as one structured message.
[容器], leaf elements carry their text).from → to values.conversation.view tab in the conversation area, and a dock above the composer.The interaction follows the Codex in-app browser documentation: click to select, Shift+click/drag for an area, Cmd/Ctrl+click to send immediately, and style controls folded into the comment card.
git clone https://github.com/xulianglong-akk/dsh-lens.git
cd dsh-lens
node scripts/install.mjs # writes a link: dependency and the bundle row, backing up package.json
cd "$DSH_HOME/profiles/desktop" # Windows: %USERPROFILE%\.dsh\profiles\desktop
pnpm install
Then fully quit and reopen DSH (a page refresh is not enough: the host half is loaded once per process).
If the checkout path contains non-ASCII characters, some DSH builds mangle the path while rewriting the profile manifest. Create an ASCII junction first and pass it explicitly:
mklink /J D:\dsh-lens-src "D:\your dir\dsh-lens"
node scripts/install.mjs --link D:/dsh-lens-src
Uninstall with node scripts/rollback.mjs, then restart DSH.
Open the sidebar tab 批注 (Annotation), the 批注 view tab in the conversation area, or press Ctrl+Shift+L.
4173. The page opens already in annotation mode.Enter; keep clicking for the next one. Esc leaves annotation mode.Enter).prop old → new.🎯 界面标注 · 2 pages · 3 annotations
【http://127.0.0.1:5173/】
#1 h1
selector: main#main > header > h1 (matches: 1)
position/size: 390×28 @ (47, 227) · viewport top-left (17%W × 30%H)
computed: display:block; width:390px; font-size:20px; …
style change: font-size 42.966px → 20px
text: 欢迎来逛逛。
note: 标题太大,改 20px。
conversation.view seat is exclusive with Chat by design (one target view renders at a time); the composer also overlaps its bottom edge. Use the right sidebar to see chat and preview side by side.127.0.0.1, localhost, [::1]); local HTTPS is proxied as-is without certificate bypass./proc + ps branches are not.Enter (a note is optional); what it removes is the separate Send click.lib/overlay.js and lib/shim.js are re-read per HTML response, so a preview refresh is enough for those.MIT. The loopback preview proxy, the page shim and the annotation payload plumbing are derived from dsh-annotate by qinjing, also MIT — see LICENSE.