AI 编码 Agent 跑起来了但完全看不见?Hiver 用沙箱 + DevTools 让你全程回放每步操作
问题:Agent 是个黑盒子
用 Claude Code 重构了一个模块,它成功了——但你完全不知道它经历了什么。它访问了哪些文件?调用了什么 API?中间输出了什么命令?为什么某个步骤花了 30 秒?日志里只有 final commit message,过程一片空白。
随着 Agent 从单次任务走向生产级工作流,这个问题越来越严重。调试 Agent 行为、审计安全合规、复现失败场景——这些都要求 Agent 不仅”能做”,还要”能看见”。传统的 console.log 和 strace 在 Agent 场景下远远不够。
Hiver 就是为这个痛点设计的:一个开源的 Agent 运行时沙箱,带 DevTools 风格的可视化 Inspector。它让每个 Agent 运行在隔离环境中,全程记录文件操作、网络请求、命令输出和 LLM 对话,并且可以通过一个类似 Chrome DevTools 的 UI 来回放和分析。
项目地址:github.com/hiver-sh/hiver | 安装:
npm i -g @hiver.sh/cli(Apache 2.0 许可证)
架构:运行时 + 观察器
Hiver 分成两个核心部分:
运行时(Runtime)
运行时负责把 Agent 启动在一个隔离的沙箱里。沙箱拥有独立的文件系统、网络策略和 ACL(访问控制列表)。每个文件读写、网络请求、命令执行都被运行时拦截,生成结构化的审计事件。
隔离方式有两种:
- 容器隔离(默认):基于 runc,启动快、开销低,适合开发和信任的镜像
- MicroVM 隔离:基于 Firecracker,硬件虚拟化级别,每个沙箱拥有独立内核,适合运行完全不可信的代码
无论哪种隔离级别,底层的审计事件流和 API 接口完全相同。
观察器(Inspector)
Inspector 是 Hiver 的亮点。通过一个命令 hiver inspect 启动,它会打开一个实时的 DevTools 风格 UI,展示沙箱内部的一切活动:
- Timeline(时间线):Agent 每一步操作的时间瀑布图,包含每个请求的耗时
- LLM 对话:自动解码 Agent 的模型流量,显示为 system/user/assistant 消息格式,无需在 Agent 侧埋点
- 网络请求:每个出站请求的目标、路径、允许/拒绝裁决,TLS 加密被透明解密,你看到的是真实的请求内容而非 CONNECT 隧道
- 文件操作:Agent 的所有读写操作,包括本地文件、Google Drive、GCS、S3 等后端
- 命令执行:Agent 运行的每条命令及其输出
- 浏览器画面:实时查看 Agent 的浏览器会话画面
- 配置编辑:实时修改沙箱的网络和文件系统策略,立刻观察 Agent 的反应
快速上手
安装 CLI:
npm install --global @hiver.sh/cli
启动本地服务并创建一个沙箱:
hiver up hiver start my-agent --image claude
Hiver 内置了多个预配置镜像:
| 镜像名 | 用途 |
|---|---|
claude | Claude Code 预安装 |
codex | OpenAI Codex 预安装 |
copilot | GitHub Copilot CLI 预安装 |
browser | Chromium 浏览器,供 Agent 做网页导航 |
node | Node.js 运行时 |
python | Python 3.13 运行时 |
启动后打开 Inspector:
hiver inspect my-agent
浏览器中就会打开一个 DevTools 风格的仪表盘,实时展示 Agent 的运行状态。
实战:SDK 集成
Hiver 提供 TypeScript、Python 和 Go 的客户端 SDK。下面是一个用 TypeScript 驱动 Agent SDK 服务的例子。
首先创建项目配置 .hiver.json:
{
"image": "my-agent",
"egress": [
{
"access": "allow",
"host": "api.anthropic.com",
"override": {
"headers": {
"x-api-key": "sk-ant-..."
}
}
},
{
"access": "deny",
"host": "*"
}
]
}
然后在代码中启动沙箱并驱动 Agent:
import { getOrCreateSandbox } from "@hiver.sh/client";
const sandbox = await getOrCreateSandbox("coding-agent", {
image: "claude"
});
const res = await fetch(`${sandbox.proxyUrl(3000)}/chat`, {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({
prompt: "创建一个 Fibonacci 生成器并运行测试"
})
});
console.log(await res.json());
事件流:Agent 的”黑匣子”
每个沙箱会生成一个结构化的、可回放的事件流。你可以从 CLI 实时查看:
hiver events my-agent --follow
更有意思的是,你可以把事件流管道到 LLM 做自然语言分析:
hiver events claude-code-agent \
| jq -c 'select(.type | IN("exec.request", "egress.request", "fs.request"))' \
| claude -p "这个 Agent 做了什么?"
这是 Hiver 最实用的功能之一——每当 Agent 运行异常时,你不需要重跑整个流程,只需要回放事件流就能定位问题。
安全设计:凭据永不进入沙箱
Hiver 的设计原则之一是”沙箱内不可信”。凭据通过 override 机制从外部注入,Agent 进程永远看不到原始的 API Key。在上面的 .hiver.json 示例中,x-api-key 由 Hiver 的代理(sbxproxy)在请求出站时动态添加,沙箱内的任何进程都无法读取这个值。
文件访问也受 ACL 控制——你可以精确控制每个路径的读写权限:
{
"files": [
{ "path": "/workspace", "access": "read-write" },
{ "path": "/etc", "access": "read-only" },
{ "path": "/secrets", "access": "deny" }
]
}
适用场景
- Agent 行为调试:Agent 生成了预期之外的结果,回放事件流找到问题在哪一步
- 安全审计:确认 Agent 没有访问不该访问的文件或 API
- 性能分析:Timeline 视图显示每个步骤的耗时,发现瓶颈
- 合规记录:完整的事件流可导出为审计日志
- 团队协作:共享沙箱,团队成员可以连接到正在运行的 Agent 观察执行过程
结语
Hiver 解决的痛点是所有从”跑通 Demo”走向”生产部署”的 Agent 开发者都会遇到的。Agent 不再是一个”输入 prompt → 得到结果”的黑盒子,而是每一步都可观察、可回放、可审计的透明系统。
目前 Hiver 处于活跃开发阶段(npm 包 v0.1.34),本地运行时和 Inspector 已经可用。对于正在把 AI 编码 Agent 引入工作流的团队,Hiver 提供了一个非常及时的基础设施。
相关链接
- GitHub:https://github.com/hiver-sh/hiver
- 官方文档:https://hiver.sh/docs
- npm 包:https://www.npmjs.com/package/@hiver.sh/cli
- 示例仓库:https://github.com/hiver-sh/examples
- Hiver vs 替代方案:https://hiver.sh/docs/resources/hiver-vs-alternatives