플랫폼파일 시스템
Mastra Platform 작업 공간 버킷에 파일을 저장합니다. 각 Mastra 플랫폼 환경은 하나의 버킷을 가질 수 있으며,PlatformFilesystemAgent를 제공합니다read, write, list, delete, 그리고move이에 대한 작전.
관련 Provider: S3에 직접 액세스하려면 S3Filesystem, 로컬 디렉터리에는 LocalFilesystem을 사용합니다.
인터페이스에 대한 자세한 내용은 다음을 참조하세요.WorkspaceFilesystem interface.
설치설치에 대한 직접 링크
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/platform-workspace
pnpm add @mastra/platform-workspace
yarn add @mastra/platform-workspace
bun add @mastra/platform-workspace
플랫폼 자격 증명을 구성합니다. 액세스 토큰, 프로젝트 ID 및 버킷 이름은 환경 변수로 대체되므로 Mastra 플랫폼 배포는 생성자 옵션을 0으로 전달할 수 있습니다.
- .env file
- Constructor
MASTRA_PLATFORM_ACCESS_TOKEN=your-platform-access-token
MASTRA_PROJECT_ID=your-project-id
MASTRA_PLATFORM_BUCKET_NAME=your-bucket-name
new PlatformFilesystem({
accessToken: 'your-platform-access-token',
projectId: 'your-project-id',
bucketName: 'your-bucket-name',
})
Mastra 플랫폼 배포에서는 MASTRA_PLATFORM_ACCESS_TOKEN, MASTRA_PROJECT_ID, MASTRA_PLATFORM_BUCKET_NAME이 자동으로 주입되므로 옵션 없이 생성자를 호출할 수 있습니다. 로컬 개발에서는 MASTRA_PLATFORM_ACCESS_TOKEN에 조직 설정 페이지의 API Tokens에서 가져온 sk_ API 토큰을 사용할 수 있습니다.
용법용법에 대한 직접 링크
Workspace에 PlatformFilesystem을 추가하고 Agent에 할당합니다:
import { Agent } from '@mastra/core/agent'
import { Workspace } from '@mastra/core/workspace'
import { PlatformFilesystem } from '@mastra/platform-workspace'
const workspace = new Workspace({
filesystem: new PlatformFilesystem({
// accessToken, projectId, bucketName all fall back to env vars
}),
})
const agent = new Agent({
id: 'file-agent',
name: 'File Agent',
instructions: 'You are a research assistant that reads and writes reports.',
model: 'anthropic/claude-sonnet-4-6',
workspace,
})
파일 읽기 및 쓰기파일 읽기 및 쓰기에 대한 직접 링크
객체 키는 세그먼트별로 퍼센트 인코딩되므로 파일 이름의 ?, #, %, &, + 또는 공백이 전체 과정에서 보존됩니다:
const fs = new PlatformFilesystem()
await fs.writeFile('/analyses/repo.md', markdown)
const content = await fs.readFile('/analyses/repo.md')
const entries = await fs.readdir('/analyses')
await fs.moveFile('/analyses/repo.md', '/analyses/repo-final.md')
읽기 전용 모드읽기 전용 모드에 대한 직접 링크
버킷을 읽기 전용으로 마운트하려면 readOnly: true를 전달합니다. 변경 작업을 수행하는 모든 호출은 WorkspaceReadOnlyError를 발생시킵니다:
const fs = new PlatformFilesystem({ readOnly: true })
await fs.readFile('/analyses/repo.md') // ok
await fs.writeFile('/analyses/repo.md', 'x') // throws WorkspaceReadOnlyError
의미론 덮어쓰기의미론 덮어쓰기에 대한 직접 링크
writeFile은 overwrite: false를 지원하며 대상이 이미 존재하면 FileExistsError를 발생시킵니다.
copyFile과 moveFile은 항상 대상을 덮어씁니다. 두 메서드 중 하나에 overwrite: false를 전달하면 조용히 덮어쓰는 대신 오류가 발생합니다.
파일 추가파일 추가에 대한 직접 링크
appendFile은 읽기-수정-쓰기 방식이며 원자적이지 않습니다. 동일한 경로에 동시에 추가하면 서로 덮어쓸 수 있습니다. 동시 작성자가 있다면 서로 다른 키와 함께 writeFile을 사용하세요.
생성자 매개변수생성자 매개변수에 대한 직접 링크
accessToken?:
projectId?:
bucketName?:
readOnly?:
displayName?:
description?:
icon?:
instructions?:
id?:
fetch?:
속성속성에 대한 직접 링크
id:
name:
provider:
readOnly:
오류오류에 대한 직접 링크
파일 시스템 관련 오류는 표준 작업 공간 오류 유형과 일치합니다.
FileNotFoundError: 경로가 존재하지 않습니다.readFile,stat,deleteFile에서 발생합니다(force: true가 설정된 경우 제외).FileExistsError: 대상이 이미 존재하는 상태에서overwrite: false로writeFile을 호출했습니다.WorkspaceReadOnlyError: 읽기 전용 파일 시스템에서 변경 작업을 호출했습니다. 그 밖의 플랫폼 API 오류는PlatformApiError를 발생시킵니다. 구조화된{ error: { message, type } }응답은.code(머신 판독 가능한 유형)와.proxyMessage(사람이 읽을 수 있는 문자열)로 파싱됩니다.
import { FileNotFoundError } from '@mastra/core/workspace'
import { PlatformApiError } from '@mastra/platform-workspace'
try {
await fs.readFile('/missing.txt')
} catch (err) {
if (err instanceof FileNotFoundError) {
// handle missing file
} else if (err instanceof PlatformApiError) {
if (err.code === 'authentication_error') {
// refresh token
}
console.error(err.status, err.code, err.proxyMessage)
}
}
FileNotFoundError, FileExistsError, WorkspaceReadOnlyError는 @mastra/core/workspace의 표준 Workspace 오류 유형을 다시 내보낸 것입니다. PlatformApiError는 @mastra/platform-workspace 전용입니다.
응답 본문이 JSON이 아닌 경우(예: 로드 밸런서가 반환한 HTML 502) code와 proxyMessage는 undefined입니다.