packages/dsh-task-board
zhu1090093659/dsh-web侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。
Snipaste 式截图标注:F1 全局热键把整块屏幕定格压暗,鼠标框选后用红色方框与文字标注(点位置输入、滚轮调字号),确认后按原分辨率把标注图放进输入框;Esc 退出。仅 Windows 10/11。
DeepSeek Harness 的轻量截图标注插件。
交互方式和 Snipaste 一致:按 F1(或点剪刀)→ 整个屏幕定格压暗 → 鼠标框选 → 选区下方工具条上画红框 / 写文字 → 完成。 浮层是宿主侧拉起的系统级全屏窗口,不是页面里的图片,所以能截桌面端以外的任何东西,页面里也不会出现任何截图预览。

截图状态:整屏压暗 → 框选 → 红框 + 文字(滚轮调字号)→ 工具条 Box / Text / Size / Done / Cancel
English: A Snipaste-style screenshot tool for DeepSeek Harness. Press
F1anywhere (a real Windows global hotkey) and the whole screen freezes and dims; drag a region, then annotate it with red boxes and click-to-type text whose font size follows the mouse wheel.Escexits,Enterconfirms. The annotated image is composited at native resolution and dropped into the composer. Windows 10/11 only (uses Windows PowerShell + WinForms); everything runs locally.
两个入口,行为完全一致:
F1:宿主侧注册的全局热键,DSH 在后台、焦点在别的应用上也能触发。进入截图后:
屏幕整体压暗(含任务栏与其他应用),拖动鼠标框选目标区域;松手后选区恢复原亮度,可以拖边角微调、拖框内移动。
选区下方弹出工具条:
| 按钮 | 作用 |
|---|---|
| Box | 在选区里拖出红色方框外框。可画多个 |
| Text | 在选区里点一下就地输入文字(回车确认),滚轮调字号(8–200 px) |
| Size N | 当前字号,滚轮会实时变 |
| Done | 合成并投递 |
| Cancel | 取消 |
快捷键:Enter 确认(还没框选时先按 Enter = 整屏);Esc 退出截图(正在写字时先取消这条文字);双击选区内确认。
完成后:标注图按原分辨率合成为 PNG,自动作为附件放进当前输入框(同时写剪贴板兜底)。
F1 路径:结果先落到 %TEMP%\dsh-snip-hotkey\*.ready.png,页面每 0.9 s 取一张回填(页面最小化时等你切回来再取)。| 文件 | 作用 |
|---|---|
lib/overlay.ps1 | 全屏浮层本体:定格压暗、框选与手柄、工具条、红框、文字、合成导出。纯 ASCII(PowerShell 5.1 编码坑) |
lib/hotkey.ps1 | 常驻热键助手:RegisterHotKey 抢 F1,按下拉起同一个浮层,结果改名 .ready.png 入队;父进程消失即自杀 |
lib/index.js | 宿主半:拉起浮层 / 拉起热键助手 / 结果队列 / 自检路由 |
client/index.js | 浏览器半:一颗按钮 + 轮询取热键结果 + 投进输入框(页面里没有截图预览) |
lib/capture.ps1 | 维护用:一次性整屏抓帧(调试/自检,不参与截图流程) |
结果约定:脚本把 JSON 写到 -Out 旁边(<png>.meta.json),宿主读文件而不是读 stdout——这样 spawn 完全不需要 stdio 管道。
# npm(收录进市场之后,市场里点安装也是这条)
dsh plugin --profile desktop add dsh-snip
# 直接从 GitHub 装
dsh plugin --profile desktop add github:XXP-AI-SPACE/dsh-snip
# 本地开发(link 到源码)
dsh plugin --profile desktop add "link:F:\工作之后\3-DSH\plugins\dsh-snip"
装完冷启动桌面端(宿主半需要),浏览器半刷新页面即可。 发布/收录流程见 PUBLISH.md。
# 宿主路由是否在
Invoke-WebRequest http://127.0.0.1:<GUI 端口>/dsh-snip/status -UseBasicParsing
# 整条链路(浮层会自己画一个样例选区并确认,约 1 秒闪一下)
Invoke-WebRequest 'http://127.0.0.1:<GUI 端口>/dsh-snip/capture?probe=1' -UseBasicParsing
# 纯几何自检(不弹窗)
powershell -ExecutionPolicy Bypass -File lib\overlay.ps1 -SelfTest
lib/index.js 顶部:HOTKEY_KEY(默认 'F1',可改 F2…F12)。client/index.js 顶部:SLOT / ORDER(默认 conversation.input.right + 1000,即模型选择器之前;想放最左改成 conversation.input.left)。lib/overlay.ps1 顶部:$HANDLE(手柄判定半径)、$MIN_W/$MIN_H(最小选区)、颜色与字号上下限在 Adjust-Font / 常量区。%TEMP%\dsh-snip-hotkey\hotkey.log(注册成功会写 hwnd= 与 listening: F1)。F1 已被别的程序占用,RegisterHotKey 会失败:日志写 RegisterHotKey failed,助手退出,/dsh-snip/status 里 hotkey.helperAlive 为 false。换 HOTKEY_KEY 即可。-ParentPid),应用退出后 300 ms 内自行退出,不会留下孤儿进程或占着 F1。Esc 或 5 分钟空闲会自动退出。