了解 Claude Code SDK 的两种输入模式以及何时使用每种模式
import { query } from "@anthropic-ai/claude-code"; import { readFileSync } from "fs"; async function* generateMessages() { // 第一条消息 yield { type: "user" as const, message: { role: "user" as const, content: "分析此代码库的安全问题" } }; // 等待条件或用户输入 await new Promise(resolve => setTimeout(resolve, 2000)); // 跟进图像 yield { type: "user" as const, message: { role: "user" as const, content: [ { type: "text", text: "审查此架构图" }, { type: "image", source: { type: "base64", media_type: "image/png", data: readFileSync("diagram.png", "base64") } } ] } }; } // 处理流式响应 for await (const message of query({ prompt: generateMessages(), options: { maxTurns: 10, allowedTools: ["Read", "Grep"] } })) { if (message.type === "result") { console.log(message.result); } }
import { query } from "@anthropic-ai/claude-code"; // 简单的一次性查询 for await (const message of query({ prompt: "解释身份验证流程", options: { maxTurns: 1, allowedTools: ["Read", "Grep"] } })) { if (message.type === "result") { console.log(message.result); } } // 通过会话管理继续对话 for await (const message of query({ prompt: "现在解释授权过程", options: { continue: true, maxTurns: 1 } })) { if (message.type === "result") { console.log(message.result); } }