第 12 章:文件管理与代码编辑——从浏览文件到让 AI 安全修改
本章同时讲“你亲自操作的双栏文件管理器”和“Agent 使用的文件工具”。两者操作的是同一批真实文件,但入口和权限范围不同。
12.1 先认识手机路径
| 路径/概念 | 大白话解释 |
|---|---|
/storage/emulated/0 | 手机主共享存储,通常包含 Download、DCIM、Documents 等 |
| 工作区 | 你为当前会话或项目选中的文件夹,Agent 的主要操作范围 |
| App 私有目录 | 只属于 Lyra Code 的数据,卸载或清除数据会删除 |
| PRoot rootfs | App 私有目录里的 Linux 文件系统,不是普通下载文件夹 |
| SAF | Android 系统文件选择器授予的目录访问权 |
新手最好在 /storage/emulated/0/Documents 或 Download 下为每个项目单独建文件夹,不要把整个主存储当作工作区。
12.2 第一次打开文件页
- 打开侧栏 文件。
- 如系统请求“所有文件访问”,先阅读用途,再进入 Android 设置允许。
- 返回 App 后刷新。
- 左右两栏默认从共享存储开始。
这个权限只用于访问共享存储。PRoot Linux 的应用私有文件无需它也能通过专用入口管理。
12.3 双栏的核心逻辑
左右两栏彼此独立。例如:
- 左栏进入
Download; - 右栏进入
Documents/Work; - 长按左栏文件,选择 复制到另一栏;
- 文件就复制到右栏当前目录。
当前激活栏会高亮。复制和移动前,先点击目标栏确认它处于正确目录,再回来源栏操作。
12.4 浏览和返回
- 点击文件夹进入;
- 点击向上箭头返回上级;
- 点击刷新重新读取当前目录;
- 进入其他目录再返回时,应用会尽量恢复之前的滚动位置;
- 目录切换动画方向用于提示正在进入还是返回。
在根目录时不能继续向上。
12.5 搜索文件
- 点击页面右上角菜单。
- 选择 搜索文件。
- 输入文件名关键词。
- 选择范围:全部、仅文件、仅文件夹。
- 等待搜索当前路径及其子文件夹。
结果数量会显示在顶部。这里按名称搜索,不是搜索文件正文。要查代码内容,可以让 Agent 在工作区执行文本搜索命令。
12.6 排序
右上角菜单可按以下字段排序:
- 名称;
- 修改时间;
- 大小;
- 类型。
再次点击升序/降序项可切换方向。目录和文件的显示规则可能与桌面文件管理器不同,批量操作不要只凭列表位置判断目标。
12.7 新建文件夹和文件
在对应栏底部点击 +:
- 选择新建文件夹或新建文件;
- 输入名称;
- 确认;
- 刷新或在列表中查看结果。
文件名不要包含 /。创建代码文件时带上扩展名,例如 main.py、index.html、README.md,编辑器才能选择合适的语法高亮。
12.8 长按文件或文件夹
长按会打开操作菜单:
| 操作 | 说明 |
|---|---|
| 复制到另一栏 | 保留原文件,在另一栏当前目录创建副本 |
| 移动到另一栏 | 把原文件搬走,原位置不再保留 |
| 重命名 | 只改名称,谨慎修改扩展名 |
| 属性 | 查看完整路径、类型、大小、修改时间,并可复制路径 |
| 浏览器预览 | 仅 HTML/HTM,交给已安装浏览器打开 |
| 解压 | 把支持的压缩包解压到当前目录 |
| 删除 | 永久删除,确认前核对路径 |
预览陌生 HTML 时要小心,其中的 JavaScript 会在浏览器环境运行。
12.9 批量选择
通过界面提示的滑动选择或多选手势选择多项后,顶部会显示数量,并出现复制、移动、删除和取消选择按钮。
提交批量操作前会二次确认。确认框中重点检查:
- 选中了多少项;
- 当前来源栏;
- 另一栏目标目录;
- 是复制还是移动;
- 是否有同名文件覆盖风险。
批量删除没有回收站保障,重要目录先复制备份。
12.10 打开不同类型文件
- 文本和代码:进入内置编辑器;
- 图片/视频:打开预览;
- HTML/HTM:可长按选择浏览器预览;
- APK:弹出安装确认,Android 可能要求允许“安装未知应用”;
- 其他格式:尝试调用系统中能处理它的 App。
只安装来源可信、签名和用途明确的 APK。
12.11 特权文件访问
文件页菜单可以配置 Root 或 Shizuku 文件访问:
- Root:先检测
su是否可用,再启用; - Shizuku:Shizuku 服务必须已运行,并授权 Lyra Code;
- 测试访问:启用后先用测试按钮确认;
- 禁用:不用时关闭,恢复普通应用权限。
特权模式可能访问或破坏系统文件。零基础用户不应为了“看到更多目录”随意开启;只有明确知道目标路径和恢复方法时才使用。
12.12 查看 PRoot Linux 文件
在文件页右上角菜单选择 进入 PRoot Linux instances。阅读提示后选择环境。这里改动会立即影响正在使用的 Linux;复制备份前先停止终端,删除整个环境请到 设置 → PRoot Linux。详见PRoot Linux。
12.13 代码编辑器基础操作
打开文本或代码文件后:
- 左侧显示行号;
- 根据扩展名进行 TextMate 语法高亮;
- 保存按钮写入文件;
- 菜单提供搜索、跳转到行、自动换行/单行显示和 AI 助手。
不换行模式适合代码,可横向滚动;自动换行适合阅读长文本。
12.14 查找和替换
- 打开编辑器菜单 → 文件内搜索。
- 输入查找内容。
- 使用上一个/下一个在匹配间跳转。
- 如需替换,填写替换内容;留空表示删除匹配文本。
- 选择替换当前项或全部替换。
- 检查结果后再保存。
“全部替换”可能一次修改很多位置。先看搜索结果数量,结果异常时取消,不要直接保存。
12.15 跳转到行
菜单选择 跳转到行,输入正整数。报错信息如果写着 Main.kt:128,就在对应文件跳到 128 行。
12.16 编码和备份
编辑器默认用 UTF-8 解码。检测到错误时会警告:继续编辑并保存会把内容写成 UTF-8,同时把原文件保留为同目录 .bak。
正常保存修改过的文件时,也会创建 .bak 备份。退出有未保存内容时可以:
- 保存;
- 取消退出,继续编辑;
- 不保存并关闭。
.bak 是最近一次覆盖前的后悔药,不是完整版本历史。连续多次保存前应确认备份是否会被更新;重要项目建议使用 Git 或单独复制快照。
12.17 编辑器内 AI 助手
- 在编辑器菜单点击 AI 助手,或按页面提示从边缘滑出。
- 确认顶部显示当前文件。
- 若任务涉及整个项目,点击添加工作目录并选择项目文件夹。
- 用自然语言说明目标和限制。
- 审查工具调用、审批和差异回放。
- 完成后再次打开搜索或直接浏览相关行,确认最终内容。
示例:
只修改当前文件:把所有用户可见的英文报错翻成简体中文。不要改变量名。先列出预计修改的位置,得到我确认后再写入。
AI 正在应用编辑时,不要同时手工改相同文件。
12.18 工作区文件工具和全局文件工具
| 范围 | 常见工具 | 适用场景 |
|---|---|---|
| 工作区 | list_directory、read_file、write_file、edit_file | 当前项目内,路径通常相对工作区 |
| 全局共享存储 | global_list_directory、global_read_file、global_write_file、global_edit_file | 工作区外的共享存储,写操作风险更高 |
如果工作区工具收到 /storage/emulated/0/... 这类绝对路径,可能提示路径越界。解决办法是选择正确工作区,或在明确授权时使用全局工具。
12.19 让 AI 安全修改文件的标准流程
- 确认工作区:展开会话详情看目录;
- 读取规则:让 AI 先读 README、AGENTS.md 和相关文件;
- 先查后改:找出目标位置和影响范围;
- 小步修改:优先局部编辑;
- 审查差异:确认没有无关改动;
- 运行验证:执行项目测试、构建或预览;
- 汇报结果:说明改了哪些文件、验证了什么、还有什么风险。
可以直接发送:
先只读检查 README、AGENTS.md 和相关文件,告诉我你准备改哪些位置。得到确认后小步修改,最后运行最相关的测试并汇报。
12.20 AGENTS.md 项目规则
在项目根目录放 AGENTS.md 可以记录长期约定,例如:
# 项目约定
- 构建命令:./gradlew assembleDebug
- 测试命令:./gradlew test
- 用户可见文字使用简体中文
- 不修改 build 目录和签名配置
- 删除文件前必须询问规则只应描述项目事实、风格、测试方法和安全限制。不要把密钥写进去,也不要要求绕过审批。
12.21 常见问题
文件页是空白或提示没有权限
到 设置 → 应用权限 检查共享存储访问;Android 11 及以上还可能需要“所有文件访问”。授权后返回并刷新。
复制到了错误目录
先不要继续移动。使用属性查看来源和目标完整路径,再把文件复制回正确位置。重要文件先保留两份,确认后再删除错误副本。
编辑器打开乱码
原文件可能不是 UTF-8。不要立即保存;先用可靠工具转码,或者在确认 .bak 会保留原始字节后再继续。
edit_file 提示匹配数不对
原文不存在或出现多次。让 AI 重新读取文件,使用更长的唯一上下文,或按准确行号范围编辑。
.bak 能否自动恢复整个项目
不能。它是单文件备份。项目级恢复请使用 Git、压缩包或其他备份方案。
下一章:命令执行
