了解 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); } }