自定义版本的 Minimal Agent Harness,用 Go 实现 agent 任务治理的最小骨架。
这是一个给业务系统复用的最小后端骨架,不是玩具 demo:它现在已经把 run / step / event / trace_id / risk scan / CI 自动测试与打包 接成一条最短闭环,但仍未进入“完整多 agent 平台”阶段。
Harness = 任务管理 + traceId + 权限/审计预留 + executor 路由 + 风险登记
Executor = codex_sdk / turing_sdk / langgraph / nanobot 等 worker
当前最小契约:
- 每个请求都带
X-Trace-Id - 每个 run / event / step / 错误响应都能回读
trace_id - 每次代码提交都做风险分级、Go 测试、Hurl 接口测试、Linux 打包
- 自动打包 ≠ 自动发生产,部署仍保留人工门禁
go test ./...
go run ./cmd/harness-server创建 run:
curl -s http://127.0.0.1:8088/api/v1/runs \
-H 'Content-Type: application/json' \
-H 'X-Trace-Id: demo-trace-1' \
-d '{"agent_id":"sublb-customer-support","user_id":"u1","input":"查一下套餐","executor_type":"codex_sdk"}'风险评估:
curl -s http://127.0.0.1:8088/api/v1/risk/assess \
-H 'Content-Type: application/json' \
-d '{"files":["internal/harness/service.go","migrations/001.sql"]}'docs/architecture.mddocs/risk-model.md
SubLB 或其他业务系统建议只接入薄 client,不复制 Harness 核心代码:
h := client.New("http://127.0.0.1:8088")
out, err := h.CreateRun(ctx, client.CreateRunRequest{
AgentID: "sublb-customer-support",
UserID: "u1",
Input: "查一下套餐",
ExecutorType: "codex_sdk",
TraceID: "trace-1",
})./scripts/build-linux.sh
./scripts/deploy-us-main.sh # dry-run
./scripts/deploy-us-main.sh --apply # 真实部署,需人工确认本项目已把真实接口 smoke test 沉淀成 Hurl:
./scripts/local-api-smoke.sh
./scripts/local-api-expanded.sh每次提交代码后,GitHub Actions 会自动执行:
- 风险分级
gofmt/go vet/go test -race- Hurl 主路径 + 失败路径 + 边界测试
- Linux 构建与 release package 打包
说明:
- 当前默认是自动测试 + 自动打包 artifact
- 不默认每次提交自动发布服务器
- 真实发布
us-main-01-admin-direct仍建议保留人工确认