安装安全吗?¶
Claude Code 和 Codex 的插件可以在你的电脑上运行代码,所以值得一问。某些恶意插件在安装时看起来无害,之后却会下载并运行其他东西(即“第二阶段”)。Floorplan 的构建方式使它无法做到这一点;每次变更时都有测试检查,而且你可以亲自确认这一切。
Floorplan 绝不做什么¶
- 没有钩子(hooks)。 钩子会在每个会话的事件中自动运行代码,这使得它们成为常见的隐藏位置。Floorplan 没有任何钩子。
- 没有 MCP 服务器。 Floorplan 没有任何 MCP 服务器,因此它绝不会启动一个会通过
npx下载最新版本的服务器。 - 没有依赖项,也没有安装脚本。 安装时或之后,任何东西都不会来自 npm。它的
package.json仅用于运行测试。 - 绝不下载任何内容,也绝不运行来自互联网的代码。 没有
eval,没有在运行时加载代码,也没有编码后的载荷。 - 绝不更改你的代码。 它只写入自己的
floorplan/文件夹,以及在 Claude Code 中写入CLAUDE.local.md的一个标记部分。参见 你的项目中有什么。 - 没有分析或跟踪功能。
它做的一切¶
网络¶
- 地图服务器(
floorplan/serve.mjs)只监听127.0.0.1,因此其他机器无法访问。它只在自己的端口上响应127.0.0.1和localhost,并且其 API 需要一个只有地图页面才能收到的令牌。 - 一个出站请求:Floorplan Cloud 候补名单,仅当你在地图上的卡片中输入电子邮件并点击加入时才会发送。它发送到
floorplan-waitlist-690500262396.us-central1.run.app,并携带你的电子邮件以及“仅我自己”或“与我的团队”。详情参见 隐私与安全。 - 地图页面不从互联网加载任何内容。 其布局引擎和字体都内置在文件中。它只链接到文档,点击时才会打开。
在地图上提问会运行 Claude Code 或 Codex,它们会像往常一样通过你的账户与 Anthropic 或 OpenAI 通信。Floorplan 本身不发送任何内容。
它运行的程序¶
| 程序 | 时机 | 原因 |
|---|---|---|
git |
扫描 | 只读:哪些文件被跟踪、当前分支和提交、自上一张地图以来发生了什么变化 |
where(Windows)或 which |
启动地图服务器 | 定位 Claude Code 或 Codex CLI |
claude 或 codex |
当你在地图上提问时 | 以只读方式回答:claude -p 仅限读取文件和 Floorplan 的查询脚本,或 codex exec --sandbox read-only |
node |
全程 | 运行 Floorplan 自己的脚本 |
cmd /c start、open 或 xdg-open |
打开地图 | 在浏览器中打开地图的本地地址 |
每个程序都是直接使用其参数启动的,绝不会作为可供 shell 解释的命令行。唯一的 shell 是 Windows 的 cmd /c start,且只传入地图自身的本地地址。
无需询问即可运行的内容¶
在 Claude Code 中,当技能被使用时,它会预先批准一种命令:node 运行其自己的一个脚本(scripts/build.mjs、describe.mjs、open.mjs、plan.mjs、recent.mjs、refresh.mjs、scan.mjs 和 status.mjs)。该列表由下面的测试固定。除此之外,Claude 所做的任何其他事情都会像往常一样根据你的权限设置征求同意。Codex 则根据你的批准设置征求同意。
三件值得解释的事情¶
skills/floorplan/assets/vendor/elk.bundled.js是一个 1.6 MB 的压缩文件:用于布置地图的布局引擎。它是 elkjs 0.9.3,与 npm 上的官方包逐字节相同。其 SHA-256 为b0745abd7f23cd91690a1587e377edbe19fd7233c783300290936720546216d4。要自行验证: 然后将package/lib/elk.bundled.js与 Floorplan 的副本进行比较,例如使用sha256sum(macOS:shasum -a 256;Windows PowerShell:Get-FileHash)。serve.mjs中的一个new Function从floorplan/query.mjs加载地图的查找代码,该文件是 Floorplan 的构建过程写入你项目的文件。它绝不运行来自网络的任何内容。- Health 会读取它找到的令牌的中间部分(将其从 base64 解码),以判断每个令牌的类型,从而跳过那些按设计公开的令牌。它绝不会存储或显示令牌本身。
每次变更都会检查¶
tests/supply-chain.test.mjs 会在每次推送和拉取请求时运行,涵盖 Linux 和 Windows(以及每周的 macOS)。如果变更会导致以下情况,它就会失败:
- 添加钩子、MCP 服务器、依赖项或安装脚本;
- 向地图自身服务器和候补名单以外的任何地方发送请求;
- 启动上表中未列出的程序,或通过 shell 启动程序;
- 使用
eval、在运行时加载代码,或在代码中隐藏长编码字符串; - 添加无需询问即可运行的脚本;
- 更改捆绑的布局引擎,或添加第三方文件。
每一项检查都通过故意植入同类变更并观察其失败来验证。对这些内容的任何更改都必须连同测试和本页面一起公开修改。
要在你自己的副本上运行相同的检查:
检查你安装的副本是否是真版发布¶
每个版本都包含 CHECKSUMS.txt:即插件运行时所用每个文件(技能、插件清单和 marketplace 文件)的 SHA-256 指纹。要将你安装的副本与 GitHub 上的版本进行比较:
git clone --depth 1 --branch floorplan--v<version> https://github.com/haydenschmitty/floorplan floorplan-check
node floorplan-check/tools/checksums.mjs --check <installed folder>
<version> 是你拥有的版本(claude plugin list 或 codex plugin list 会显示它)。安装文件夹是:
- Claude Code:
~/.claude/plugins/cache/floorplan/floorplan/<version> - Codex:
~/.codex/plugins/cache/floorplan/floorplan/<version>
它会输出“所有文件均相同”,或者哪些文件被更改、多余或缺失。
诚实的局限¶
- Claude Code 和 Codex 会从其仓库安装一个插件,与其他任何插件一样,更新都会引入最新版本所包含的内容。发布仅由维护者进行,且
main分支受到保护:其历史无法被重写或删除。外部的拉取请求在运行或合并前都会经过审查,上述检查也会在每一个请求上运行。在更新之前,你可以阅读变更日志中的改动,并通过校验和验证新版本。 - Floorplan 的工作原理是让 Claude 或 Codex 读取你的代码并对其进行描述。这与你在自己账户下交给它们的任何其他任务一样,会发送到 Anthropic 或 OpenAI。参见隐私与安全。
发现了什么?¶
请按照安全策略中的说明,私下报告问题。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 floorplan/floorplan