GO SDK / V0
在 Go 服务中使用类型化 GoClaw 客户端。
Go SDK 由 OpenAPI 类型与一层面向 Run 的客户端组成,负责认证 Header、Workspace 作用域、幂等键和 Problem Details 映射。
添加 SDK 依赖
当前 SDK 与主模块一起发布。开发阶段可以使用 latest;生产服务应固定经过验证的版本,避免无审查升级。
go get github.com/menglingwei/goclawai/sdk/go@latest创建 Workspace 客户端
Endpoint 指向 /api/v1,Token 使用短期 GoClaw Access Token,Workspace 使用稳定 ID。为 HTTPClient 设置与你的任务匹配的超时。
初始化
client, err := goclaw.New(goclaw.Config{
Endpoint: "https://goclawai.com/api/v1",
Token: os.Getenv("GOCLAW_TOKEN"),
Workspace: os.Getenv("GOCLAW_WORKSPACE"),
HTTPClient: &http.Client{Timeout: 30 * time.Second},
})
if err != nil {
return err
}创建并查询 Run
CreateRun 自动生成安全幂等键;需要跨进程重试时传入你持久化的业务键。返回的 replayed 表示服务端复用了先前结果。
run, replayed, err := client.CreateRun(ctx, api.CreateRunRequest{
Provider: "auto",
Region: "auto",
Workload: map[string]any{"image": "alpine"},
}, "onboarding-run-001")
if err != nil {
return err
}
current, err := client.GetRun(ctx, run.Id)使用类型化 ProblemError
API 非成功响应映射为 *goclaw.ProblemError。使用 errors.As 读取 Status、Code、RequestID、Retryable 和 Params,不要匹配错误字符串。
var problem *goclaw.ProblemError
if errors.As(err, &problem) {
log.Printf("code=%s request=%s retryable=%t",
problem.Code, problem.RequestID, problem.Retryable)
}当前高层客户端能力
手写高层客户端目前覆盖 Run 创建、查询与取消,Approval 查询与决策,当前 Workspace 和用量摘要。其他 OpenAPI 操作可通过生成的 api 包访问。
- 写操作始终保留幂等键和请求关联信息。
- 不要把 Provider SDK 类型暴露到 GoClaw 集成边界。
- 升级 SDK 时同时审查 OpenAPI schema 与枚举变化。
由部署环境注入 Token
应用启动时从 Secret Manager 读取 GOCLAW_TOKEN,不写入源码、镜像层、测试 Fixture 或结构化日志。Provider Key 只通过 Provider Credential API 管理。