指哪拍哪截图入库:系统级悬浮窗把新截图(或复制图片)一键存入 Obsidian 笔记,支持注释与「重点」标记、用宿主 DSH 多模态模型即时识别文字(零配置、无需另配 key,可回落通义千问)、同屏去重、按天合并,并可在晚间用 AI 整理归类、打双链并生成当日总结。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-screenshot-capture
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:wangzhanchao883/dsh-screenshot-capture
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
DeepSeek Harness 插件:截屏即存 —— 监听剪贴板 → 鼠标位置弹出系统级悬浮窗 【注释输入框 +「重点」复选框 + 复制截图 / 存文档 / 存图片】→ 图片 + 即时 OCR(默认走宿主自己的多模态大模型,零配置) 写入 Obsidian 按天合并笔记 → 晚间 AI 整理(点选保留 / 保存全部 → 归类 → 双链 → 当日总结 → 归档)。
A DeepSeek Harness(DSH) plugin that turns a screenshot (or any copied image) into
an Obsidian note: a system-level floating window appears next to your mouse, lets you add a comment / mark it as a
key point, then saves the image with instant OCR into a per-day note, and an optional
evening AI pass organizes the day's entries with categories, backlinks, a summary, and archival.
OCR uses the host's own multimodal model by default — no extra API key — and falls back to the
Tongyi Qianwen API when a key is configured.
v0.2.2 adds host-model OCR, the ocr.hostModel setting and the reliability fixes listed in the changelog.
功能 / Features
- Windows 系统级悬浮窗:检测到新截图(或复制图片)后,在鼠标旁弹出置顶小窗,三键选择;
- 注释 / 重点标记(v0.2.0):弹窗内置注释输入框 +「重点」复选框;勾重点后该条注释以标题一
**重点**写入笔记,提示这是重点; - 存文档:图片入库 + 当天笔记立即生成,OCR 文字 1~5 秒后自动回填;
- 存图片:仅图片入库(
#图片标签); - 即时 OCR:默认用宿主大模型(DSH 已在用的多模态模型,零配置、不用另申请 key);宿主不可用时自动回落通义千问;两条都不可用会在笔记里写明原因,不影响入库;
- 助手自愈(v0.2.2):常驻的剪贴板助手指令意外退出时,按退避自动重启(2s→30s,最多 5 次)并告警,不再"截图静默失效";
- 同一屏去重(v0.2.2):Windows 截图工具偶尔会把同一屏往剪贴板连写两遍(实测两张只差 1 像素、相隔 3 秒),助手按 32×32 灰度指纹比对,
dupWindowMs(默认 6 秒)内的近似同屏只弹一次窗、只存一条; - 回填不丢字(v0.2.2):笔记被云同步盘 / Obsidian 短暂占用时,写入按 ~4.6 秒退避重试并改走"临时文件 + 原子替换";两次仍失败会把识别结果暂存到
%TEMP%\dsh-capture\pending-ocr.jsonl并告警; - 晚间 AI 整理:对当天收件箱条目,点选保留/保存全部 → 归类 → 生成分类笔记 + 双链 → 当日总结 → 归档;
- Web 图形配置界面:DSH 设置 →「截图入库」,改动实时生效。
截图 / Screenshots
DSH 设置 →「截图入库」图形配置界面:

截图后鼠标旁弹出的系统级悬浮窗(注释 + 重点 + 复制截图 / 存文档 / 存图片):

入库后的 Obsidian 按天合并笔记(含 OCR 文字):

环境要求 / Requirements
- Windows(依赖系统自带 PowerShell 5.1 + WinForms)
- DSH 0.1.7+(Web 设置页依赖
configForms服务;旧版 DSH 上 host 功能照用、设置页不出现) - 宿主大模型 OCR:需要 DSH 已加载
llm+attachments服务,且当前模型在目录里声明了inputModalities: [ text, image ](DSH 里看到"图片输入"能力的模型即可)。不满足会自动回落千问 - 通义千问 API key(可选,只在回落时用到;通过
DASHSCOPE_API_KEY环境变量,或插件配置文件) - Obsidian 库(或任意本地 markdown 目录)
安装 / Install (DSH plugin)
# 从 npm 安装(若已发布)
dsh plugin --profile desktop add dsh-screenshot-capture
# 从 GitHub 源安装
dsh plugin --profile desktop add github:wangzhanchao883/dsh-screenshot-capture
# 或用本地目录(开发时)
dsh plugin --profile desktop add ./dsh-screenshot-capture
重启 DSH 后生效。剪贴板监听与悬浮窗由插件 host 端自动拉起(需要 DSH 运行中)。
首次使用请先在 DSH 设置 →「截图入库」里配置你的 Obsidian 库路径。OCR 默认就能用(走宿主模型)。 未配置
vaultPath时采集功能会自动停用并告警。
配置 / Configuration
方式一:Web 图形界面 / Web settings (推荐)
DSH Web 界面 → 侧栏 设置 → 截图入库 分区,直接改:
- 通用:启用监听、Obsidian 库路径、轮询间隔、冷却时间
- OCR:识别通道(
host宿主大模型(默认) /off关闭)、宿主模型(留空 = 跟随 DSH 当前默认模型) - 悬浮窗:横向/纵向偏移、预览最大宽度
面板里不再有千问配置项(v0.2.2 起):宿主模型是默认通道,千问只作为自动回落,key 从
DASHSCOPE_API_KEY环境变量或config.json读取,不需要在界面上填。
改动实时生效(DSH 会热重载本插件,监听器随之重启)。配置写入 profile 的条目 config
(cordis.patch.yml 里 insert[].config),它就是权威值;config.json 只作为下面的 base 层。
⚠️ 面板里显式写过的字段会优先于
config.json。如果你只是想临时试一下,记得改回库根,否则截图会一直存到你选的目录。
方式二:配置文件 / config file (base 层)
%USERPROFILE%\.dsh-screenshot-capture\config.json
{
"enabled": true,
"vaultPath": "D:\\path\\to\\obsidian-vault",
"ocr": { "mode": "host", "hostModel": "", "model": "qwen-vl-plus", "apiKey": "" },
"pollIntervalMs": 200,
"cooldownMs": 2000,
"dupWindowMs": 6000
}
ocr.mode三选一:"host"(默认,宿主多模态模型)、"qwen"(通义千问)、"off"(不识别;qwen面板里不提供,配置里仍兼容);ocr.hostModel留空 = 跟随 DSH 当前默认模型;填了就用指定模型(仍需该模型声明图片输入);- 千问 key 也可放环境变量
DASHSCOPE_API_KEY(避免明文落盘),只在host失败回落时用到; dupWindowMs= 同屏去重窗口(毫秒,默认 6000,0关闭);面板里不提供,需要时改这里。
注意:插件默认不带库路径(为空)。未配置
vaultPath时,采集功能会自动停用并告警,不会创建任何目录。首次使用请务必在 Web 设置 /config.json里配置你自己的 Obsidian 库路径。
使用 / Usage
- 开着 DSH;
Win+Shift+S框选截图(或Ctrl+C复制任意图片);- 悬浮窗出现在鼠标旁:先在注释框里写注释/评论(可选),需要的话勾选「重点」,再选【复制截图 / 存文档 / 存图片】;
- 晚上对 DSH 说"整理今天的截图",按提示选择保留条目。
连拍两张也没问题:识别较慢时请求会排队,不会出现笔记里卡在「OCR: 识别中…」。
注释与「重点」标记 / Comments & key points
- 截图时填写的注释会写入当天收件箱该条目下方;
- 勾选「重点」后,注释上方加一行标题一
# **重点**作为醒目提示; - 晚间整理时,注释与重点标记随条目进入「知识库/<分类>/」笔记的
## 重点小节(未勾重点的纯注释也保留); - 点「复制截图」不写笔记,忽略输入框内容。
Obsidian 结构 / Output layout
vault/
├── 收件箱/ # 白天截图进(按天合并)
│ ├── 2026-08-21.md
│ └── attachments/
├── 知识库/<分类>/ # 晚间整理后,按分类
│ ├── INDEX.md
│ └── 20260821_1430_文档.md
├── 总结/ # 当日总结(含双链)
└── 归档/ # 已整理的收件箱笔记
目录结构 / Repository layout
dsh-screenshot-capture/
├── index.mjs # host 端入口:导出 Config schema + 注册工具 + 剪贴板监听(watcher 单例、配置热重启、助手自愈)
├── core.mjs # 悬浮窗三键选择的分发处理(串行队列,连拍不丢文字)
├── config.mjs # 默认配置 / config.json 合并 / 运行时入参覆盖(含 Volatile 解包)
├── clipboard.mjs # 拉起 PowerShell 常驻助手并读事件日志
├── storage.mjs # Obsidian 入库(按天合并、目录结构、OCR 回填与重试)
├── ocr.mjs # 识别:宿主多模态模型(默认) + 通义千问回落
├── organize.mjs # 晚间 AI 整理(归类 / 双链 / 总结 / 归档)
├── dev-run.mjs # 独立开发入口(不需要 DSH)
├── client.js # 浏览器端:注册 Web 设置页,经 configForms 读写配置
├── scripts/
│ └── clip-dialog.ps1 # PowerShell 轮询剪贴板 + 弹出系统级悬浮窗
├── cordis.patch.yml # DSH bundle patch(声明本插件为可安装 host 端 bundle)
├── test/ # 独立测试脚本(注入 vault 路径即可跑,无需 DSH)
├── package.json # dsh.bundle + dsh.client manifest
├── LICENSE # MIT
└── README.md
架构速览 / Architecture
- host 端(Node):
index.mjs入口,导出Configschema(DSH 设置服务据此投影出设置页)+ 注册工具 + 剪贴板监听(watcher 单例、配置热重启、助手异常退出自动重试);clipboard.mjs拉起 PowerShell 常驻助手并读事件日志;storage.mjs/ocr.mjs/organize.mjs负责入库/识别/整理。 - 识别通道:默认走宿主 ——
ctx.get("attachments").saveImage()把图片转成ImageAttachmentRef,再用ctx.llm.stream({ provider, model, reasoningEffort: "off" })收文字(图片块只认 attachment 引用,不塞 base64;是否支持图片看目录里模型的inputModalities)。宿主不可用时回落千问 HTTP 接口。 - client 端(浏览器):
client.js注册 Web 设置页,经ctx.configForms.get("<条目 id>")读写配置(DSH 0.1.7 起,旧的settingsScope已被移除)。 - PowerShell:
scripts/clip-dialog.ps1轮询剪贴板 + 弹出悬浮窗,通过%TEMP%\dsh-capture\events.log与 Node 通信。
注意:悬浮窗脚本是 Windows PowerShell(
Add-Type+ WinForms)。请在可控环境下使用,并只安装你信任的代码(本插件无后门,不联网外传剪贴板数据)。
安全说明 / Security
- 本插件不含任何内置密钥;千问 key(可选的回落通道)只从环境变量或配置文件读取;
- 剪贴板图片仅本地处理;识别时才把那一张图片发给识别通道 —— 默认是宿主自己的模型(走 DSH 的模型配置),回落时才是通义千问;
- 仓库代码不含个人路径之外的敏感信息;配置文件里的
vaultPath等路径是使用者的本地路径,不会写入仓库(仓库默认vaultPath为空,首次使用需自行配置,未配置时自动停用采集)。
开发与独立测试 / Development (no DSH needed)
npm run dev # 交互模式(真实弹窗)
npm run dev:auto # 自动模式:检测到截图自动存文档
npm test # 运行存储/整理单测(无需 DSH、无需 API key)
可用环境变量 DSC_VAULT_PATH 覆盖 vault 路径,避免污染真实库。测试说明见 test/README.md。
License
MIT © 2026 wangzhanchao883
链接
同类插件
Tencent/WeKnora#dsh-weknora★ 34626
把 WeKnora 知识库接入 dsh 的四个只读工具:列出知识库、混合检索原文片段、按顺序还原单篇文档,以及直接取用 WeKnora 自己带引用的 RAG 或 ReAct agent 回答(含可续聊的 session id)。
superdesigndev/treg★ 5760
给 Agent 的工具目录:按「要做的事」检索约 2,600 个外部接口(SEO 与 SERP、外链、社交、人物与公司信息补全、广告库、抓取),查看参数与单次调用价格后直接调用,凭据由服务端注入。附带技能,MCP 行在未设置 TREG_TOKEN 前保持禁用。
T-Auto/dsh-ops★ 3102
为 Windows 的 DSH 提供 bash、PowerShell 7 及 Rust 高性能工具,减少 token 消耗。
TencentCloudBase/CloudBase-AI-Toolkit#dsh-plugin★ 1139
把腾讯云 CloudBase 后端接入 DeepSeek Harness——在对话里搭好并部署全栈应用,查询结果渲染为表格卡片(分页、排序、导出 CSV),部署后可预览真实域名,并提供 CloudBase MCP 工具集(`mcp__cloudbase__*`),登录走 device-code 流程。
sixtysevenlf/dsh-blender-plugin★ 599
让 DSH agent 通过直连 TCP 通道驱动本地 Blender,提供 16 个工具:视口帧、自定义视角渲染、Python 执行、无头与作业卸载、事务回滚,以及 28 个 family / 186 个 op 的规划层。
anysearch-team/anysearch-dsh★ 537
基于 AnySearch 的实时网页与垂直搜索插件,为 DeepSeek Harness 提供搜索工具。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。