连接外部事件

通过 HTTP 回调,可以在 CI 完成或外部状态发生变化时及时通知 Agent。本指南以“唤醒回调(Wake callback)”为例进行演示:外部事件到达时唤醒 Agent 检查外部状态,再由 Agent 自主判定工作项是否能够继续推进。

前置条件

操作步骤

  1. 获取 Agent 当前的默认接入凭据:

    AGENT_ID=builder
    TOKEN=$(jq -r .token ~/.holon/credentials.json 2>/dev/null || echo "$HOLON_CONTROL_TOKEN")
    
    curl -s -H "Authorization: Bearer $TOKEN" \
      "http://127.0.0.1:7878/api/control/agents/$AGENT_ID/reset-callback" -X POST
    

    该操作会吊销旧的默认凭据并返回包含新 trigger_url 的 JSON 响应。请妥善保存该 URL。

  2. 在外部系统中配置 Webhook: 将获取到的 trigger_url 填入 CI 系统(如 GitHub Actions、GitLab CI)的 Webhook 通知配置中,设置为在构建结束时触发 HTTP POST。对于唤醒模式(wake_hint),空的 POST 请求体即可生效。

  3. 让 Agent 启动任务并登记等待: 要求 Agent 触发构建并等待其结果。在底层,Agent 会记录工作项、触发外部构建,并执行如下等待调用:

    {
      "wake": "external",
      "resource": "github:holon-run/holon#run/12345",
      "reason": "等待 GitHub Actions CI 构建 #12345 完成",
      "delivery": "final"
    }
    

    随后 Agent 进入挂起状态,让出当前轮次的执行权。

  4. 触发测试唤醒: 在外部 CI 触发前,可手动发送一条空的 POST 请求模拟外部通知:

    curl -X POST "$TRIGGER_URL"
    
  5. 验证唤醒与后续执行: 观察守护进程状态与 Agent 日志:

    holon agent get $AGENT_ID
    holon transcript --agent $AGENT_ID --limit 10
    

    应该能观察到 Agent 被该次外部事件唤醒,随后主动调用工具查询 CI 的真实状态,并根据查询到的结果继续推进。

确认配置成功

凭据轮换与清理

当集成不再使用或凭据意外暴露时,应立即进行轮换或吊销:

# 重新重置并生成新凭据(旧凭据立即失效)
curl -s -H "Authorization: Bearer $TOKEN" \
  "http://127.0.0.1:7878/api/control/agents/$AGENT_ID/reset-callback" -X POST

停止 Agent 同样会自动吊销其绑定的外部触发器。

另见