容器里的 Agent,
触手可及。
容器里的 Agent 和你的 Mac 隔着一道墙,没法告诉 Gnista 它需要你。给容器装上 Gnista 的辅助程序,再留一条回来的路,它的会话就会和其他会话一样在刘海里各占一行。下面分别讲 Mac 上的 devcontainer、服务器上的容器和 Kubernetes pod 怎么设置。
更新于
简短回答
- 在你的 Mac 上:打开设置 ▸ 远程 ▸ 容器中的智能体,把它显示的几行加进你的
devcontainer.json,重建容器。 - 在 Gnista 连接的服务器上:用同样的方法把服务器上的
~/.gnista挂载进容器。 - 在 Kubernetes 里:在设置 ▸ 远程里选“其他主机…”,填上
kube:、context、namespace 和 pod。
Mac 上的 devcontainer
- 在 Gnista 的设置 ▸ 远程里,打开“容器中的智能体”。Gnista 会为容器建一个文件夹
~/.gnista/containers,里面有两种处理器的 Linux 辅助程序。 - 点它显示的那几行下面的“复制”,加进你项目的
devcontainer.json。 - 重建容器。容器创建时,会接入里面装好的 Agent。
- 在容器里开一个会话。它的那一行显示的机器是 Docker。
要加的几行
"mounts": ["source=${localEnv:HOME}/.gnista/containers,target=/opt/gnista,type=bind"],
"containerEnv": { "GNISTA_HOME": "/opt/gnista" },
"postCreateCommand": "/opt/gnista/bin/gnista install all"不用 devcontainer 的话,把同一个文件夹挂载进任意容器,然后在里面运行一次 /opt/gnista/bin/gnista install all:
docker run -it -v ~/.gnista/containers:/opt/gnista -e GNISTA_HOME=/opt/gnista your-image工作原理
Docker Desktop 不会把 Mac 上的 socket 传进容器,所以 Gnista 在你 Mac 的回环地址上监听一个端口,容器通过 host.docker.internal 访问它。每次连接都必须先给出一个密码,密码就放在你挂载的文件夹里,所以 Mac 上的其他应用发不了消息。arm64 和 x86_64 镜像都可以。
服务器上的容器
先连接服务器:见通过 SSH 使用 Agent。然后把它的 ~/.gnista 挂载进容器,几行和上面一样,只是来源换成 ${localEnv:HOME}/.gnista。容器里的用户必须是 root,或者和你在服务器上的用户 ID 相同,才能访问那边的 socket。
Kubernetes pod
- 在 Mac 上装好
kubectl(用 Homebrew 或 Rancher Desktop),确认kubectl exec能连到那个 pod。 - 在 Gnista 的设置 ▸ 远程里,点“连接”,选“其他主机…”,填上
kube:加 context、namespace 和 pod,比如kube:prod/agents/agent-0。也可以填 deployment:kube:prod/agents/deploy/agents。 - Gnista 通过
kubectl exec设置这个 pod,和设置服务器一样,并在上面保持一个中继,传送 Agent 的事件。pod 重启后,Gnista 会重新设置它。
限制
- 能在容器或 pod 里运行命令的人,都能回应你的批准请求,和服务器一样。只连接你信任的。
- 你 Mac 上容器里的会话都显示为 Docker,不区分是哪个容器。点一下,会调出正在
docker exec或kubectl exec进去的那个终端标签页。 - 只支持 Linux 容器和 pod,x86_64 或 arm64。
kubectl的云端登录过期后,pod 的那一行会显示需要你;像平时用kubectl那样重新登录,Gnista 会自己再试。- 组织为自己的 Mac 关掉远程机器时,这个也一并关掉:见托管设置。
更多指南。
Qwen Code 通知,
就在 Mac 刘海里。Qwen Code 跑完了还是在等你,在 Mac 上哪儿都能知道。Claude Code 也一样。
Kimi Code 和 CodeBuddy,
通知进刘海。Kimi Code 或 CodeBuddy 在等你批准,不用盯着终端也知道;CodeBuddy 还能直接在刘海里批准。Codex 也一样。
批准 Qwen Code 的请求,
不用切窗口。在刘海里允许或拒绝一条命令,然后接着干你手上的事。
编程 Agent 的用量与额度,
心里有数。Claude Code 和 Codex 的 5 小时与每周额度,以及每个会话花了多少,就在会话下面。
Xcode 里的 Agent,
就在刘海里。Xcode 里的 Claude、Codex 或 Antigravity 需要你时,不用把 Xcode 放在前面也知道。
服务器上的 Agent,
在 Mac 上回应。服务器或另一台 Mac 上的 Claude Code、Codex 等什么时候需要你,在 Mac 上就知道,还能直接回应。