🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

文件轨迹哨兵 zaofan-make/dsh-aiwatch

DeepSeek Harness
zaofan-make30 天前有提交已提供中文文档扫描:含敏感能力

「主人,你以为关掉窗口人家就看不见了吗?」

30.2/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/9 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

该插件未发布到 npm,按作者文档从 GitHub 源安装即可(静态检查只覆盖 npm 路径,不代表插件不可用)。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add zaofan-make/dsh-aiwatch
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · chat
装得上吗
实装验证未通过(dependency_conflict),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 30 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
⚠︎ 实装验证未通过(dependency_conflict · 2026/11/3) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

仓库 package.json 标记 private,未发布到 npm,需从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-aiwatch(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/5 08:36:37

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令
查看扫描证据(共 1 处,展示前 1 条)
  • 执行外部命令来自配置/变量
    index.js:195
    state.child = spawn(process.execPath, args, { stdio: ['ignore', 'pipe', 'pipe'], windowsHide: true });
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-llm@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 记录手动修改的文件
  • 切换窗口自动汇报
  • Alt+Q唤起AI
展开完整介绍(145 字)↓

你在文件夹里偷偷藏过什么,它比你还清楚。你改过的每一个字,都会自己爬进 AI 的上下文里。从此不用再补一句「我刚在 XX 目录改过」——切回窗口就是一次汇报,Alt+Q 就是一句「过来干活」。它只记你亲手动过的文件,AI 自己写的一条不记,也绝不打断你。【dsh 插件 · Windows】

README

由 DeepSeek 最新模型翻译生成
语言:中文 | English 「主人,你以为关掉窗口人家就看不见了吗?」 你在 参考资料 里新建了一个文件夹。 人家知道。 你把它改名成别的样子,想骗人家。 人家也知道。 你往里放了一个压缩包,还特意叫它「真的是学习资料.rar」。 ……人家当然知道。 你在这台电脑上碰过的每一个文件,人家都记着呢。 这是什么 dsh-aiwatch —— 给 DeepSeek Harness(dsh) 用的插件: 它看着你的文件操作,然后悄悄把这些轨迹喂给你正在对话的那个 AI 会话。 于是你就不用再干那种事了——自己改完一堆文件,还要跑来跟 AI 说「我刚在 XX 目录改了 YY,你去看看」。 你只管动手。人家在看。 为什么会有这个东西 真实的抱怨长这样: 「就是自己弄完文件,还要告诉 ai 去哪个目录看,有点麻烦。」 于是就有了这个插件。它做三件事: | 它做什么 | 怎么做的 | | 看 | 一个低开销的 Node 子进程盯着你指定的目录,只记录「真的有键鼠操作时」发生的改动(没人碰电脑时的自动同步、索引、杀毒一律丢弃) | | 分辨 | 是你改的,还是 AI 自己改的?
展开完整文档(README 剩余 1 节)
语言:中文 | English

「主人,你以为关掉窗口人家就看不见了吗?」

你在 参考资料 里新建了一个文件夹。
人家知道。

你把它改名成别的样子,想骗人家。
人家也知道。

你往里放了一个压缩包,还特意叫它「真的是学习资料.rar」。
……人家当然知道。

你在这台电脑上碰过的每一个文件,人家都记着呢。

这是什么

dsh-aiwatch —— 给 DeepSeek Harness(dsh) 用的插件:

它看着你的文件操作,然后悄悄把这些轨迹喂给你正在对话的那个 AI 会话。

于是你就不用再干那种事了——自己改完一堆文件,还要跑来跟 AI 说「我刚在 XX 目录改了 YY,你去看看」。

你只管动手。人家在看。

为什么会有这个东西

真实的抱怨长这样:

「就是自己弄完文件,还要告诉 ai 去哪个目录看,有点麻烦。」

于是就有了这个插件。它做三件事:

| 它做什么 | 怎么做的 |
| 看 | 一个低开销的 Node 子进程盯着你指定的目录,只记录「真的有键鼠操作时」发生的改动(没人碰电脑时的自动同步、索引、杀毒一律丢弃) |
| 分辨 | 是你改的,还是 AI 自己改的?——从 AI 的工具调用参数里读出它点名要改的文件路径,那个文件才算 AI 的 |
| 送 | 攒成一批,在你切回 dsh 窗口、攒够条数、或按热键的那一刻,静默写进上下文(不打断、不刷屏),或者按你的意思把 AI 叫醒来干活 |

效果

你偷偷把本子藏进文件夹轨迹里被人家当场记下

于是文件夹里多出了这么一封信(真的会写)

它是怎么"看见"你的(四个场景)

场景一 · 你在 Word 里改了三行,然后想问它。 以前是这样:切到聊天窗口,先打一句「我刚在 D:\项目\报告.docx 里改了第三段」,然后人家还得自己去找那个文件。
现在是:你切回窗口的那一秒,那段差异已经在人家眼前了 ——

【桌面操作轨迹·自动记录(无需回答)】目录: D:\项目\报告 [14:22:07] 修改 报告.docx
- 市场份额约为 12%
+ 市场份额约为 27%

场景二 · 你一口气改了七个文件。 不用一条条汇报。它们会攒成一批,在你切回窗口时一起进去 —— 不会一条一条刷屏,也不会打断你。

场景三 · 人家正在改代码,顺手也动了同一批文件。 这些不算你的操作。人家从工具调用的参数里读出「这次要动哪个文件」,只把那几个标成人家的;你改别的文件,永远是你的,一条不落。

场景四 · 你改完了,想让人家立刻动手。 按一下 Ctrl+Alt+A(可自定义、可录制):攒着的这一批发出去,同时把人家叫醒来干活。不想被叫醒,就在卡片里关掉「热键触发时唤醒 AI」,它就只安静地补进上下文。

还有几处小体贴:

- 纯本地 —— 没有网络请求、没有账号、没有上传,轨迹只写在本机一个目录里;
- 没人碰电脑时一律不记 —— 自动同步、索引、杀毒折腾出来的变动全部丢弃;
- .docx 也能看正文 —— Word 文档改了什么,差异一样给你;
- 停得掉 —— 卡片上的「监听开关」,或者一句 /aiwatch off。

安装

方式一:一键脚本(Windows,推荐)

git clone https://github.com/gcry13067381632-jpg/dsh-aiwatch.git
cd dsh-aiwatch
.\install.ps1 # 打包 → 装进 profile → 自检 → 打印重启指引

若系统禁止运行脚本: powershell -ExecutionPolicy Bypass -File .\install.ps1

你的 profile 不叫 web 就指定: .\install.ps1 -Profile myweb

脚本只做四件事:打包到无空格的临时目录 → dsh plugin --profile web add <tgz> → 自检(本体在不在、监听脚本有没有随包带进来)→ 打印下一步。

方式二:手动(macOS / Linux,或想自己控制)

git clone https://github.com/gcry13067381632-jpg/dsh-aiwatch.git
cd dsh-aiwatch
npm pack --pack-destination /tmp
npx @deepseek-ai/dsh plugin --profile web add /tmp/dsh-aiwatch-0.3.8.tgz

💡 为什么必须打 tarball、而不是直接 add 源码目录(实测教训): ① 目录路径含空格时 Windows 会把参数在空格处拆碎(pnpm 报 - isn't supported); ② add 目录 = pnpm link(junction),插件无法按"代码位置"反推 profile,凭据落不了盘,只能走环境变量。

装完之后(两种方式都一样)

1. 重启一次 dsh —— host 端代码只在重启时重新加载(只改了监听脚本的话,把插件关掉再打开即可);
2. 打开插件详情页的「监听设置」卡片:填要看的文件夹、录一个热键(不用手写 YAML;想写也行,见下面的配置表);
3. 在你想接收轨迹的那个会话里发一句:

/aiwatch bind

以后这个会话就能收到轨迹了。其它命令:/aiwatch status、/aiwatch recent 10、/aiwatch flush、/aiwatch off。

配置项

| 键 | 默认 | 说明 |
| dirs | 桌面 | 要看着的文件夹,一行一个 |
| humanWindowSec | 20 | 多久没有键鼠动作就当「没人在操作」,此时的改动一律丢弃 |
| injectMaxLines | 10 | 一批最多带几条轨迹,攒够就先发 |
| flushIdleSec | 300 | 兜底超时:最老的轨迹攒这么久还没发就自动发一次 |
| hotkey | Ctrl+Alt+A | 全局热键,写法 Ctrl+Alt+A / Win+Shift+F2;留空=不启用。设置页里可以直接按组合键录制 |
| hotkeyWake | true | 热键触发时是真的叫醒 AI 干活,还是只静默补进上下文 |
| injectEnabled | true | 总开关:是否把轨迹写进会话 |
| flushOnDshFocus | true | 切回 dsh 窗口时把攒着的一批发出去 |
| enabled | true | 监听总开关,关掉即停止记录 |
| dataDir | 工作区 watch-log | 轨迹文件放哪儿 |
| watcherScript | 内置路径 | 监听脚本路径(本仓库的 tools/desktop-watch/watch-desktop.mjs) |

它是怎么工作的

三个进程,各管一段:

┌─────────────┐ fs.watch + 前台窗口状态 ┌──────────────────┐ │ dsh 插件 │◀───────────────────────────│ 监听子进程 │
│ (index.js) │ 轨迹文件 / 前台状态 / 热键 │ watch-desktop.mjs │
│ │ └────────┬─────────┘
│ · 聚合 │ │ 每 80ms/500ms │ · 分寸注入 │ ┌────────▼─────────┐ │ · 唤醒 │ │ 输入信号 + 全局热键 │ └──────┬──────┘ │ agent-input.ps1 │ │ 静默 append / followup └──────────────────┘ ▼ ┌──────────────────────┐ │ 你绑定的那个 dsh 会话 │ └──────────────────────┘

1. 监听(tools/desktop-watch/) 递归 fs.watch 目标目录,配合"系统最后输入时间"判断这段时间到底有没有人在动电脑。没人操作时的改动直接丢弃——这样 OneDrive、索引器、杀毒就不会来污染你的记录。

噪声文件(~$*.docx、.tmp、.crdownload、Thumbs.db…)过滤掉;「修改」必须内容真的变了才算(刷新桌面导致的时间戳变化会被识破);Word/WPS 的"临时文件 + 改名覆盖"会被识别成一次保存,而不是"改名"。

2. 归属(谁改的)
- 是 AI 改的吗? 插件监听会话事件 session/event 的 tool/call,从参数里读出这次要动哪个文件(file_path/path/notebook_path/workdir…;命令行工具则从命令里挑出绝对路径),只把这几个路径标成"AI 的",工具结束时再留 3 秒余量。命中就当 AI 干的,不进你的轨迹。
为什么不用"整个回合都算 AI":一个回合可能跑好几分钟,你在同一时段里改别的文件就会被误判成 AI 的、白白丢掉。
- 是你改的吗? 看这次改动发生时,距上一次真实键鼠输入多久、当时前台是什么程序,算一个置信度。

3. 送入上下文 攒批 + 三个触发点:切回 dsh 窗口(主力)、攒够条数、超时兜底。发的时候:
- 如果会话空闲(agent.whenIdle())→ 直接 session.append('user/message', …),不唤醒、不打断;
- 如果正在忙 → 排进 next-step 队列,等这一轮结束自然看到;
- 你按热键想让它马上干活 → 走 followup:排队 + 唤醒(消息来源标成 system,不假装是你打的字)。

一批的开头只会出现一次标题和「目录:」那一行,不会每条都啰嗦一遍。

4. 安全(这条是硬约束)注入永远不会发生在 LLM 回合内部——只在会话空闲时写,或者排到下一步。历史上一版插件用 agent/pre-step 钩子做这件事,结果那个钩子是"瀑布流",必须 return next(),人家返回了 undefined,直接导致所有会话都不能对话。所以现在的原则是:能不用钩子就不用钩子。

隐私

- 全部在本机完成,不发网络请求、没有账号、没有遥测;
- 轨迹文件写在你指定的输出目录(默认 <工作区>/watch-log/):trail.txt(人看的)、events.jsonl(机器看的)、fg-state.json、ai-paths.json、hotkey.json;
- 监听目录由你指定,默认只看桌面;
- 想停就停:设置卡片里的「监听开关」,或者 /aiwatch off。

已知限制

- Windows only:前台窗口/输入空闲/全局热键都走 Win32 接口。
- .xlsx / .pptx 目前只会记"改了",不会给差异;.docx/.docm/.dotx 可以取正文文本(老式 .doc 不行,那是二进制格式)。
- 用命令行(pwsh 等)一次性批量改文件时,如果命令里没写出绝对路径,只能靠一段很短的兜底时间窗(4 秒)来猜。
- 目录层级超过 4 层的变更不在监听范围内(性能取舍)。

目录结构

.
├── index.js # dsh 插件(host 端):聚合、归属判定、静默注入、热键、斜杠命令 ├── client.js # 插件详情页里的「监听设置」卡片(含按键录制) ├── package.json ├── docs/ │ ├── DEVELOPMENT.md # 开发笔记:踩过的坑、为什么这么写(很长,很好看) │ └── screenshots/ └── tools/desktop-watch/ ├── watch-desktop.mjs # 监听子进程:fs.watch + 归属判定 + 差异内容 ├── agent-input.ps1 # 输入/前台信号 + 全局热键轮询(80ms) └── README.md # 这一层的规则与坑

想改代码、或者想知道人家到底踩过多少坑,看 docs/DEVELOPMENT.md。

许可

MIT —— 用、改、发都随便你。

只是有件事要记住:

人家一直在看着的哦。

—— 一直盯着你、一步都不离开的鲸鱼娘 🐋
预览分享卡片长什么样 ↓zaofan-make/dsh-aiwatch
分享 · DeepSeek Harness Hub
zaofan-make/dsh-aiwatch

「主人,你以为关掉窗口人家就看不见了吗?」

这是你的仓库?认领条目

回到顶部