指南
纯本地代码分析:工作原理,以及什么会离开你的机器
浏览器工具如何在不上传任何代码的情况下解析整个仓库——File System Access API、标签页内的 WebAssembly——以及该工具发出的每一个网络请求的完整清单。
你的代码从不离开标签页
当你选择一个文件夹时,浏览器把对这些文件的读取权限交给页面——Chromium 上是 File System Access API,其他浏览器是传统的文件夹选择框。字节被读入标签页内存。解析器是由 tree-sitter 编译的 WebAssembly,在你的 CPU 上执行。不存在上传端点;你的代码无处可去。
这是可验证的,不是口号:打开 DevTools → Network,过滤出「不是发往本域名」的请求,然后使用工具。列表保持为空。页面的 Content-Security-Policy 在浏览器层面强制执行这一点——不允许任何第三方源,所以即使页面代码被攻破,你的工作成果也无处可送。
应用发出的每一个网络请求
完整清单如下。其余一切都离线发生在你的标签页里:
- 应用自身的 HTML、脚本、样式、图标——来自本域名。
- tree-sitter 语法文件(.wasm),你启用的每个语言包一个——来自本域名,缓存一年。
- /config.json——运行时开关(速率限制镜像、功能开关)——来自本域名。
- /api/abuse——公平使用计数器:分析次数和最多八个语言名称。绝不含路径、符号、查询或内容;服务器不记录请求体。
- /api/session——仅当你按下「在另一台设备上继续」:一份 AES-256-GCM 加密的、仅含结构的快照,解密密钥保存在 URL 片段中,永远不会到达任何服务器。
「仅结构」对会话同步意味着什么
传输功能的存在,是因为人们会在任务中途换设备。传输的是分析报告——文件路径、符号名、行号范围、依赖边、设置、聚合统计。绝不传输的是:文件内容。快照格式正是由这种「缺席」定义的;它不是事后补上的政策。
报告会被压缩,在你的设备上用随机的 256 位密钥加密,然后以不透明数据块的形式存储在服务器上,挂在一个随机的 128 位 id 下,14 天后自动过期。密钥只存在于你复制的链接的 URL 片段中:片段不会发送给服务器、不出现在日志里,而且接收设备一消费完,应用就会把片段从地址栏抹去。
这套架构不承诺什么
任何诚实的架构都有边界。你的 IP 地址会在 Cloudflare 边缘被处理——所有位于 Cloudflare 之后的站点都如此,而且公平使用计数器以它的哈希为键。语法文件的下载会让 CDN 聚合地知道哪些语言包被获取过。这两点事实都在隐私政策中披露,并附有法律依据。
而一旦导出,bundle 就属于你:把它粘贴给某个 AI 提供商,它就落入该提供商的条款——他们可能保留你提交的内容,或用于训练。这个工具努力让那条边界可见,因为比隐私边界更糟的,只有一条你看不见的边界。