虚拟文件系统
RTC Agent 在浏览器中构建了一个完整的虚拟文件系统。AI 通过 ls、read、write、grep、find 等工具操作文件,就像操作本地终端一样——但所有数据始终留在用户的浏览器中。
为什么用文件系统
Section titled “为什么用文件系统”💡 核心洞察:LLM 已经非常擅长操作文件系统。与其让 AI 学习自定义 API,不如给它一个文件系统——它马上就能
ls、read、grep、write。
| 目录 | 用途 | 内容来源 |
|---|---|---|
/functions/ | 函数文档 | 宿主应用注册 Function 后自动生成 |
/scenarios/ | 场景文档 | 业务方提供的 Markdown 工作流 |
/scripts/ | 可执行脚本 | AI 通过 script 工具保存 |
/AGENT.md | 系统入口 | 自动生成模板,描述目录结构和工具 |
虚拟文件系统提供 6 种操作,覆盖 AI 需要的所有文件交互:
| 操作 | 功能 | 关键参数 |
|---|---|---|
ls | 列出目录内容 | path(默认 /) |
read | 读取文件内容 | path(必填),offset / limit(分页) |
write | 创建或写入文件 | path、content(必填),mode(overwrite / append) |
find | 按文件名搜索 | pattern(glob),path |
grep | 按文件内容搜索 | pattern(正则),path,caseSensitive |
remove | 删除文件 | path |
⚠️
remove是虚拟文件系统的内部接口,当前未作为 RTC 工具暴露给 AI。AI 无法直接删除文件。
大文件支持分页,避免一次性加载过多内容:
| 规则 | 说明 |
|---|---|
| 根目录 | / |
| 分隔符 | /(正斜杠) |
| 自动转换 | 所有路径自动转为绝对路径 |
| 路径遍历 | .. 直接拒绝,不做解析 |
| 目录 | 逻辑概念,不单独存储,通过路径前缀推导 |
文件类型推断
Section titled “文件类型推断”文件类型由路径前缀自动推断,无需显式指定:
| 特性 | 说明 |
|---|---|
| 存储引擎 | IndexedDB(Dexie.js 封装) |
| 主键 | 文件路径 |
| 大文件 | 整存整取,支持分页读取 |
| 读取方式 | 每次读取均查询最新数据,无缓存层 |
| 容量 | 受浏览器 IndexedDB 配额约束(通常数百 MB) |
系统启动时自动检查 /AGENT.md。如果不存在,会自动生成一个模板文件,向 AI 描述目录结构和可用工具——确保 AI 一上线就知道”文件系统里有什么”。
| 约束 | 说明 |
|---|---|
| 🔒 路径遍历防护 | .. 直接拒绝 |
| 🔐 权限控制 | 按工作模式决定 |
| 💾 容量限制 | 受浏览器 IndexedDB 配额约束 |
| 🚫 无跨域访问 | 文件系统完全隔离在浏览器沙箱内 |
- Remote Tool Calling — 了解 AI 如何调用这些文件操作
- 脚本执行引擎 — 了解
/scripts/目录下的脚本如何执行 - Skill 系统 — 了解
/functions/目录下的函数如何注册