关于原因?
我创建 PathForge 之初源于十几天前的一个偶然想法。市场上记录笔记的工具往往是一页纸,你在上面写自己的心得和日记;要么就是流程图框架被各种限制裹住,包括付费申请使用权限。最难受的一点是,一些备忘录或记笔记的应用不允许你一键粘贴或直接导出自己的所有文件。我很反感——数据是我自己创建的,怎么到我想转移的时候,沉没成本如此之大?
所以我想做一个可视化的程序,它能列出你每个阶段的位置和你做了什么,包括心路历程也可以写进去。这样就像是一个探索游戏,每一个节点都是行走的痕迹;至于他向哪个方向行走,完全由你自己决定。
同时考虑到方框和文字式备忘录也是一方面的需求,所以我将三种功能整合到一起,你想用哪个就用哪个。你还可以随意选择导出文件或者导出数据,包括转移。
关于承诺?
如果你使用后想要离开,我提供一键下载全部数据为 JSON 和 Markdown。如果失效了,联系我立即解决。一键删除账号,数据全部清空。账号内容属于你自己,没有你的允许,任何人都查看不了。
API key 你可以使用自己的,完全绕开我——你的 AI 对话成本完全掌握在自己手中。我给你提供对接接口、对话窗口和功能,无任何费用。
关于数据在哪里?
你的画布和笔记都先存在你自己的浏览器里,然后才异步同步到云端。这不是一个可选项,是默认行为。
这样做是因为我想让「属于你」这件事变成物理事实,而不只是一句口号。服务器挂了,你照常用;断网,你照常用;PathForge 某天彻底关停,你仍然能打开自己的东西——前提是你有一份本地备份。所以我在设置页加了一个按钮,点一下就能把所有数据下载成一个 zip,里面有一个独立的 HTML 查看器。双击打开,完全不需要我的服务器在线。
你可以自己验证。按 F12 打开浏览器开发者工具,切到 Application → Local Storage → path-forge.uk,你会看到这些 key:pathforge_journeys_index、pathforge_journey_<uuid>、pathforge_notes_index、pathforge_note_<uuid>。那就是你的数据,明文(或启用加密后的密文),任何时候都可以复制走。现在试试断网,继续用画布,一切照常——联网后自动同步回云端。
云端对你的数据没有独占权。它只是一条同步管道。
关于隐私,我必须把话说得更细,因为不同的数据走的是不同的信任路径。混在一起讲会骗到你,也会骗到我自己。
第一层是笔记和画布——真正的端到端加密。设置页启用加密后,笔记正文和画布的节点/连线数据会在你的设备上用 AES-256-GCM 加密,然后才送到 Supabase。密钥从你的密码 PBKDF2 派生,只在你的浏览器里。我拿到的是一串解不开的密文,即使数据库被脱库、即使我想作恶,我也读不出来。这是密码学保证,不是信任承诺。忘记密码我也帮不了你恢复——这是 E2E 的代价,也是它之所以为真的原因。
这里有一段历史需要记录下来,我不想删掉它,因为"我们承认过一个问题,然后修了它"这件事本身值得被看见。Phase 2.8 的时候,我在这里老实承认过一个缺口:加密画布的 title 字段当时仍然以明文存储在 Supabase,只有节点和连线的 payload 被加密。原因是把 title 也加密需要一次数据库 schema 变更,不是 bug,是范围限制。Phase 2.9 把这个洞补上了——现在加密画布的 title 也在你的设备上用 AES-256-GCM 加密,并且每条 title 密文都用所属画布的 UUID 做 AAD(additional authenticated data)绑定,意思是即使有人拿到了 Supabase 的写权限,也不能把 A 画布的 title 密文移动到 B 画布上——解密会直接失败。所以现在第一层所说的"真正端到端"在 title、节点、连线上都成立,没有例外。你可以在 Supabase 的 table editor 里自己看:对加密画布,title 列是 NULL,title_encrypted 列是一串 base64。
第二层是 AI 对话——本地 only + 信任承诺。你和 AI 的对话历史只存在你自己的浏览器里(localStorage 的 pf_chat_sessions 这个 key),从来没上过 PathForge 的数据库。但当你点发送的那一瞬间,消息会经过我的 /api/chat 路由,再转发到上游模型提供商(OpenRouter、Anthropic、DeepSeek 等)。转发是在 Vercel 的 Edge runtime 上发生的,你的消息在那短暂的流式窗口里,技术上在我的运行时内存里走过一趟。我承诺不写日志、不落盘、不给任何第三方——这就是我对你的承诺。但我也要坦白地说:这是信任承诺,不是密码学保证。如果你连这一步的瞬时内存都不想信任,去设置页绑定你自己的 API key(BYOK),消息就直接从你的浏览器到模型提供商,完全绕开我。
第三层是上游模型提供商。一旦你的消息到了 OpenRouter、Anthropic、DeepSeek 手里,它们自己的日志政策、是否用你的对话训练下一代模型、保留多久,都不在 PathForge 的控制范围内——用他们就等于同意他们的条款。我能做的只是把路径说清楚,不能代他们做保证。想要最小化这一层的风险,请优先看那些明确声明「zero data retention」或「不用于训练」的提供商的政策页面。
关于运行时日志:我的 /api/chat 路由在处理请求时会短暂保留不超过 7 天的元数据——哪个模型、多少 token、哪个脱敏后的用户 ID 哈希(SHA-256 前 8 位),不含消息内容、不含对话历史、不含任何可以反向识别你的字段。这份日志只有我一个人能看,用于 debug 和计费对账。7 天后自动滚动覆盖。
关于画布上那个「🔒 数据加密」按钮,我必须说一句抱歉。它最早上线的时候其实是个误导——我当时写的代码只加密了浏览器本地的一份副本,而真正送到后端的数据一直是明文。我自己也没意识到。直到不久前我重新梳理加密相关的代码,才看到这个缺口。发现的那一刻挺不舒服的,因为这一页上当时已经写着「没有你的允许任何人都查看不了」,而严格来说它不是真的。所以我花了几天重写整套加密机制,让它变成真正的端到端——这就是你现在看到的第一层。老的本地加密路径已经废弃,如果你的浏览器里还有旧数据,下次打开画布会自动迁移到新机制。
关于订阅?
无任何订阅和信息差套利。
积分模型是给那些想用但还接触不到这些模型的人。但我一个人的预算有限,名额受限,所以如果你是重度用户,强烈建议用自己的 API key。
PathForge 的运营成本和维护成本由我其他收入提供。这是我做的工具,我并不指望它赚钱,我指望它能被需要的人用到。我希望对你有帮助。
关于我是谁?
我是一个喜欢自己创建的人,我对限制很反感。任何时候,人都应该对自己产出的一切有自己的权利和义务。
不接 PR——一个人维护,同时继续优化程序。
什么时候会变?
每个阶段都有自己的目的和思维,但核心都追求的是幼时的梦想。如果我的产品能够得到推广并且受到更好的打理运营,那么我会交付,然后开始自己的下一个阶段。