API Reference

SDK Surface

按日常使用、常用进阶和框架集成三个层级理解 Agent SDK 的公开能力

SDK Surface

@downcity/agent 的根入口会导出完整的扩展类型,但普通应用不需要理解全部导出。先掌握日常核心,再按场景进入 Session、Plugin 或 transport 集成层。

第一层:日常核心

大多数本地应用只需要:

  • Workspace:创建项目资源与安全边界,并接收 Shell。
  • Agent:组合模型、指令、Tools、Plugins 和 Sessions。
  • agent.sessions.create() / get():创建或恢复 Session。
  • session.prompt():启动一次 Turn。
  • turn.finished:等待最终结果。
  • agent.dispose():释放 Agent 及其独占 Workspace。
const workspace = new Workspace({ path, shell });
const agent = new Agent({ id, workspace, model });

try {
  const session = await agent.sessions.create();
  const turn = await session.prompt({ query: "检查项目" });
  const result = await turn.finished;
} finally {
  await agent.dispose();
}

本地 SDK 是 session-first 的:Agent 负责组合,真正承载交互和执行状态的是 Session。

第二层:常用进阶

Agent 与 Workspace

  • agent.ready():需要显式启动检查点时等待 Plugin runtime。
  • agent.set_instruction():更新 Agent 静态指令。
  • agent.plugins:查询、控制或调用 Plugin。
  • workspace.get_env() / set_env() / patch_env():管理项目执行环境。
  • agent.get_logger() / get_shell():宿主集成入口。

Session

  • get_info():读取 Session 状态。
  • subscribe():订阅实时 Mutation。
  • messages():读取消息快照。
  • stop():停止当前执行。
  • system():读取当前 system。
  • interactions() / respond():处理审批、问题等用户异步交互。
  • fork():从现有 Session 创建分支。
  • snapshot() / syncshot():管理本地 Session system 快照。
  • set({ model }):只覆盖当前本地 Session 的模型。

如果应用有实时 UI,应先读取初始 Session 与 Message 快照,再建立 subscribe();重连后重新读取快照,不要把事件流当作完整数据库。

第三层:框架集成

以下能力只在构建 Plugin、服务端或自定义运行时组件时使用:

  • PluginContext:Agent 投影给 Plugin 的稳定能力视图;宿主不应主动获取或持有它。
  • SessionTurnContext:一个 Turn 中统一管理身份、生命周期、Step、输入与输出协作的执行上下文;Plugin 只接收其只读投影 PluginExecutionContext
  • create_session_turn_context(...):自定义 Executor 或运行时组件创建上述 Turn Context 的标准工厂。
  • AgentSessionSessionExecutor 等接口:替换或扩展默认实现。
  • RPC/HTTP 类型:实现自定义 transport 或协议集成。

网络服务实现位于 @downcity/server。本地 Agent 不监听端口,也不管理 transport 生命周期。

本地与远程

能力本地 AgentRemoteAgent
创建、获取、列出 Session支持支持
prompt()、订阅、消息、停止、审批、fork支持支持
注入 Workspace、Shell、Tools、Plugins支持不支持
设置 Agent 默认模型支持不支持
session.set({ model })支持不支持
session.set({ security }) / session.status()支持支持
snapshot() / syncshot()支持不支持
管理服务端 transport不负责只连接

远程 Session 的模型与 system 持久化策略始终由服务端宿主决定。

生命周期规则

一个 Workspace 实例 → 一个 Agent → 一次 agent.dispose()
  • Workspace 由调用方构造,绑定后由 Agent 统一释放。
  • 多个 Agent 可以指向同一物理目录,但必须分别创建 Workspace 实例。
  • agent.dispose() 会释放 Plugin runtime、Workspace、Shell、PTY 和 Sandbox。
  • RemoteAgent.close() 只关闭客户端连接,不释放服务端 Agent。

继续阅读:Agent APISession 总览