模块 kernels:Agent OS 远程内核管理
🔵 模块 kernels 维护 Agent OS 远程实例注册表,并让代理
对其进行管理:通过内核的 HTTP API 进行监控和请求,通过 SSH 进行生命周期管理
(经由模块 remote)。与 remote
(任意主机)不同,kernels 知道目标是 Agent OS 内核。
该模块包含在标准发行版中(modules.enabled → kernels),并需要
remote(requires: ["remote"])。
52.1 注册表
内核由文档描述:slug、base_url、token_secret、machine、
deploy。注册表位于 DuckDB(logs/kernels.db)中,从
config/remote/kernels.yaml 播种(与 remote 一样,seed 不会覆盖数据库中的修改)。
kernels:
- slug: prod
base_url: https://platform.example.com
token_secret: PROD_ADMIN_TOKEN # имя секрета, не сам токен
machine: prod-host # slug машины из инвентаря `remote`
tags: [prod]
deploy:
remote_dir: /home/realityfaker/agent_os
archive: distrib/agent-os-distrib-linux.zip
install_command: |
set -e
cd /home/realityfaker/agent_os
unzip -o distrib/agent-os-distrib-linux.zip -d /tmp/ao-distrib
install -m 0755 /tmp/ao-distrib/agent-os-distrib/bin/agent-os target/release/agent-os
log_path: /home/realityfaker/agent_os/agent_os.log
路径可通过 AGENT_OS_KERNELS_DB / AGENT_OS_KERNELS_CONFIG 覆盖。
52.2 传输方式 {#transports}
- HTTP — 通过主机端口
agent_os.Http(主机的 SSRF 策略,同步)。 管理员令牌从agent_os.Secrets中按名称token_secret读取。 - SSH — 通过模块
remote:内核引用机器的slug,应用 其策略(policy.mode/allow/approval)。生命周期命令 的解析方式与任何远程 exec 相同,fail-closed。 - 部署 — 优先使用发行版:归档通过 SCP 上传到
<remote_dir>/distrib/,然后在主机上执行install_command(默认情况下还会执行sudo systemctl restart agent-os)。
52.3 工具
参见 工具参考。
| 分组 | kind |
|---|---|
| 注册表 | kernel_list、kernel_get、kernel_upsert、kernel_delete |
| HTTP | kernel_health、kernel_models、kernel_agents、kernel_templates、kernel_request |
| SSH | kernel_service、kernel_logs、kernel_deploy |
示例:
kind: kernel_service
name: prod_service
description: Управление сервисом agent-os на прод-хосте
52.4 HTTP API
| Endpoint | 描述 |
|---|---|
GET /v1/kernels |
内核列表 🔒 |
POST /v1/kernels |
创建/更新内核 🔒 |
GET /v1/kernels/:slug |
单个内核 🔒 |
PUT /v1/kernels/:slug |
更新 🔒 |
DELETE /v1/kernels/:slug |
删除 🔒 |
GET /v1/kernels/:slug/health |
远程内核健康探测(HTTP)🔒 |
52.5 安全
- 管理员令牌和
install_command不会在 API 中暴露(redacted())。 - HTTP 受主机端口的 SSRF 策略限制;SSH 受机器
remote的策略限制。 - 仅当机器策略允许命令时(
mode: full或合适的allow)才允许部署。
52.6 限制
- 需要模块
remote。 - 主机端口
Http可能会拒绝私有/回环地址——请使用 内核的公共地址。 - 生命周期(SSH)仅以工具形式提供(路由为同步)。