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

图谱监听守护 joslynSmall/dsh-plugin-graphify-watch

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

常驻监听项目改动,自动重建知识图谱

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
装得上吗
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 27 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
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 进程。
预览分享卡片长什么样 ↓joslynSmall/dsh-plugin-graphify-watch
分享 · DeepSeek Harness Hub
joslynSmall/dsh-plugin-graphify-watch

常驻监听项目改动,自动重建知识图谱

回到顶部