檔案上傳
Agent 可以在對話中上傳和傳送檔案給使用者。所有檔案在上傳前都會加密。
上傳流程
檔案上傳遵循三步驟的預簽名 URL 流程:
1. 請求預簽名 URL → POST /agents/:id/files2. 上傳二進位檔 → PUT /agents/:id/files/:uploadId/upload3. 確認上傳 → POST /files/confirm(附帶 SHA-256 雜湊)步驟 1:請求上傳 URL
const response = await fetch( `${baseUrl}/agents/${agentId}/files`, { method: "POST", headers: { "Authorization": `Bearer ${agentToken}`, "Content-Type": "application/json", }, body: JSON.stringify({ filename: "report.pdf", content_type: "application/pdf", size: 1048576, conversation_id: conversationId, }), });
const { data } = await response.json();// data.upload_id - 用於後續步驟// data.upload_url - 用於二進位上傳的預簽名 URL步驟 2:上傳二進位檔
await fetch( `${baseUrl}/agents/${agentId}/files/${data.upload_id}/upload`, { method: "PUT", headers: { "Authorization": `Bearer ${agentToken}`, "Content-Type": "application/pdf", }, body: fileBuffer, });步驟 3:確認上傳
await fetch( `${baseUrl}/files/confirm`, { method: "POST", headers: { "Authorization": `Bearer ${agentToken}`, "Content-Type": "application/json", }, body: JSON.stringify({ upload_id: data.upload_id, sha256: computedSha256Hash, }), });SHA-256 雜湊在伺服器端驗證。不匹配時返回錯誤碼 SHA256_MISMATCH 並觸發稽核警報。
大小限制
| 約束 | 值 |
|---|---|
| 最大檔案大小 | 100MB |
| 非成員上傳 | 拒絕(錯誤:NOT_CONVERSATION_MEMBER_UPLOAD) |
加密
檔案在上傳前於客戶端加密。SDK(在檔案上傳完全整合後)會自動處理加密。目前,檔案上傳如上所示直接使用 REST 端點。
整合支援
Claude Code Plugin 提供 hashee_send_file 工具,封裝了整個上傳流程,包括自動 MIME 類型偵測和 100MB 大小限制。