ArchilFilesystem
將檔案儲存在 Archil 彈性無伺服器磁碟上。結合兼容 S3 的物件 API 以快速讀寫,亦提供 exec() 執行 POSIX shell 操作,以及 grep() 進行伺服器端平行搜尋。介面詳情請參閱 WorkspaceFilesystem 介面。
安裝安裝 的直接連結
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/archil
pnpm add @mastra/archil
yarn add @mastra/archil
bun add @mastra/archil
用法用法 的直接連結
將 ArchilFilesystem 加入 Workspace,並指派給 Agent:
import { Agent } from '@mastra/core/agent'
import { Workspace } from '@mastra/core/workspace'
import { ArchilFilesystem } from '@mastra/archil'
const workspace = new Workspace({
filesystem: new ArchilFilesystem({
diskId: 'dsk-0123456789abcdef',
apiKey: process.env.ARCHIL_API_KEY,
region: 'aws-us-east-1',
}),
})
const agent = new Agent({
id: 'file-agent',
name: 'file-agent',
model: 'anthropic/claude-opus-4-7',
workspace,
})
初始化時建立新磁碟初始化時建立新磁碟 的直接連結
如果沒有現有磁碟,請提供 createDiskOptions 以自動建立磁碟:
import { ArchilFilesystem } from '@mastra/archil'
const filesystem = new ArchilFilesystem({
apiKey: process.env.ARCHIL_API_KEY,
region: 'aws-us-east-1',
createDiskOptions: {
name: 'my-agent-workspace',
},
})
await filesystem.init()
// filesystem.diskId now contains the newly created disk ID
環境變數後備值環境變數後備值 的直接連結
省略 apiKey 和 region 時,Provider 會讀取環境變數:
ARCHIL_API_KEY- API 金鑰ARCHIL_REGION- 區域(例如aws-us-east-1)ARCHIL_S3_BASE_URL- 自訂 S3 端點(可選)
import { ArchilFilesystem } from '@mastra/archil'
// Uses ARCHIL_API_KEY and ARCHIL_REGION from environment
const filesystem = new ArchilFilesystem({
diskId: 'dsk-0123456789abcdef',
})
建構函數參數建構函數參數 的直接連結
diskId?:
string
現有 Archil 磁碟 ID(例如 "dsk-0123456789abcdef")。不可與
createDiskOptions 同時使用。createDiskOptions?:
CreateDiskRequest
初始化時建立新磁碟的選項。不可與
diskId 同時使用。apiKey?:
string
Archil API 金鑰。後備使用
ARCHIL_API_KEY 環境變數。region?:
string
Archil 區域(例如 "aws-us-east-1")。後備使用
ARCHIL_REGION 環境變數。baseUrl?:
string
自訂 Archil 控制平面 URL(用於測試或自行託管的部署)。
s3BaseUrl?:
string
自訂兼容 S3 的 API URL。後備使用
ARCHIL_S3_BASE_URL 環境變數。id?:
string
= 自動產生
此檔案系統執行個體的唯一標識符。
displayName?:
string
在 UI 中顯示、便於閱讀的名稱。
icon?:
FilesystemIcon
UI 的圖示標識符。
description?:
string
此檔案系統在 UI 中顯示的簡短說明。
readOnly?:
boolean
= false
設為 true 時,所有寫入操作都會被封鎖。
屬性屬性 的直接連結
id:
string
檔案系統執行個體標識符。
name:
string
Provider 名稱('ArchilFilesystem')。
provider:
string
Provider 標識符('archil')。
diskId:
string | undefined
Archil 磁碟 ID(初始化後可用)。
readOnly:
boolean | undefined
檔案系統是否處於唯讀模式。
方法方法 的直接連結
ArchilFilesystem 實作了 WorkspaceFilesystem 介面,並提供所有標準檔案系統方法:
readFile(path, options?)- 讀取檔案內容writeFile(path, content, options?)- 將內容寫入檔案appendFile(path, content)- 將內容附加至檔案deleteFile(path, options?)- 刪除檔案copyFile(src, dest, options?)- 複製檔案moveFile(src, dest, options?)- 移動檔案或重新命名mkdir(path, options?)- 建立目錄rmdir(path, options?)- 移除目錄readdir(path, options?)- 列出目錄內容exists(path)- 檢查路徑是否存在stat(path)- 取得檔案或目錄的元資料
init()init 的直接連結
初始化檔案系統。連接現有磁碟或建立新磁碟。
await filesystem.init()
getInfo()getinfo 的直接連結
傳回此檔案系統執行個體的元資料。
const info = filesystem.getInfo()
// { id: '...', name: 'ArchilFilesystem', provider: 'archil', status: 'ready' }
Archil 專用方法Archil 專用方法 的直接連結
exec(command)execcommand 的直接連結
在磁碟上執行 shell 指令。傳回退出代碼、stdout 及 stderr。
const result = await filesystem.exec('ls -la /data')
// { exitCode: 0, stdout: '...', stderr: '' }
grep(options)grepoptions 的直接連結
在磁碟上的檔案中執行伺服器端平行搜尋。
const results = await filesystem.grep({
directory: '/logs',
pattern: 'ERROR',
recursive: true,
glob: '*.log',
})
// { matches: [...], stoppedReason: null }
share(path, options?)sharepath-options 的直接連結
產生用於分享檔案的已簽署 URL。
const { url } = await filesystem.share('/reports/output.pdf', {
expiresIn: 3600,
})