OpenClaw 文件操作完全指南
让 AI 拥有「掌控」文件系统的能力 —— 读、写、改、执,样样精通
🎯 文件操作能做什么?
世界上有一种能力,叫「掌控文件系统」。有了它,你的 AI Agent 才能真正落地生根 —— 从虚拟的对话助手,变成能「动手干活」的数字员工。
"凌晨3点,我让AI帮我批量重命名了500个文件。当我睡醒时,它已经做完了。那一刻我明白了:AI不是用来聊天的,是用来干活的。"
文件操作让 AI 能够:
- 📄 读写文件 - 创建、读取、修改文本和代码
- ✏️ 精准编辑 - 局部修改,不破坏原有结构
- ⚡ 执行命令 - 运行 shell 命令,管理进程
- 📁 目录管理 - 遍历、创建、删除目录
🧰 工具概览
- read - 读取文件内容
- write - 写入/创建文件
- edit - 精准编辑文件
- exec - 执行 shell 命令
- process - 管理后台进程
📝 读写文件
读取文件 (read)
// 基本读取
read({ path: "/path/to/file.txt" });
// 读取部分行
read({
path: "/path/to/file.txt",
offset: 10, // 从第10行开始
limit: 50 // 读取50行
});
// 读取图片
read({ path: "/path/to/image.png" });
写入文件 (write)
// 创建新文件或覆盖
write({
path: "/path/to/new-file.txt",
content: "这是文件内容"
});
// 写入 HTML
write({
path: "/var/www/index.html",
content: `<!DOCTYPE html>
<html>
<head><title>My Site</title></head>
<body>Hello World</body>
</html>`
});
// 写入 JSON
write({
path: "/data/config.json",
content: JSON.stringify({ key: "value" }, null, 2)
});
✏️ 精准编辑 (edit)
edit 是最强大的工具之一,它使用「精准替换」模式,只修改指定内容,不影响其他部分。
基本语法
edit({
path: "/path/to/file.txt",
edits: [
{
oldText: "要替换的旧文本",
newText: "替换后的新文本"
}
]
});
实际示例
// 修改配置文件
edit({
path: "/etc/nginx/nginx.conf",
edits: [
{
oldText: "worker_processes auto;",
newText: "worker_processes 4;"
}
]
});
// 批量修改
edit({
path: "/project/index.js",
edits: [
{
oldText: "const API_URL = 'http://localhost:3000';",
newText: "const API_URL = 'https://api.example.com';"
},
{
oldText: "console.log('debug');",
newText: "// console.log('debug');"
}
]
});
⚡ edit 的优势
相比 write 覆盖整个文件,edit 只修改匹配的部分。即使文件其他内容发生变化,只要 oldText 还在,就能成功替换。
⚡ 执行命令 (exec)
基本用法
// 简单命令
exec({ command: "ls -la" });
// 带工作目录
exec({
command: "npm install",
workdir: "/project"
});
// 带环境变量
exec({
command: "node app.js",
env: { NODE_ENV: "production", PORT: "3000" }
});
// 后台运行
exec({
command: "python server.py",
background: true
});
高级选项
// 超时控制
exec({
command: "long-running-task.sh",
timeout: 300 // 5分钟后超时
});
// 交互式终端
exec({
command: "vim file.txt",
pty: true // 伪终端模式
});
// 安全控制
exec({
command: "rm -rf /",
security: "deny" // 危险命令被阻止
});
后台进程管理
// 启动后台任务
const task = exec({
command: "python analysis.py",
background: true,
yieldMs: 10000 // 10秒后让出
});
// 检查状态
process({ action: "poll", sessionId: task.sessionId });
// 查看日志
process({
action: "log",
sessionId: task.sessionId,
limit: 50
});
// 终止进程
process({ action: "kill", sessionId: task.sessionId });
💻 实战示例
示例 1: 批量文件处理
// 场景:批量修改文件后缀
exec({
command: "for f in *.txt; do mv \"$f\" \"${f%.txt}.md\"; done",
workdir: "/data/documents"
});
示例 2: 项目初始化
// 创建目录结构
exec({ command: "mkdir -p my-project/{src,tests,docs}" });
// 创建初始文件
write({
path: "my-project/package.json",
content: JSON.stringify({
name: "my-project",
version: "1.0.0"
}, null, 2)
});
// 初始化 git
exec({
command: "git init && git add . && git commit -m 'Initial commit'",
workdir: "my-project"
});
示例 3: 配置文件管理
// 先读取检查
const config = read({ path: "/etc/nginx/sites-enabled/default" });
// 添加新配置
edit({
path: "/etc/nginx/sites-enabled/default",
edits: [{
oldText: "server {",
newText: "server {\n # 新增缓存配置"
}]
});
// 测试并重载
exec({ command: "nginx -t && nginx -s reload" });
🎯 最佳实践
✅ 使用绝对路径
避免相对路径带来的歧义。使用 /var/www/project/ 而不是 ./project/
✅ 备份重要文件
编辑前先备份:exec({ command: "cp important.conf important.conf.bak" })
⚠️ 安全注意事项
- 权限检查 - 确保有操作目标文件的权限
- 路径验证 - 避免路径遍历攻击
- 命令注入 - 不要拼接未经验证的用户输入
📚 相关资源
🎬 结语
文件操作是 AI Agent 的「基本功」。掌握了它,你的 AI 才能真正落地,从「聊天机器人」进化为「自动化系统」。
"世界上有一种能力,叫动手的能力。会写代码的AI很多,但能真正操控文件系统的AI,才是真正的生产力工具。"