# 策展 · X (Twitter) 🔥🔥🔥

> 作者：Hayden Bleasel (@haydenbleasel) · 平台：X (Twitter) · 日期：2026-05-12

> 原始來源：https://x.com/haydenbleasel/status/2053883406459740532

## 中文摘要

Files SDK 推出統一物件儲存 SDK。

Hayden Bleasel 發布「Files SDK」，這是一個針對物件與 blob 儲存後端的統一儲存 SDK，強調單一小巧、誠實的 API，採用 Web 標準 I/O，並在需要時提供原生客戶端的逃脫通道（escape hatch）。它解決物件儲存 SDK 間細微差異的痛點，只暴露各處共通的部分如上傳、下載、列示、刪除，並允許無痛切換儲存提供者。

**核心優勢**

Files SDK 透過單一類別封裝共通操作，讓開發者無需重寫程式碼即可切換提供者：
- 共通 API 涵蓋 `upload`、`download`、`head`、`delete`、`copy`、`list`、`url`、`signedUploadUrl`，適用 S3、GCS、Azure、Vercel Blob、本地檔案系統，甚至 Dropbox 等消費者級提供者。
- Web 標準 I/O 支援 `File`、`Blob`、`ReadableStream`、`ArrayBuffer`、`string`、`Uint8Array`，無提供者專屬類型外洩，運行於 Node、Bun、Deno、邊緣執行環境（edge runtimes）與瀏覽器等 fetch 支援環境。
- 逃脫通道透過 `files.raw` 存取原生客戶端，每個 adapter 皆有類型化支援，涵蓋版本控制、生命週期、ACL、多段上傳等特定功能。
- 錯誤處理統一為 `FilesError`，具標準化程式碼，並附加原始錯誤作為 cause，避免提供者間不一致。

**安裝與快速入門**

安裝只需單一指令：
```
npm install files-sdk
```

快速入門示範建構 `Files` 實例，固定 adapter 於建構時，避免呼叫點複雜化：
```ts
import { Files } from "files-sdk";
import { s3 } from "files-sdk/s3";

const files = new Files({
  adapter: s3({ bucket: "uploads" }),
});

await files.upload("avatars/abc.png", file, { contentType: "image/png" });
const got = await files.download("avatars/abc.png");
```
切換 adapter 僅需替換匯入（如 `files-sdk/r2`、`files-sdk/gcs`、`files-sdk/azure`），其餘程式碼不變。各 adapter 為子路徑匯入，支援 tree-shake，只打包使用部分；自動從標準環境變數載入憑證，明確選項可覆寫，若缺少認證資訊則於建構時拋錯並指明缺失變數。

**Adapter 支援**

目前提供多種提供者支援，涵蓋 S3 與 S3 相容儲存（如 R2）、主要雲端 blob 平台、邊緣/無伺服器 blob 服務、本地檔案系統及消費者檔案提供者如 Google Drive、Dropbox。完整清單與各 adapter 設定詳見 [files-sdk.dev](https://files-sdk.dev/)。每個 adapter 獨立入口點，確保 tree-shake 效能。

**AI 工具整合**

Files SDK 提供專為 AI SDK 設計的子路徑，封裝已配置的 `Files` 實例作為即用工具：
- [Vercel AI SDK](https://ai-sdk.dev)（`files-sdk/ai-sdk`）
- OpenAI 的 [Responses API](https://platform.openai.com/docs/api-reference/responses) 與 [Agents SDK](https://openai.github.io/openai-agents-js/)（`files-sdk/openai`）
- Anthropic 的 [Claude Agent SDK](https://docs.claude.com/en/api/agent-sdk/overview)（`files-sdk/claude`）

這些工具共享相同檔案操作與預設批准閘道（approval-gating），讓模型能瀏覽、讀取（可選變更）bucket，與應用程式程式碼使用相同統一介面。詳細設定見 [files-sdk.dev](https://files-sdk.dev/)。

**設計哲學與痛點解決**

物件儲存 SDK 間差異細微卻惱人，Files SDK 只切片共通部分，提供小巧 API 跨提供者運作，並「及早退出」（gets out of the way）讓特定功能自理。強調「one small, honest API」，呼叫點扁平、無多餘抽象，預測性錯誤與原生逃脫確保不失靈活性。樹搖與環境變數自動化降低 bundle 大小與設定負擔，特別適合多雲環境與邊緣部署。

**開源與授權**

專案位於 [GitHub 儲存庫](https://github.com/haydenbleasel/files-sdk)，採用 MIT 授權。官方文件與完整 adapter 清單於 [files-sdk.dev](https://files-sdk.dev/)，涵蓋安裝、快速入門與 AI 整合細節。Hayden Bleasel 強調其跨平台相容性與 AI 工具即插即用，解決開發者在儲存後端遷移與 Agent 整合的常見挫折。

## 標籤

SDK, 開源專案, 新產品, Files SDK
