常驻监听项目改动,自动重建知识图谱
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/4 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add joslynSmall/dsh-plugin-graphify-watch该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · dev
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 27 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件
查看扫描证据(共 21 处,展示前 21 条)
- 读取本地文件src/index.js:41
const isFile = p => { try { return statSync(p).isFile() } catch { return false } } - 读取本地文件src/index.js:55
if (!statSync(root).isDirectory()) return 'not a directory' - 读取本地文件src/index.js:58
if (statSync(join(root, 'graphify-out', 'graph.json')).isFile()) return null - 读取本地文件src/index.js:79
: (existsSync(join(process.cwd(), 'graphify-out', 'graph.json')) ? [process.cwd()] : []) - 执行外部命令来自配置/变量src/index.js:114
child = spawn(command.executable, command.args, { - 写入本地文件src/ownership.js:37
mkdirSync(LOCK_DIR, { recursive: true }) - 写入本地文件src/ownership.js:39
writeFileSync(join(candidate, ownerFile), 'idle ', { flag: 'wx' }) - 读取本地文件src/ownership.js:43
if (existsSync(file) && !statSync(file).isDirectory()) { - 读取本地文件src/ownership.js:43
if (existsSync(file) && !statSync(file).isDirectory()) { - 读取本地文件src/ownership.js:44
const owner = Number(readFileSync(file, 'utf8').trim()) - 写入本地文件src/ownership.js:51
renameSync(candidate, file) - 读取本地文件src/ownership.js:57
if (!existsSync(file)) throw error - 读取本地文件src/ownership.js:59
const entries = readdirSync(file) - 删除本地文件src/ownership.js:61
try { rmdirSync(file) } catch (error) { - 读取本地文件src/ownership.js:74
try { activity = readFileSync(join(file, entries[0]), 'utf8').trim() } catch (error) { - 删除本地文件src/ownership.js:83
try { unlinkSync(join(file, entries[0])) } catch (error) { - 删除本地文件src/ownership.js:86
try { rmdirSync(file) } catch (error) { - 删除本地文件递归src/ownership.js:96
try { rmSync(candidate, { recursive: true, force: true }) } catch { } - 写入本地文件src/ownership.js:104
writeFileSync(join(lock.file, lock.ownerFile), active ? 'active' : 'idle ', { flag: 'r+' }) - 删除本地文件src/ownership.js:109
unlinkSync(join(lock.file, lock.ownerFile)) - 删除本地文件src/ownership.js:114
rmdirSync(lock.file)
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 常驻监听项目改动
- 自动重建知识图谱
DeepSeek Harness 插件:每个项目盯一个 `graphify watch`,代码一改就自动重建 graphify 知识图谱,不管改动来自哪里。
README
由 DeepSeek 最新模型翻译生成dsh-plugin-graphify-watch
为每个配置的根目录保持一个 graphify watch 进程常驻,代码一改就自动重建 graphify 知识图谱——不管改动是谁做的:DSH 文件工具、外部编辑器、shell 命令,还是 git checkout。
为什么要托管进程,而不是自己检测
graphify watch 本身已经管住了整套判断逻辑:扩展名过滤、.graphifyignore、跳过点目录和 graphify-out/、批量防抖、代码与文档的分流、删除驱逐,以及 needs_update 标记。而且只有盯着真实文件系统,才能看到 DSH 自己没做的改动——harness 的 workspace/changes 信号来自 git 快照加文件工具捕获,纯 shell 编辑它根本看不见。
所以这个插件不做任何检测。它只管生命周期:启动、记日志、崩溃后重启、卸载时杀掉整棵进程树。
展开完整文档(README 剩余 1 节)
dsh-plugin-graphify-watch 为每个配置的根目录保持一个 graphify watch 进程常驻,代码一改就自动重建 graphify 知识图谱——不管改动是谁做的:DSH 文件工具、外部编辑器、shell 命令,还是 git checkout。 为什么要托管进程,而不是自己检测 graphify watch 本身已经管住了整套判断逻辑:扩展名过滤、.graphifyignore、跳过点目录和 graphify-out/、批量防抖、代码与文档的分流、删除驱逐,以及 needs_update 标记。而且只有盯着真实文件系统,才能看到 DSH 自己没做的改动——harness 的 workspace/changes 信号来自 git 快照加文件工具捕获,纯 shell 编辑它根本看不见。 所以这个插件不做任何检测。它只管生命周期:启动、记日志、崩溃后重启、卸载时杀掉整棵进程树。 每个根目录的行为 | 根目录状态 | 插件行为 | | 有 graphify-out/graph.json | 启动 graphify watch <root> | | 没有 graphify-out/graph.json | 跳过,并打一行日志提醒你先在那里跑 /graphify | | 本进程已在监听 | 跳过(this process already watches it) | | 别的进程已在监听 | 跳过(already watched by process <pid>) | 改代码会重建 graph.json + GRAPH_REPORT.md,不调用 LLM。改文档、PDF、图片不动图谱,只写 graphify-out/needs_update;插件会把这一行显示出来,并提醒你跑 /graphify --update。 配置 | key | 默认值 | 含义 | | enabled | true | 设为 false 保留该行但不启动任何东西 | | roots | [] | 要监听的绝对项目路径。留空表示「用宿主工作目录,且仅当它已被索引」——实际使用中请显式设置 | | exePath | "" | graphify 的显式路径;留空则搜索 PATH | | maxRestarts | 3 | 放弃前的连续重启次数(指数退避,上限 60 s) | | restartBackoffMs | 2000 | 首次退避延迟 | | logRebuilds | true | 记录 watcher 的每一行输出;一次性的就绪横幅始终记录 | 在 ~/.dsh/profiles/desktop/cordis.patch.yml 里覆盖这一行,指向你的项目。覆盖会替换该行整个 config,所以想保留的字段都要重新写一遍: - id: graphify-watch name: dsh-plugin-graphify-watch config: enabled: true roots: - C:\Users\Administrator\Documents\my-project exePath: "" maxRestarts: 3 restartBackoffMs: 2000 logRebuilds: true 安装 desktop 配置档留给 Electron 外壳,所以普通的 npm dsh 命令行拒绝管理它。请用应用。 1. 打开侧边栏的 Plugins 页面。 2. Add plugin → C:\documents\dsh\dsh-plugin-graphify-watch(接受绝对本地路径)。 3. 启用 dsh-plugin-graphify-watch 包。 4. 重启 DSH。 添加 file: 依赖链接需要重启进程—— Node 会缓存真实路径。 如果 UI 路径不可用,可以手动操作(在配置档目录下运行,也就是 pnpm 项目): cd ~\.dsh\profiles\desktop add to dependencies: "dsh-plugin-graphify-watch": "file:C:/documents/dsh/dsh-plugin-graphify-watch" append to dsh.profile.bundles: "dsh-plugin-graphify-watch" node "C:\Users\Administrator\AppData\Local\Programs\DeepSeek Harness\resources\runtime\pnpm\bin\pnpm.cjs" install then restart DSH 验证 the watcher should be running (a graphify.exe plus its Python child) Get-CimInstance Win32_Process -Filter "Name='graphify.exe'" | Select-Object ProcessId,CommandLine touching a real symbol must rewrite the graph Add-Content <root>\src\thing.py "ndef probe():n return 1n" (Get-Item <root>\graphify-out\graph.json).LastWriteTime 只改注释不算:graphify 会如实报告 No code-graph topology changes detected; outputs left untouched。 值得了解的行为 - 防抖用的是 graphify 自带的 3 秒。 --debounce 只存在于模块入口点(python -m graphify.watch),graphify 命令行上没有,所以这个插件不假装能配置它。 - 文档层仍然手动。 刷新文档、PDF 和图片需要跑一遍 LLM,所以它仍然是显式的 /graphify --update。自动化是可行的(用无头 graphify extract --backend 对接本地 OpenAI 兼容端点),但无人值守时会消耗 token,所以这里刻意不做。 - 一个根目录只有一个属主。 %TEMP%\dsh-graphify-watch 下的锁文件记录属主 pid,所以两个 DSH 窗口不能同时改写同一个 graph.json —— graphify 写入是原子的,但不持有跨进程锁,而且它的收缩保护会拒绝失败一方的写入。 - 清理会杀掉整棵进程树。 uv tool install 装出来的 graphify.exe 是个启动器,会把 venv 里的 Python 作为子进程拉起,所以插件在 Windows 上用 taskkill /T /F,而不是只杀启动器。 - 无依赖,无构建步骤。 插件刻意不用 @deepseek-ai/schemastery,所以它不声明 peer 范围,也不会被 DSH 的版本兼容门拦下。 测试 两个测试都独立运行,针对真实的临时项目,不需要 DSH。 node test/smoke.mjs <root> # start, code rebuild, doc flag, teardown node test/resilience.mjs <root> # crash restart, duplicate-root refusal, lock 卸载 在 Plugins 页面禁用 bundle(或删掉那一行),然后重启 DSH。插件的 ctx.effect 清理器会停掉它启动的每个 watcher,不会留下任何 graphify 进程。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
joslynSmall/dsh-plugin-graphify-watch
常驻监听项目改动,自动重建知识图谱
相关插件 · 开发 / 工程
隐私简历生成器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