Agent SDK

SDK 快速开始

安装 Go 接入库和运行时,完成一次只读任务并检查结果。

完成第一个任务

本章创建一个独立 Go 程序,让 Agent 阅读当前项目并给出摘要。先完成只读任务,确认命令路径、模型访问和结果处理都能工作,再接入写文件或外部服务。

准备环境

需要 Go 1.24 或更高版本,以及已配置模型访问的 nxs。nxs 是 Nexus 的默认 Agent 运行时;bridge 是 Go 接入库,安装它不会同时安装运行时或配置模型凭据。

先从 Nexus 发布包或已授权来源准备 nxs,设置它的可执行文件路径。下面的路径是占位示例,请换成本机实际路径。后续示例均沿用这个环境变量。

export NEXUS_NXS_COMMAND_PATH="/opt/nexus/bin/nxs"
test -x "$NEXUS_NXS_COMMAND_PATH"

确认文件可执行,并在运行程序的同一用户身份下准备好 nxs 的模型配置与凭据。模型访问由运行时负责,bridge 本身不提供模型额度。

mkdir nexus-sdk-demo
cd nexus-sdk-demo
go mod init example.com/nexus-sdk-demo
go get github.com/nexus-research-lab/nexus-agent-sdk-bridge@latest

在目录中放入一份不含敏感内容的 README.md。它是本次任务的输入材料。WithCWD(".") 以程序启动目录为工作目录,因此运行程序时应留在此目录。

编写 main.go

package main

import (
    "context"
    "fmt"
    "log"
    "time"

    "github.com/nexus-research-lab/nexus-agent-sdk-bridge/client"
)

func main() {
    ctx, cancel := context.WithTimeout(context.Background(), 2*time.Minute)
    defer cancel()
    options := client.NewOptions().
        WithRuntime(client.RuntimeNXS).
        WithCWD(".").
        WithTools("Read", "Glob", "Grep").
        WithAllowedTools("Read", "Glob", "Grep").
        WithMaxTurns(5)
    result, err := client.Prompt(ctx, client.PromptRequest{
        Prompt: "阅读 README.md,用三句话说明项目用途。不要修改文件。",
        Options: options,
    })
    if err != nil {
        log.Fatal(err)
    }
    if result.IsError {
        log.Fatalf("任务未成功:%s %v", result.Subtype, result.Errors)
    }
    fmt.Println(result.Result)
}

WithTools 选择内置工具集合,WithAllowedTools 配置允许规则。这里同时设置两者,让示例只需要读取材料。权限配置不是操作系统沙箱;生产环境的隔离方法见部署

运行与验收

go run .

程序会等待首个最终结果,再打印摘要。第一次请求可能包括初始化和模型连接时间。回答内容由模型生成,不会每次相同;验收时确认它引用了 README 中真实存在的信息,且目录没有被修改。

如果程序打印错误,先区分命令未找到、初始化失败和任务失败。不要把错误替换成空字符串后当成正常回答。详见错误处理

在代码中指定运行时路径

如果部署环境不使用环境变量,可以在 Options 中通过 WithCLIPath 指定 nxs。其余调用代码保持不变。

options := client.NewOptions().
    WithRuntime(client.RuntimeNXS).
    WithCLIPath("/opt/nexus/bin/nxs").
    WithCWD(".").
    WithTools("Read", "Glob", "Grep").
    WithAllowedTools("Read", "Glob", "Grep")

未调用 WithRuntime 时,bridge 同样默认选择 nxs。它不会从 PATH、应用包或缓存中寻找 nxs,因此必须提供路径。需要接入 Claude Code 等第三方异构 Agent 运行时,请阅读运行时与能力协商

接下来做什么

需要展示执行进度时,把 Prompt 换成流式调用。需要继续追问同一份材料时,使用持久会话。需要查询业务数据时,添加自定义工具,把数据访问范围放在宿主代码中检查。