目录一有改动就带着变更清单唤醒 agent
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/17 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add 11111353535/dsh-folderwatch该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · dev
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 14 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 4 处,展示前 4 条)
- 读取本地文件lib/index.js:185
if (!existsSync(root)) return `no such path: ${root}` - 读取本地文件lib/index.js:187
const info = statSync(root) - 读取本地文件lib/snapshot.js:36
const info = await stat(absolute) - 读取本地文件lib/snapshot.js:79
dirents = await readdir(absolute, { withFileTypes: true })
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
目录变化时唤醒智能体,带上 diff,且不回显它自己的写入。
README
由 DeepSeek 最新模型翻译生成dsh-folderwatch
文件一改就把 agent 叫醒 —— 而不是等它想起来去看。
agent 已经能被时钟叫醒(定时任务),也能被 HTTP 请求叫醒(webhook)。但这两种都覆盖不到真正要紧的那件事:会话之外、有东西动了文件。构建跑完了、格式化工具重写了整个目录树、测试跑完落下一份报告、下载完成了、同事往共享目录里推了一份文件。今天的做法是:agent 只有正好去看,才会知道。
dsh-folderwatch 把一个目录和「arm 它的那个 agent」绑定起来。目录一变,agent 就会收到一份精确说明到底变了什么的报告 —— 既可以立刻被叫醒来处理,也可以让它安静地在下一步看到。
展开完整文档(README 剩余 1 节)
dsh-folderwatch 文件一改就把 agent 叫醒 —— 而不是等它想起来去看。 agent 已经能被时钟叫醒(定时任务),也能被 HTTP 请求叫醒(webhook)。但这两种都覆盖不到真正要紧的那件事:会话之外、有东西动了文件。构建跑完了、格式化工具重写了整个目录树、测试跑完落下一份报告、下载完成了、同事往共享目录里推了一份文件。今天的做法是:agent 只有正好去看,才会知道。 dsh-folderwatch 把一个目录和「arm 它的那个 agent」绑定起来。目录一变,agent 就会收到一份精确说明到底变了什么的报告 —— 既可以立刻被叫醒来处理,也可以让它安静地在下一步看到。 [folderwatch] 3 changes under /work/shop/reports watch: reports · 14:02:11 1 created · 1 modified · 1 deleted + /work/shop/reports/run-42.json 18KB ~ /work/shop/reports/latest.json 18KB - /work/shop/reports/run-41.json (4 events suppressed as this session's own writes) Read the new report and summarise what failed. 为什么不是「fs.watch 加个回调」就完事 三个决定,区分了「会一直留着用的监视器」和「用一个下午就卸掉的监视器」: 1. 用快照,不用原始事件 fs.watch 只能告诉你「有东西动了」,说不出「动的是什么」。它在 Windows 上会重复触发,有时干脆不给你文件名,负载高时还会静默丢事件。直接建在它上面的监视器只能对 agent 说「有东西变了」—— 这个信息不足以让人动手。 本插件拍快照再求差。重命名、删除、突发批量变更在三个平台上都能被正确归类,每条变更还带着文件大小。fs.watch 只保留为提示尽快重扫的角色;周期性重扫才是正确性的来源。 2. 回声抑制 监视一个 agent 正在编辑的目录,有个显而易见的失效模式。agent 写 src/app.ts,监视器触发,agent 被告知 src/app.ts 变了,它去读自己刚写的文件。这一轮会平息 —— 但 agent 自己启动的构建、格式化工具或测试runner会持续写文件,每一次写入又把 agent 叫醒一次。结果是一个烧 token 的循环,读起来像是工作区被陌生人攻击了。 所以:凡是点名了某个文件的工具调用,都会记进一份短期账本;窗口内这些路径的变更会被计为已抑制而不是投递出去。窗口故意设得很短(echoWindowMs,默认 2500ms):agent 十分钟前写的文件现在变了,那是真消息。 抑制是可见的,不是静默的 —— 每批报告都会说明过滤掉了多少条事件,这样你能分清「什么都没发生」和「是 agent 自己干的」。 3. 投递方式按监视器单独选择 | mode | 调用 | 效果 | | wake(默认) | agent.followup(message) | 开启一个新回合 | | queue | agent.inject(message) | 等 agent 的下一步 | 一个随时能打断你的监视器,是没人会留着 arm 的监视器。更安静的那个选项只隔着一个参数,于是你可以为整个会话 arm 一个监视器,而不必把「打断权」一起交出去。 安装 dsh plugin add https://github.com/11111353535/dsh-folderwatch 想从本地检出装,就直接给绝对路径: dsh plugin add /absolute/path/to/dsh-folderwatch 本包故意不声明任何 dsh- peer 依赖:它只 import node: 以及 @deepseek-ai/dsh-tools、@deepseek-ai/dsh-llm、@deepseek-ai/schemastery,这些都由 harness 从自己的安装目录解析。包里不带任何可能遮蔽宿主副本的东西。 按 profile 调参,就给出现在 ~/.dsh/profiles/<profile>/cordis.patch.yml 里那一行加个 config: - insert: - id: folderwatch name: 'dsh-folderwatch' config: quietMs: 400 cooldownMs: 5000 watches: - path: E:/work/reports label: reports pattern: '/.json' prompt: Read the new report and summarise what failed. mode: wake | 键 | 默认值 | 含义 | | watches | [] | 加载时就 arm 的监视器。常规路径是在会话里用工具 arm。 | | ignore | 构建/VCS/依赖目录 | 对所有监视器生效的忽略规则,会与每个监视器自己的列表合并。 | | quietMs | 400 | 目录安静多久之后投递一批。 | | maxWaitMs | 5000 | 变更最多等多久,保证一直不安静的目录树也会被报告。 | | cooldownMs | 5000 | 同一个监视器两次投递之间的最小间隔。 | | pollIntervalMs | 1500 | 重扫目录树的间隔。 | | maxWatches | 16 | 同时 arm 的监视器上限。 | | maxEntries | 20000 | 快照条目上限,防止目录树失控。 | | echoWindowMs | 2500 | 本会话写过某个路径后,它被抑制多久。 | | maxEventsPerMessage | 60 | 一条通知里最多列出多少条事件,超出截断。 | 工具 folderwatch_add arm 一个监视器。返回 arm 报告,或者无法 arm 的原因。 | 参数 | 类型 | 含义 | | path | string(必填) | 要监视的目录。绝对路径,或相对于工作区。 | | label | string | 短名,用于列表与通知。 | | prompt | string | 追加到每条通知后的指令,例如 re-run the failing test。 | | pattern | string | 选择哪些路径被报告的 glob,例如 /.log。 | | ignore | string[] | 该监视器额外的忽略规则。像 tmp 这样的裸名会在任意层级匹配。 | | recursive | boolean | 是否下钻子目录。默认 true。 | | once | boolean | 首次投递后自动解除。默认 false。 | | mode | "wake" \| "queue" | 投递方式。默认 wake。 | | sessionId | string | 要通知的会话(不是发起调用的那个时使用)。 | dsh-folderwatch · armed "reports" root: /work/shop/reports watching: 12 file(s), 3 directories (recursive) pattern: /.json ignoring: node_modules, .git deliver: wake the agent (followup) Changes are reported in batches after the tree goes quiet, and this session's own writes are filtered out. folderwatch_list 清单:每个监视器在看什么、触发过几次、有没有待投递的变更。 dsh-folderwatch · 2 watches reports running 12 file(s) 2 delivery(ies) last fired 1m ago /work/shop/reports [/.json] inbox stopped 12 file(s) 0 delivery(ies) never fired /work/shop/inbox 3 change(s) pending delivery folderwatch_check 立刻重扫并报告变更,但不投递消息。这就是在回合中间回答「到现在有动静了吗」的办法,而不是等着被叫醒。 dsh-folderwatch · check "reports" · 3 change(s) since the last scan + /work/shop/reports/run-42.json 18KB ~ /work/shop/reports/latest.json 18KB - /work/shop/reports/run-41.json (4 further event(s) were this session's own writes) This was a check: the snapshot advanced and no message was delivered. folderwatch_fire 不等安静期,立刻投递某个监视器待处理的变更。用于确认投递链路通不通,或者明知这一批已经完整、再等只是白加延迟。没有待处理内容时会直说,并且什么都不发。 folderwatch_remove 解除监视并释放文件句柄。会报告它 arm 期间投递过什么。 dsh-folderwatch · disarmed "reports" root: /work/shop/reports delivered 2 batch(es) over 7 event(s) while armed filtered 4 event(s) that were this session's own writes 斜杠命令 /watch # 清单 /watch add ./reports --pattern '*/.json' # arm,会叫醒 agent /watch add ./build --queue # arm,等到下一步 /watch add ./inbox --once # 首次投递后自动解除 /watch check reports # 重扫但不投递 /watch fire reports # 立刻投递 /watch rm reports # 解除 行为说明 - 批量合并。 变更先攒着,直到目录安静了 quietMs,或者已经等了 maxWaitMs,然后作为一条消息投递。cooldownMs 间隔防止一个反复变化的目录树产生消息洪流。 - Windows 上的递归。 平台支持时用 recursive: true 的 fs.watch,不支持时回退为轮询遍历。arm 报告会写明实际用的是哪条路径(watch+poll、poll 等)。 - 快照上限。 目录树超过 maxEntries 会产生部分快照;arm 报告会明说,而不是悄悄少报。 - 不可读目录会被计数并在 arm 报告里点名(最多三个),而不是让整个监视失败。 - 生命周期。 监视器以 effect 注册,卸载插件会关闭所有句柄。从配置在加载时 arm 的监视器仍然需要一个活着的 agent 来投递;它通过 session controller 按 sessionId 解析。 - 删除。 目录消失会带走它的子项;求差时会裁剪嵌套删除,所以删掉一个文件夹是一条事件,而不是每个文件一条。 开发 npm test # 110 个单测,不需要 harness npm run test:live # 针对临时目录的 4 个真实监视场景 npm run setup:deps lib/ 是无构建步骤的纯 ESM JavaScript。单测覆盖纯模块 —— glob 编译、快照求差、批量合并、回声路径提取,以及所有渲染器 —— live 测试覆盖 fixtures 覆盖不到的部分:真实的 fs.watch 加轮询循环能发现外部写入、抑制本会话自己的写入、正确归类删除、并按 pattern 过滤。 dsh-folderwatch live check · win32 ✓ delivered after an external write: external.txt ✓ suppressed this session's own write ✓ classified a deletion correctly ✓ applied the pattern filter 4/4 scenarios passed setup:deps 会把 lib/ 用到的宿主包(cordis、dsh-tools、dsh-llm、schemastery)链接进本地 node_modules,让一份裸检出也能跑测试。如果 harness 不在标准位置,设置 DSH_HOST_NODE_MODULES。 许可 MIT
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
11111353535/dsh-folderwatch
目录一有改动就带着变更清单唤醒 agent
相关插件 · 开发 / 工程
隐私简历生成器reactive-resume/reactive-resume
Reactive Resume 已迁至 GitHub 上的…
★ 45,125已汉化MCP
71.7
AI 架构文档生成器sopaco/deepwiki-rs
🚀 Litho 已进化为 Terrain —— 给你的 AI 智能体一张会呼吸的代码库地图。
★ 3,157已汉化DSH
70.8
长时任务执行闭环AMAP-ML/LongHorizon-Harness
面向 Computer-Use Agent 的 Loop Engineering
★ 1,764已汉化DSH
70.5
AI 编程纪律方法包GanyuanRan/Aegis
让 AI 编程 agent 变得可信:少返工、更安全、说“完成”前先给证据。
★ 1,384已汉化DSH
69.6
多代理编排运行时Enderfga/claw-orchestrator
面向编程智能体的运行时。把 Claude Code、Codex、Antigravity、Grok…
★ 586已汉化MCP
69.4
记忆进化插件csyangwen/dsh-memory-evolve
dsh-memory-evolve 使用场景指南
★ 461已汉化DSH
67.9