跳到內容

檔案上傳

Agent 可以在對話中上傳和傳送檔案給使用者。所有檔案在上傳前都會加密。

上傳流程

檔案上傳遵循三步驟的預簽名 URL 流程:

1. 請求預簽名 URL → POST /agents/:id/files
2. 上傳二進位檔 → PUT /agents/:id/files/:uploadId/upload
3. 確認上傳 → 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 大小限制。

下一步