← 返回项目
README.md

DSH-Graphify

将开源 Graphify 的代码知识图谱集成进 DeepSeek Harness(DSH)Desktop:本地索引代码,在右侧栏查看原版交互式图谱,并让 DSH Agent 根据自然语言调用图谱查询工具。

当前版本:0.9.2 Beta。 核心代码建图和原版关系网络已接入;树状图、调用流程与多项高级 CLI 能力已提供入口。Windows / Linux CI 为接口及逻辑测试,不等于全部功能都已通过真实 DSH Desktop 端到端验收。详细覆盖范围与待完成项目见 MIGRATION.md。

功能

分类 当前能力
本地代码图谱 自动建立及更新 Graphify graphify-out/graph.json;默认 --code-only,不调用 AI
图谱展示 右侧栏原版 vis-network 关系网络、节点搜索、社区图例与详情;可选择原版树状图和调用流程 HTML
主题 关系网络默认跟随系统亮暗主题;保留 Graphify 原版手动主题选择
更新策略 默认停止编辑 20 秒后更新,连续两次自动更新至少间隔 180 秒;Agent 手动建图与后台索引共享同一项目任务队列,避免并行扫描;后台更新不立即重置关系网络,切换侧栏标签再返回保留画面
Agent 代码分析 项目架构、节点解释、依赖路径、静态影响分析;对动态依赖与共同入口的候选关系标明局限
诊断与导出 图谱节点/边统计、孤点和缺失端点、原版多重图诊断、Wiki / Obsidian / GraphML / HTML 导出
高级工作流 Git Hook、PR、社区重聚类、图谱合并/全局登记、记忆/反思、克隆/导入资料等受控操作
可选能力 显式安装官方 Graphify extras、配置后端执行语义提取;默认不启用、不主动上传源码

图谱视图说明: 首次打开关系网络会加载 graphify-out/graph.html。树状图与调用流程需要先分别生成 GRAPH_TREE.html 和 GRAPH_CALLFLOW.html,在 DSH 中让 Agent 使用 graphify_view 对应选项生成,再从右侧栏选择视图;这些原版 HTML 的 JavaScript 仍需访问对应 CDN。找不到视图文件不代表代码图谱为空。

安装

环境

  • DSH Desktop / Web 0.2.x,包含右侧栏和 workspaceFiles Remote;需要 DSH Host Node.js 22+。
  • 首次本地索引会从 GitHub Releases 下载校验后的 uv,并从 PyPI 安装固定版本的 graphifyy 0.9.92。需要联网;日常建图不调用大模型。
  • Windows 缓存目录:%LOCALAPPDATA%\DSH-Graphify\engine-v2;macOS / Linux 使用用户缓存目录。不会修改系统 Python 或 PATH。

Desktop 安装

打开 DSH Desktop → 插件 → 安装插件,输入:

github:Jov3c/DSH-Graphify

安装后重启 DSH Desktop。已有版本可在插件管理器里重新安装同一来源并重启。仓库包含预构建的 lib/,正常安装无需手动编译。

可选的 CLI 安装方式(Desktop Profile):

dsh plugin --profile desktop add github:Jov3c/DSH-Graphify

使用

  1. 在 DSH 中打开一个已授权的本地项目会话。插件检查 graphify-out/,按设置自动索引代码并更新状态。
  2. 打开右侧 Graphify 标签。关系网络使用 Graphify 原版 HTML,在受限的 iframe 中运行。
  3. 可直接向 Agent 提问,例如:“分析这个项目的模块结构”“登录模块与数据库怎么联系”“修改登录流程可能影响哪些测试”。插件提供原生工具与项目级提示,但是否实际调用由模型和工具权限决定。
  4. 新图谱生成时,关系网络只提示加载最新图谱,不自动清空你的缩放、位置和筛选。手动刷新会加载新图谱并重置布局。

手动重建:在同一项目中,Agent 显式调用 graphify_build 会复用正在执行的自动索引,避免重复运行。禁用后台扫描时仍可手动建图,扫描结果与错误会更新右侧状态区;失败不会被报告成成功。

主要原生 Agent 工具

工具 用途
graphify_build 建立或更新本地代码图谱
graphify_query / graphify_explain 自然语言检索、解释类或函数
graphify_path / graphify_affected 跟踪关系、分析变更影响;需结合源码核实
graphify_health 检查图谱规模、索引时间及静态结构异常
graphify_view 生成关系网络 / 树状图 / 调用流程原版 HTML
graphify_export 导出 Wiki、Obsidian、GraphML 等
graphify_workflow / graphify_pr 查看 Git/PR 状态、冲突及可选分诊
graphify_git / graphify_cluster 显式管理 Git Hook、社区聚类
graphify_merge / graphify_global 显式合并与登记图谱
graphify_memory 保存查询结果并归纳经验
graphify_dependencies / graphify_semantic 安装官方可选依赖、授权后进行语义抽取
graphify_add / graphify_clone 授权后导入外部资料或克隆 GitHub 项目

工具入口的存在不表示所有 Graphify 可选依赖、外部服务和后端均已在 Desktop 上完成验证。

设置与安全

右侧 Graphify → 设置 提供以下选项:

  • 自动更新:自动、仅打开项目、手动或关闭;扫描防抖 5–120 秒、最短间隔 30–900 秒,默认 20 秒 / 180 秒。
  • Agent 工具建议:智能使用、仅明确要求、关闭主动使用。不会在普通聊天中强制查询图谱。
  • 项目范围:当前本地项目会话或指定目录白名单;支持排除规则,并尊重 Graphify 自身的忽略配置。
  • 高级本地操作、联网/AI 操作:两者默认关闭。涉及安装 Git Hook、图谱合并、外部下载、AI 调用或付费 API 的工具受相应权限控制,普通自动代码扫描不触发这些操作。

工具在 DSH 工作区策略根目录内解析真实路径;Node 子进程使用固定命令参数并禁用 Shell 拼接。图谱 HTML 在不授予同源权限的隔离 iframe 中执行,外部脚本仅允许经过校验的原版引用。不要把机密资料提交到图谱输出或外部后端,使用语义分析前应先审核模型服务的隐私与费用设置。

已知限制

  • 图谱的静态导入、调用关系不能完整证明事件、回调、反射、依赖注入等运行时影响范围;影响分析需回到源码与测试核实。
  • 原版关系网络、Tree、Call Flow 的 HTML 依赖对应第三方 JS CDN,无法保证纯离线显示。
  • Graphify MCP 目前通过 MCP_SETUP.md 手动配置,尚无插件内一键连接和端到端验收。
  • Neo4j / FalkorDB 等数据库写入、所有可选媒体解析器、Graphify Guard/Hook 体系的 DSH 深度接入仍未完成;细节见 MIGRATION.md。
  • 当前适配以 Graphify 0.9.92 为基准;上游版本变更后需要做兼容性测试。

开发与验证

npm run check

这将根据 src/ 构建 lib/,并运行 Node.js 测试。入口:src/index.js(Host / Agent 工具)、src/auto.js(会话与索引)、src/runtime.js(引擎安装)、src/capabilities.js(官方 CLI 集成)、src/client.js(右侧栏)。提交前保持 src/ 与预构建 lib/ 一致。

相关文档

License

本插件采用 MIT License;Graphify 本身由上游项目独立授权。