Skip to content

Feature Request: 增加 JSON / 纯文本格式导出功能(Export as JSON / Plain Text) #735

Description

@yandujun363

问题描述

感谢开发团队持续维护 Project Graph,这款工具在体积控制和操作流畅度上表现出色,令人印象深刻。

目前我注意到:

  • 项目文件格式为 .prg(实际是包含 .msgpack 二进制文件的 ZIP 压缩包)
  • 导出功能仅支持 SVG(渲染后的图像),不提供结构化数据的导出选项

这给用户带来了以下实际困扰:

  1. 无法进行版本控制:二进制格式无法用 Git 追踪变更(diff 对比失效)
  2. 无法进行 AI 辅助分析:无法将节点、连线、属性等结构化数据直接喂给大模型(如 Claude/ChatGPT)进行批处理或逻辑分析
  3. 数据迁移困难:用户无法将数据迁移到其他绘图工具(如 Mermaid.js、Obsidian Canvas、Draw.io 等)
  4. 无障碍使用受限:视障用户依赖纯文本解析,二进制格式无法被辅助工具读取

技术可行性

程序在运行时,内存中必然存在完整的结构化对象(节点、连线、坐标、属性、样式等),只需调用标准的序列化方法(如 JSON.stringify())即可完成导出,实现成本极低。MsgPack 的序列化/反序列化代码已经存在,反向输出 JSON 是相同量级的工作量。

建议方案

File > Export 菜单中,与现有 SVG 并列增加一个选项:

  • Export as JSON (.json) — 纯文本格式,包含所有节点、连线、元数据
  • 或至少提供 Export as GraphML / XML 等标准交换格式

如果担心 JSON 体积过大,可以提供“压缩 JSON”或“仅导出关键字段”的子选项,但核心是必须提供人类可读的纯文本结构化导出

额外参考

GPLv3 第 1 条对“源代码”的定义是:“进行修改时首选的工作形式”(preferred form of the work for making modifications to it)。当前 MsgPack 格式作为二进制对象代码,限制了用户修改、分析、迁移作品的权利。如果项目希望继续遵循 GPL 精神,提供纯文本导出是必要的一步。

请问

  • 团队是否计划在近期(如 v2.x / v3.x)增加 JSON 导出功能?
  • 如果目前没有计划,主要原因是什么?(技术考量?性能?还是路线图优先级?)

感谢团队的时间和考虑!期待 Project Graph 成为一款不仅在性能上卓越,在数据自由上也同样卓越的工具。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions