跳转到主要内容
V2 session API 不再受支持。TypeScript Agent SDK 0.3.142 移除了 unstable_v2_createSessionunstable_v2_resumeSessionunstable_v2_prompt 以及 SDKSessionSDKSessionOptions 类型。要迁移,请使用 query() API 和它接受的 session 选项。为多轮对话传递 AsyncIterable<SDKUserMessage>,或使用 options.resume 继续已保存的会话。如果您在 Agent SDK 0.2.x 或更早版本上维护代码,此页面保留供参考。
V2 是一个实验性的 session API,消除了对异步生成器和 yield 协调的需求。与其在各轮之间管理生成器状态,每一轮都是一个单独的 send()/stream() 周期。API 表面简化为三个概念:
  • createSession() / resumeSession():启动或继续对话
  • session.send():发送消息
  • session.stream():获取响应

安装

Agent SDK 0.2.x 是包含 V2 interface 的最后一个版本。包版本从 0.2.x 直接跳到 0.3.142,因此上面的移除版本和下面的安装固定版本描述的是同一个边界。要安装最后一个 V2 兼容版本,请固定主版本号和次版本号:
SDK 为您的平台捆绑了一个本地 Claude Code 二进制文件作为可选依赖项,因此您无需单独安装 Claude Code。

快速开始

单次提示

对于不需要维护会话的简单单轮查询,使用 unstable_v2_prompt()。此示例发送一个数学问题并记录答案:

基本会话

对于超出单个提示的交互,创建一个会话。V2 将发送和流式传输分为不同的步骤:
  • send() 分派您的消息
  • stream() 流式传输响应
这种明确的分离使得在轮次之间添加逻辑变得更容易(例如在发送后续消息之前处理响应)。 下面的示例创建一个会话,向 Claude 发送”Hello!”,并打印文本响应。它使用 await using(TypeScript 5.2+)在块退出时自动关闭会话。您也可以手动调用 session.close()

多轮对话

会话在多个交换中保持上下文。要继续对话,请在同一会话上再次调用 send()。Claude 会记住之前的轮次。 此示例提出一个数学问题,然后提出一个引用前一个答案的后续问题:

会话恢复

如果您有来自之前交互的会话 ID,您可以稍后恢复它。这对于长时间运行的工作流或当您需要在应用程序重新启动时保持对话时很有用。 此示例创建一个会话,存储其 ID,关闭它,然后恢复对话:

清理

会话可以手动关闭或使用 await using(TypeScript 5.2+ 功能用于自动资源清理)自动关闭。如果您使用的是较旧的 TypeScript 版本或遇到兼容性问题,请改用手动清理。 自动清理(TypeScript 5.2+):
手动清理:

API 参考

unstable_v2_createSession()

为多轮对话创建新会话。

unstable_v2_resumeSession()

按 ID 恢复现有会话。

unstable_v2_prompt()

用于单轮查询的单次便利函数。

SDKSession interface

功能可用性

V2 session API 不支持所有 V1 功能。以下功能需要使用 V1 SDK
  • 会话分叉(forkSession 选项)
  • 某些高级流式输入模式

另请参阅