메사파일 시스템
작업공간 파일을 다음 위치에 저장합니다.Mesa표준 Mastra를 통한 저장소WorkspaceFilesystem인터페이스.
Agent에 버전 관리 파일 스토리지가 필요할 때 MesaFilesystem을 사용합니다. 로컬 디렉터리에는 LocalFilesystem을 사용합니다. 객체 스토리지에는 S3Filesystem, GCSFilesystem 또는 AzureBlobFilesystem을 사용합니다.
MesaFilesystemMastra 프로세스에서 실행됩니다.
Mesa의 POSIX 마운트(Sandbox 내에서 Mesa 파일 시스템을 사용하기 위한 기능)는 아직 @mastra/mesa 패키지에 포함되어 있지 않습니다. 곧 지원될 예정입니다.
설치설치에 대한 직접 링크
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/mesa
pnpm add @mastra/mesa
yarn add @mastra/mesa
bun add @mastra/mesa
사용예사용예에 대한 직접 링크
Mesa 저장소 하나를 마운트하고 파일 시스템을 작업 공간에 전달합니다.
import { Agent } from '@mastra/core/agent'
import { Workspace } from '@mastra/core/workspace'
import { MesaFilesystem } from '@mastra/mesa'
const workspace = new Workspace({
filesystem: new MesaFilesystem({
apiKey: process.env.MESA_API_KEY,
org: 'acme',
repos: [{ name: 'docs', bookmark: 'main' }],
}),
})
const agent = new Agent({
id: 'file-agent',
name: 'file-agent',
model: 'anthropic/claude-opus-4-7',
workspace,
})
apiKey를 생략하면 MESA_API_KEY를 대신 사용합니다.
생성자 매개변수생성자 매개변수에 대한 직접 링크
apiKey?:
MESA_API_KEY를 대신 사용합니다.org?:
repos:
cache?:
ttl?:
readOnly?:
속성속성에 대한 직접 링크
id:
name:
'MesaFilesystem')입니다.provider:
'mesa')입니다.readOnly:
client:
filesystem:
change:
bookmark:
행동 양식행동 양식에 대한 직접 링크
MesaFilesystem구현WorkspaceFilesystem interface.
파일 작업파일 작업에 대한 직접 링크
readFile(path, options?)readfilepath-options에 대한 직접 링크
메사에서 파일을 읽습니다.
const content = await filesystem.readFile('/acme/docs/README.md', {
encoding: 'utf-8',
})
보고:Promise<string | Buffer>
writeFile(path, content, options?)writefilepath-content-options에 대한 직접 링크
메사에 파일을 씁니다.
await filesystem.writeFile('/acme/docs/report.md', '# Report')
보고:Promise<void>
appendFile(path, content)appendfilepath-content에 대한 직접 링크
파일에 콘텐츠를 추가합니다.
await filesystem.appendFile('/acme/docs/log.txt', 'new line\n')
보고:Promise<void>
deleteFile(path, options?)deletefilepath-options에 대한 직접 링크
파일을 삭제합니다.
await filesystem.deleteFile('/acme/docs/old-report.md')
보고:Promise<void>
copyFile(src, dest, options?)copyfilesrc-dest-options에 대한 직접 링크
파일을 복사합니다.
await filesystem.copyFile('/acme/docs/report.md', '/acme/docs/archive/report.md')
보고:Promise<void>
moveFile(src, dest, options?)movefilesrc-dest-options에 대한 직접 링크
파일을 이동하거나 이름을 바꿉니다.
await filesystem.moveFile('/acme/docs/draft.md', '/acme/docs/final.md')
보고:Promise<void>
디렉토리 작업디렉토리 작업에 대한 직접 링크
mkdir(path, options?)mkdirpath-options에 대한 직접 링크
디렉터리를 생성합니다.
await filesystem.mkdir('/acme/docs/reports', { recursive: true })
보고:Promise<void>
rmdir(path, options?)rmdirpath-options에 대한 직접 링크
디렉터리를 제거합니다.
await filesystem.rmdir('/acme/docs/reports', { recursive: true })
보고:Promise<void>
readdir(path, options?)readdirpath-options에 대한 직접 링크
디렉토리 항목을 나열합니다.
const entries = await filesystem.readdir('/acme/docs', {
recursive: true,
extension: '.md',
})
보고:Promise<FileEntry[]>
경로 작업경로 작업에 대한 직접 링크
exists(path)existspath에 대한 직접 링크
경로가 존재하는지 확인합니다.
const exists = await filesystem.exists('/acme/docs/README.md')
보고:Promise<boolean>
stat(path)statpath에 대한 직접 링크
파일 또는 디렉터리 메타데이터를 반환합니다.
const stat = await filesystem.stat('/acme/docs/README.md')
보고:Promise<FileStat>
realpath(path)realpathpath에 대한 직접 링크
메사로부터 표준 경로를 반환합니다.
const realPath = await filesystem.realpath('/acme/docs/README.md')
보고:Promise<string>
메사 운영메사 운영에 대한 직접 링크
bash(options?)bashoptions에 대한 직접 링크
이 파일 시스템에 대해 Mesa 기반 Bash 런타임을 생성합니다.
const bash = await filesystem.bash({
cwd: '/acme/docs',
})
보고:Promise<Bash>
경로 의미론경로 의미론에 대한 직접 링크
메서드에는 절대 경로가 필요합니다. MesaFilesystem에서 경로의 루트는 Mesa 마운트이며 조직 슬러그와 저장소 이름을 포함해야 합니다:
await filesystem.readFile('/acme/docs/README.md')
선행 슬래시를 생략하지 마십시오.
await filesystem.readFile('acme/docs/README.md') // Incorrect
await filesystem.readFile('/acme/docs/README.md') // Correct
조직은 생성자의 org에서 가져오며, org를 생략하면 Mesa SDK의 기본 조직 추론을 통해 가져옵니다. 조직은 항상 첫 번째 경로 세그먼트입니다.
여러 저장소를 마운트하면 각 저장소를 조직 세그먼트에서 사용할 수 있습니다.
const filesystem = new MesaFilesystem({
org: 'acme',
repos: [
{ name: 'docs', bookmark: 'main' },
{ name: 'website', bookmark: 'main' },
],
})
await filesystem.readFile('/acme/docs/README.md')
await filesystem.readFile('/acme/website/package.json')
메사 버전 관리 API메사 버전 관리 API에 대한 직접 링크
Mesa 관련 변경 및 북마크 작업을 위해 기본 Mesa 파일 시스템에 액세스합니다.
await filesystem.writeFile('/acme/docs/draft.md', 'Draft')
const current = await filesystem.change.current({
repo: 'docs',
})
await filesystem.bookmark.move({
repo: 'docs',
name: 'main',
changeId: current.changeId,
})
버전 관리 의미에 대한 자세한 내용은 다음에서 확인할 수 있습니다.Mesa's docs.
읽기 전용 모드읽기 전용 모드에 대한 직접 링크
Mastra를 통한 쓰기 작업을 차단하려면 readOnly: true를 설정합니다:
const filesystem = new MesaFilesystem({
repos: [{ name: 'docs', bookmark: 'main' }],
readOnly: true,
})
읽기 작업은 계속 작동합니다. 쓰기 작업 던지기WorkspaceReadOnlyError.
동시성동시성에 대한 직접 링크
overwrite: false와 expectedMtime은 쓰기 전에 사전 검사를 사용합니다. Mesa가 앱 마운트에 네이티브 조건부 쓰기를 추가하지 않는 한 이러한 검사는 원자적이지 않습니다.