Heliograph 是一个免费、开源的工具,由 DBHQ 开发,旨在解决一个常见困境:你无法通过 SSH 登录目标机器,但需要在其上执行命令并获取可审计的结果。它适用于气隙环境、仅能通过堡垒机或跳板机访问的主机、客户或客户管理的系统,以及因策略限制而无法直接访问的场景。
用途
Heliograph 的核心用途是在访问边界两侧建立一种“远程、捕获、可审计”的执行循环。你发布一个步骤,它在远端运行,然后整个运行过程以日志形式返回,每一行都带有 UTC 时间戳,无论成功还是失败。它特别适合以下情况:
- 没有生产环境的 SSH 访问权限,且不会获得。
- 环境是气隙的,或位于你无法接入的堡垒机、跳板机或 VPN 之后。
- 系统由客户或客户管理,只有他们的员工可以登录。
- 访问被策略阻止,而非能力不足:受限、变更控制、需要他人签字。
- 你正在反复请求“能否运行这个并粘贴输出”,但收到的只是半个终端的截图。
- 你是一个 AI 编码代理,正在驱动调查,需要证据而非他人的总结。
如果你可以直接 SSH 登录,则不需要此工具。
主要能力
Heliograph 提供三种跨越访问边界的方式,区别在于“什么被保持,以及保持多久”:
-
Beacon(信标):你无法到达机器,机器也无法到达你,但双方都能到达一个约定的地点。你把请求留在那里然后离开。之后机器经过时取走请求、运行它,并留下日志供你收集。没有人保持连接;消息在中间等待。这是最安全的方式,因为要运行的代码已经在远端,可以在任何事情发生之前被阅读;也是最慢的,因为需要等待下一次访问。
-
Flare(闪光):你可以直接到达机器的“门”。你敲门,交出请求,等待步骤运行,并在同一次访问中取走日志。中间没有等待,也没有线路保持打开。更快,因为无需等待取件。代价是:你随身携带代码,所以机器信任的是“门”,而不是预先审查代码。
-
Beam(光束):你和机器建立连接并保持打开。任何一方都可以随时说话,另一方立即听到,直到你挂断。这是一个真正的会话,不是消息或敲门——也是最暴露的,因为线路打开时任何东西都可以传输。你需要刻意开启并在完成后关闭。它已设计但尚未作为可选的传输方式实现。
一句话总结:Beacon 保持一条消息,Flare 是一次交换,Beam 保持连接本身。
此外,Heliograph 还包含:
- CLI:单一静态二进制,无运行时依赖。每个版本发布时附带校验和,二进制中携带构建时使用的 station 负载。构建可复现:
packaging/reproduce.sh v0.4.3可以从标签重新构建所有已发布的产物并得到公布的哈希值。 - Station:远端无需安装任何东西。Station 是纯文本,可以在运行前阅读——支持 bash 4+,或 PowerShell 5.1(用于没有 bash 且不会获得 bash 的 Windows 环境)。CI 强制确保
station/下除了让 CLI 携带负载的那个文件外,不会出现任何 Go 代码。 - MCP 服务器:
heliograph mcp将相同的 CLI 作为类型化的 MCP 工具提供。工具调用会发布请求;station 仍然决定是否运行它。 - 代理技能:相同的循环可以从 Claude Code、Codex、Cursor 等驱动。技能位于
skills/heliograph/SKILL.md。 - 日志分析:
--gaps是一个值得了解的功能。在阅读内容之前扫描时间戳列中的间隙是最有价值的指令,它是算术:间隙属于它前面的行——一行上的时间戳是该行产生的时间,因此长间隔意味着前一行命名的操作花费了时间。如果日志中每一行都带有相同的时间戳,则报告为错误,而不是“无间隙”。
使用方式
操作员的全部工作就是 plant 打印的内容:克隆传输仓库,运行 ./start.sh,然后离开。循环默认是只读的,除非操作员另有说明:每个步骤都声明自己(# heliograph-mode: read-only 或 action),两者都不声明的步骤不会运行,并且除非 station 以 --allow-actions 启动,否则它会拒绝执行 action。它也不会以 root 身份运行。
传输方式方面,Git 和 relay 由 CLI 端到端驱动并在 CI 中验证。其他传输方式(如文件共享、bundle 或对象存储)所需的内容和顺序在路线图中说明。
Relay 无法读取你的日志,也无法让 station 运行任何东西。第二点很重要:一个能够伪造请求的 relay 将意味着同时在每个环境中执行代码。内容使用 relay 从不持有的密钥进行端到端加密,每条消息都经过签名。使用 age 原语加 Ed25519。Relay 服务器是独立的仓库 heliograph-io/heliograph-relay,因为它不持有密钥,必须公开地、明显地无法读取它携带的任何内容。
适用场景
- 气隙环境或高度受限的网络。
- 仅能通过堡垒机、跳板机或 VPN 访问的主机。
- 客户或客户管理的系统,只有对方员工可以登录。
- 因策略、变更控制或审批流程而无法直接访问的环境。
- AI 编码代理需要获取原始证据而非人工总结的场景。
- 需要可审计、带时间戳的完整运行日志的合规或调查场景。
限制
- Beam 传输方式已设计但尚未构建,目前不是可选的传输方式。
- 某些传输方式(如文件共享、bundle、对象存储)的 station 端支持状态需参考路线图。
- 如果可以直接 SSH 登录,则不需要此工具。
- 每个命令仍然在远端运行,因为拥有合法访问权限的人选择允许它。
- 日志中所有行时间戳相同会被报告为错误。
- 工具不会以 root 身份运行。
- 未声明模式的步骤不会运行。
- 除非以
--allow-actions启动,否则 station 拒绝执行 action。
许可与来源
Apache 2.0 (c) 2026 DBHQ Consulting Ltd,site/content/ 下的散文采用 CC BY 4.0。2026-09-17 从 MIT 重新许可;截至 b689f9c(含)的每个提交永久保留在 MIT 下。Relay 是独立仓库和独立许可:heliograph-relay 采用 FSL-1.1-ALv2,公平源代码,每次发布两年后转换为 Apache 2.0。没有任何形态被门控:beacon、flare 和 beam 都在你自己托管的中继上工作。完整声明见 https://docs.heliograph.io/licence。