dsh-plugin-graphify-watch:为每个项目自动重建 Graphify 知识图谱

前言

DeepSeek Harness(DSH)的生态理念是「一切皆插件」。在使用 Graphify 构建知识图谱时,如果通过外部编辑器或命令行修改了代码,DSH 的 workspace/changes 信号通常无法感知这些变化。graphify watch 原生支持监听文件变化并自动重建图谱,但需要一个长期运行的进程来维护它。dsh-plugin-graphify-watch 专为解决这一问题设计,它接管了 graphify watch 的进程生命周期管理,确保代码变更能自动触发图谱重建。

核心功能

该插件专注于进程管理,而非文件检测。

  1. 进程托管:为每个配置的项目根目录启动并维护一个 graphify watch 进程。
  2. 自动恢复:进程崩溃后,使用指数退避策略(最大延迟 60 秒)自动重启。
  3. 状态过滤:
    • 如果项目根目录下不存在 graphify-out/graph.json,插件会跳过启动并提示先运行 /graphify。
    • 如果已被当前进程监视,则跳过;如果已被其他进程监视,也会跳过以避免冲突。
  4. 变更处理:
    • 代码变更:触发 graph.json 和 GRAPH_REPORT.md 的重建。
    • 文档/图片变更:不直接重建图谱,而是写入 graphify-out/needs_update 标记,提示手动运行 /graphify --update。
  5. 资源清理:插件卸载时会终止整个进程树,防止残留进程占用资源。

安装与启用

由于该插件依赖本地绝对路径且包含依赖链接,需要通过 DSH 应用程序进行安装,而非 dsh CLI。

  1. 打开 DSH 应用程序的侧边栏,进入 Plugins 页面。
  2. 点击 Add plugin,输入插件的本地绝对路径:C:\documents\dsh\dsh-plugin-graphify-watch。
  3. 在插件列表中找到 dsh-plugin-graphify-watch,启用对应的 bundle。
  4. 重启 DSH。添加本地文件依赖需要重启进程以清除 Node 的路径缓存。

典型用法

安装后,你通常需要在配置文件中指定要监视的项目路径。

# 在 ~/.dsh/profiles/desktop/cordis.patch.yml 中覆盖配置
- 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

验证进程是否正常运行:

# 在 PowerShell 中检查 graphify.exe 进程
Get-CimInstance Win32_Process -Filter "Name='graphify.exe'" | Select-Object ProcessId,CommandLine

触发重建:

# 修改源码文件以触发代码重建
Add-Content <root>\src\thing.py "`ndef probe():`n    return 1`n"
# 此时 graph.json 的时间戳应更新
(Get-Item <root>\graphify-out\graph.json).LastWriteTime

适用场景与注意

  • 适用场景:当你需要将 Graphify 集成到非 DSH 环境的工作流中,或希望代码修改能自动反映在知识图谱上时使用。
  • 不负责检测:该插件只管理进程的启动、重启和销毁,不负责文件系统变化检测。实际的检测和去抖动逻辑(默认 3 秒)由 graphify watch 内部处理。
  • 文档更新策略:插件故意不自动处理文档层的更新(如 PDF、图片),因为这通常需要消耗 LLM Token。它仅标记 needs_update,由你决定何时运行 /graphify --update。
  • 无依赖:插件不依赖 @deepseek-ai/schemastery,因此不会因为 DSH 的版本兼容性检查而被拦截。
  • 进程终止:在 Windows 上,graphify.exe 是启动器,实际 Python 进程是子进程。插件使用 taskkill /T /F 终止整个树,确保彻底清理。

总结

dsh-plugin-graphify-watch 通过接管 graphify watch 的进程生命周期,解决了外部编辑器修改代码后图谱不同步的问题。它以零依赖、轻量级的方式,让代码变更能够自动反映在知识图谱中。你可以通过目录链接获取源码:joslynSmall/dsh-plugin-graphify-watch。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye