import { query, type SDKUserMessage } from "@anthropic-ai/claude-agent-sdk";import { readFile } from "fs/promises";async function* generateMessages(): AsyncGenerator<SDKUserMessage> { // First message yield { type: "user", message: { role: "user", content: "Analyze this codebase for security issues" }, parent_tool_use_id: null }; // Wait for conditions or user input await new Promise((resolve) => setTimeout(resolve, 2000)); // Follow-up with image yield { type: "user", message: { role: "user", content: [ { type: "text", text: "Review this architecture diagram" }, { type: "image", source: { type: "base64", media_type: "image/png", data: await readFile("diagram.png", "base64") } } ] }, parent_tool_use_id: null };}// Process streaming responsesfor await (const message of query({ prompt: generateMessages(), options: { maxTurns: 10, allowedTools: ["Read", "Grep"] }})) { if (message.type === "result" && message.subtype === "success") { console.log(message.result); }}
在 TypeScript SDK 中,如果您的消息生成器抛出异常,例如当它读取的文件丢失时,流会以一条错误消息结束,内容为 Claude Code process aborted by user,而不是原始错误,因此当您看到该消息时,请先检查生成器内部的代码。该错误前面可能还有一长行捆绑 SDK 源代码的缩小代码,因此请阅读输出末尾的错误文本。在 Python SDK 中,生成器异常在调试级别被记录,会话会停滞而不会引发异常,因此如果流式会话挂起且没有输出,请启用调试日志记录并检查您的生成器。