跳转到内容

虚拟文件系统

RTC Agent 在浏览器中构建了一个完整的虚拟文件系统。AI 通过 ls、read、edit、grep、find 等工具操作文件,就像操作本地终端一样——但所有数据始终留在用户的浏览器中。

💡 核心洞察:LLM 已经非常擅长操作文件系统。与其让 AI 学习自定义 API,不如给它一个文件系统——它马上就能 ls、read、grep、write。

目录用途内容来源
/functions/函数文档宿主应用注册 Function 后自动生成
/scenarios/场景文档业务方提供的 Markdown 工作流
/scripts/可执行脚本AI 通过 script 工具保存
/AGENT.md系统入口自动生成模板,描述目录结构和工具

虚拟文件系统提供 7 种操作,覆盖 AI 需要的所有文件交互:

操作功能关键参数状态
ls列出目录内容path(默认 /)✅ 可用
read读取文件内容path(必填),offset / limit(分页)✅ 可用
write创建或写入文件path、content(必填),mode(可选,见下方)✅ 可用
edit精确字符串替换path、old_string、new_string(必填),replace_all✅ 可用
find按文件名搜索pattern(glob),path✅ 可用
grep按文件内容搜索pattern(正则),详见下方参数表✅ 可用
remove删除文件path🔒 内部接口

⚠️ remove 是虚拟文件系统的内部接口,当前未作为 RTC 工具暴露给 AI。AI 无法直接删除文件。

大文件支持分页,避免一次性加载过多内容:

参数类型必填说明
pathstring是文件的绝对路径
offsetinteger否起始行号(1-indexed),仅在文件过大时提供
limitinteger否读取行数,仅在文件过大时提供

write 支持三种写入模式,通过 mode 参数控制:

模式说明返回值
overwrite覆盖写入(默认),文件不存在则创建写入后总字符数
append追加写入,内容添加到文件末尾写入后总字符数
create-new仅新建,文件已存在则跳过写入已存在时返回原文件字符数

对文件进行精确的字符串替换,类似 Claude Code 的 Edit 工具。使用前必须先用 read 读取过该文件。

参数类型必填说明
pathstring是文件的绝对路径
old_stringstring是要被替换的原始文本,必须与文件中的内容完全匹配(包括缩进和空白)
new_stringstring是替换后的新文本(必须与 old_string 不同)
replace_allboolean否设为 true 替换所有匹配项(默认 false)。old_string 不唯一时必须使用

使用约束:

  • 必须先使用 read 工具读取过文件,否则编辑会失败
  • old_string 必须在文件中唯一匹配,否则需要提供更大的上下文使其唯一,或使用 replace_all
  • 优先使用 edit 修改已有文件,而不是用 write 重写整个文件

强大的虚拟文件系统内容搜索工具,支持正则表达式、文件过滤、分页和多种输出模式。

参数类型必填说明
patternstring是正则表达式搜索模式
pathstring否搜索的文件或目录路径(默认根目录 /)
globstring否Glob 模式过滤文件(如 "*.js"、"**/*.tsx")
typestring否文件类型过滤(如 "js"、"py"、"go"),比 glob 更高效
output_modestring否输出模式:"files_with_matches"(默认,仅文件路径)、"content"(匹配行及上下文)、"count"(匹配计数)
-iboolean否忽略大小写
-nboolean否显示行号(需 output_mode: "content",默认 true)
-Binteger否显示匹配行之前的行数(需 output_mode: "content")
-Ainteger否显示匹配行之后的行数(需 output_mode: "content")
-C / contextinteger否显示匹配行前后的行数
head_limitinteger否限制输出条数(默认 250,传 0 为不限制)
offsetinteger否跳过前 N 条结果再应用 head_limit(默认 0)
multilineboolean否启用多行模式(. 匹配换行符,模式可跨行)

💡 模式选择建议:查找文件用 "files_with_matches";查看具体代码用 "content" 配合 -n、-C;统计出现次数用 "count"。

规则说明
根目录/
分隔符/(正斜杠)
自动转换所有路径自动转为绝对路径
路径遍历.. 直接拒绝,不做解析
目录逻辑概念,不单独存储,通过路径前缀推导

文件类型由路径前缀自动推断,无需显式指定:

特性说明
存储引擎IndexedDB(Dexie.js 封装)
主键文件路径
大文件整存整取,支持分页读取
读取方式每次读取均查询最新数据,无缓存层
容量受浏览器 IndexedDB 配额约束(通常数百 MB)

系统启动时自动检查 /AGENT.md。如果不存在,会自动生成一个模板文件,向 AI 描述目录结构和可用工具——确保 AI 一上线就知道”文件系统里有什么”。

约束说明
🔒 路径遍历防护.. 直接拒绝
🔐 权限控制按工作模式决定
💾 容量限制受浏览器 IndexedDB 配额约束
🚫 无跨域访问文件系统完全隔离在浏览器沙箱内
🛡️ 用户编辑保护用户手动编辑过的系统文件(如 /AGENT.md、/functions/*.md)不会被系统自动覆盖,需要用户主动点击”恢复默认”才能重新生成