Update nexus: fix conflicts and sync local changes

This commit is contained in:
Shen Wei
2026-04-26 12:06:50 +08:00
parent 191797c01b
commit f09834b5a5
2443 changed files with 254323 additions and 255154 deletions

View File

@@ -1,313 +1,313 @@
# 文件编辑最佳实践指南
## 📋 概述
本文档总结了在OpenClaw环境中安全、可靠地编辑文件的最佳实践基于今天2026-03-13多次编辑失败的经验教训。
## 🎯 核心原则
### 1. 安全第一
- **备份优先**:编辑前必须备份
- **最小修改**:只修改必要的部分
- **可回滚**:确保可以恢复到之前状态
### 2. 可靠性优先
- **验证匹配**:编辑前验证文本存在
- **逐步操作**:小步修改,逐步验证
- **错误处理**:准备好失败处理方案
### 3. 效率兼顾
- **选择正确工具**:根据场景选择`edit``write`
- **自动化重复操作**:创建脚本处理常见编辑
- **文档化流程**:记录成功的工作流程
## 🛠️ 工具选择指南
### 何时使用 `edit` 工具
**适用场景**
- 小范围、精确的文本替换
- 配置文件中的特定值修改
- 模板文件中的变量替换
**使用条件**
- 能100%确定匹配文本
- 文件内容在编辑期间不会变化
- 不需要改变文件格式
**示例**
```bash
# 修改配置文件中的端口号
edit config.yaml "port: 8080" "port: 9090"
```
### 何时使用 `write` 工具
**适用场景**
- 创建新文件
- 完全重写文件
- 大范围内容修改
- 格式标准化
**优势**
- 避免匹配问题
- 确保格式一致
- 简单可靠
**示例**
```bash
# 重新创建配置文件
write config.yaml "完整的配置文件内容"
```
## 📝 标准编辑流程
### 步骤1准备工作
```bash
# 1.1 备份原文件
cp file.md file.md.$(date +%Y%m%d_%H%M%S).backup
# 1.2 检查文件状态
ls -la file.md
file file.md # 检查文件类型
# 1.3 查看精确内容
cat -A file.md | head -20 # 查看包括特殊字符
```
### 步骤2验证匹配
```bash
# 2.1 检查要编辑的文本是否存在
grep -n "要匹配的文本" file.md
# 2.2 检查匹配次数应该是1次
grep -c "要匹配的文本" file.md
# 2.3 查看上下文
grep -A2 -B2 "要匹配的文本" file.md | cat -A
```
### 步骤3执行编辑
```bash
# 3.1 小范围编辑(推荐)
edit file.md "精确匹配的文本" "新的文本"
# 3.2 或重新创建文件
write file.md "完整的新内容"
```
### 步骤4验证结果
```bash
# 4.1 检查文件完整性
ls -la file.md # 文件大小合理
head -5 file.md # 内容开头正确
# 4.2 验证关键内容存在
grep "关键内容" file.md
# 4.3 与备份比较
diff file.md.backup file.md | head -20
```
### 步骤5清理和记录
```bash
# 5.1 记录编辑操作
echo "$(date): 编辑file.md - 修改了X处" >> edit-log.md
# 5.2 清理临时备份(可选)---
title: 文件编辑最佳实践指南
author: shenwei
---
---
title: 文件编辑最佳实践指南
source:
author: shenwei
published:
created:
description:
tags: []
---
# rm file.md.backup # 确认无误后再删除
```
## 🔧 高级技巧
### 处理换行符问题
```bash
# 检测换行符类型
file file.md
# 输出: ASCII text 或 ASCII text, with CRLF line terminators
# 转换为Unix换行符
sed -i 's/\r$//' file.md
# 转换为DOS换行符
sed -i 's/$/\r/' file.md
```
### 处理空格和制表符
```bash
# 查看不可见字符
cat -A file.md | grep -n "要编辑的行"
# 标准化空格(制表符转空格)
expand -t 4 file.md > file.md.new && mv file.md.new file.md
# 标准化制表符(空格转制表符)
unexpand -t 4 file.md > file.md.new && mv file.md.new file.md
```
### 使用脚本自动化
```bash
#!/bin/bash
# safe-edit.sh - 安全的文件编辑脚本
FILE="$1"
OLD_TEXT="$2"
NEW_TEXT="$3"
# 备份
BACKUP="${FILE}.backup.$(date +%s)"
cp "$FILE" "$BACKUP"
# 验证匹配
MATCH_COUNT=$(grep -c "$OLD_TEXT" "$FILE")
if [ "$MATCH_COUNT" -eq 0 ]; then
echo "错误:未找到匹配文本"
exit 1
elif [ "$MATCH_COUNT" -gt 1 ]; then
echo "警告:找到 $MATCH_COUNT 处匹配,可能不精确"
fi
# 执行编辑
edit "$FILE" "$OLD_TEXT" "$NEW_TEXT"
# 验证结果
if [ $? -eq 0 ]; then
echo "✅ 编辑成功"
# 可选:清理备份
# rm "$BACKUP"
else
echo "❌ 编辑失败,恢复备份"
cp "$BACKUP" "$FILE"
exit 1
fi
```
## ⚠️ 常见问题与解决方案
### 问题1`edit`工具失败
**症状**`Edit: in ... failed`
**原因**:文本不匹配(换行符、空格、内容变化)
**解决**
1. 使用`write`重新创建文件
2. 或使用更精确的匹配文本
3. 或先备份再尝试
### 问题2权限不足
**症状**`Permission denied`
**原因**:文件权限设置
**解决**
```bash
# 检查权限
ls -la file.md
# 临时修改权限(谨慎使用)
chmod +w file.md
# 编辑后恢复权限
chmod 644 file.md
```
### 问题3文件被锁定
**症状**`Resource busy` 或编辑后内容恢复
**原因**:其他进程正在使用文件
**解决**
```bash
# 检查哪个进程在使用
lsof file.md
# 等待或停止相关进程
# 或复制到临时文件编辑
cp file.md file.md.tmp
edit file.md.tmp "old" "new"
mv file.md.tmp file.md
```
## 📊 编辑策略选择矩阵
| 场景 | 推荐工具 | 备份策略 | 验证级别 |
|------|----------|----------|----------|
| 小修改 | `edit` | 自动备份 | 中等 |
| 大修改 | `write` | 手动备份 | 高 |
| 关键文件 | `write` + 版本控制 | 多重备份 | 最高 |
| 模板文件 | 模板系统 | 版本控制 | 中等 |
| 批量编辑 | 脚本 | 完整备份 | 高 |
## 🎓 经验教训
### 从今天错误中学到的
1. **不要假设文件内容**:总是先验证
2. **换行符是隐形杀手**:使用`cat -A`查看
3. **备份是救命稻草**:今天备份救了两次
4. **简单往往更好**`write``edit`更可靠
### 成功模式
1. **测试驱动编辑**:先在小文件测试
2. **增量修改**:一次只改一处
3. **即时验证**:编辑后立即检查
4. **文档记录**:记录什么方法有效
## 🔮 未来改进方向
### 工具增强
1. **智能`edit`工具**:支持模糊匹配
2. **编辑预览**:显示编辑前后的差异
3. **批量操作**:支持多文件同时编辑
4. **版本集成**与Git等版本控制系统集成
### 流程优化
1. **标准化编辑模板**:创建可重用的编辑脚本
2. **编辑审计日志**:记录所有编辑操作
3. **自动恢复系统**:失败时自动回滚
4. **协作编辑支持**:多用户安全编辑
### 培训和教育
1. **新手指南**:文件编辑入门教程
2. **案例研究**:成功和失败的编辑案例
3. **最佳实践库**:收集和分享有效方法
4. **社区贡献**:鼓励用户分享技巧
## ✅ 检查清单
### 编辑前检查
- [ ] 文件已备份
- [ ] 权限正确
- [ ] 内容已验证
- [ ] 匹配文本精确
- [ ] 有回滚计划
### 编辑后检查
- [ ] 文件大小合理
- [ ] 关键内容存在
- [ ] 格式正确
- [ ] 备份可恢复
- [ ] 记录编辑操作
## 📞 支持资源
### 内部文档
- `file-editing-best-practices.md`(本文档)
- `learnings/2026-03-14-file-edit-failure.md`(错误分析)
- `scripts/safe-edit.sh`(安全编辑脚本)
### 外部参考
- OpenClaw文档文件操作工具
- Unix文本处理工具手册
- 版本控制系统最佳实践
---
**版本**: 1.0
**创建日期**: 2026-03-14
**最后更新**: 2026-03-14 00:25 GMT+8
**作者**: 星曜 (OpenClaw助手)
# 文件编辑最佳实践指南
## 📋 概述
本文档总结了在OpenClaw环境中安全、可靠地编辑文件的最佳实践基于今天2026-03-13多次编辑失败的经验教训。
## 🎯 核心原则
### 1. 安全第一
- **备份优先**:编辑前必须备份
- **最小修改**:只修改必要的部分
- **可回滚**:确保可以恢复到之前状态
### 2. 可靠性优先
- **验证匹配**:编辑前验证文本存在
- **逐步操作**:小步修改,逐步验证
- **错误处理**:准备好失败处理方案
### 3. 效率兼顾
- **选择正确工具**:根据场景选择`edit``write`
- **自动化重复操作**:创建脚本处理常见编辑
- **文档化流程**:记录成功的工作流程
## 🛠️ 工具选择指南
### 何时使用 `edit` 工具
**适用场景**
- 小范围、精确的文本替换
- 配置文件中的特定值修改
- 模板文件中的变量替换
**使用条件**
- 能100%确定匹配文本
- 文件内容在编辑期间不会变化
- 不需要改变文件格式
**示例**
```bash
# 修改配置文件中的端口号
edit config.yaml "port: 8080" "port: 9090"
```
### 何时使用 `write` 工具
**适用场景**
- 创建新文件
- 完全重写文件
- 大范围内容修改
- 格式标准化
**优势**
- 避免匹配问题
- 确保格式一致
- 简单可靠
**示例**
```bash
# 重新创建配置文件
write config.yaml "完整的配置文件内容"
```
## 📝 标准编辑流程
### 步骤1准备工作
```bash
# 1.1 备份原文件
cp file.md file.md.$(date +%Y%m%d_%H%M%S).backup
# 1.2 检查文件状态
ls -la file.md
file file.md # 检查文件类型
# 1.3 查看精确内容
cat -A file.md | head -20 # 查看包括特殊字符
```
### 步骤2验证匹配
```bash
# 2.1 检查要编辑的文本是否存在
grep -n "要匹配的文本" file.md
# 2.2 检查匹配次数应该是1次
grep -c "要匹配的文本" file.md
# 2.3 查看上下文
grep -A2 -B2 "要匹配的文本" file.md | cat -A
```
### 步骤3执行编辑
```bash
# 3.1 小范围编辑(推荐)
edit file.md "精确匹配的文本" "新的文本"
# 3.2 或重新创建文件
write file.md "完整的新内容"
```
### 步骤4验证结果
```bash
# 4.1 检查文件完整性
ls -la file.md # 文件大小合理
head -5 file.md # 内容开头正确
# 4.2 验证关键内容存在
grep "关键内容" file.md
# 4.3 与备份比较
diff file.md.backup file.md | head -20
```
### 步骤5清理和记录
```bash
# 5.1 记录编辑操作
echo "$(date): 编辑file.md - 修改了X处" >> edit-log.md
# 5.2 清理临时备份(可选)---
title: 文件编辑最佳实践指南
author: shenwei
---
---
title: 文件编辑最佳实践指南
source:
author: shenwei
published:
created:
description:
tags: []
---
# rm file.md.backup # 确认无误后再删除
```
## 🔧 高级技巧
### 处理换行符问题
```bash
# 检测换行符类型
file file.md
# 输出: ASCII text 或 ASCII text, with CRLF line terminators
# 转换为Unix换行符
sed -i 's/\r$//' file.md
# 转换为DOS换行符
sed -i 's/$/\r/' file.md
```
### 处理空格和制表符
```bash
# 查看不可见字符
cat -A file.md | grep -n "要编辑的行"
# 标准化空格(制表符转空格)
expand -t 4 file.md > file.md.new && mv file.md.new file.md
# 标准化制表符(空格转制表符)
unexpand -t 4 file.md > file.md.new && mv file.md.new file.md
```
### 使用脚本自动化
```bash
#!/bin/bash
# safe-edit.sh - 安全的文件编辑脚本
FILE="$1"
OLD_TEXT="$2"
NEW_TEXT="$3"
# 备份
BACKUP="${FILE}.backup.$(date +%s)"
cp "$FILE" "$BACKUP"
# 验证匹配
MATCH_COUNT=$(grep -c "$OLD_TEXT" "$FILE")
if [ "$MATCH_COUNT" -eq 0 ]; then
echo "错误:未找到匹配文本"
exit 1
elif [ "$MATCH_COUNT" -gt 1 ]; then
echo "警告:找到 $MATCH_COUNT 处匹配,可能不精确"
fi
# 执行编辑
edit "$FILE" "$OLD_TEXT" "$NEW_TEXT"
# 验证结果
if [ $? -eq 0 ]; then
echo "✅ 编辑成功"
# 可选:清理备份
# rm "$BACKUP"
else
echo "❌ 编辑失败,恢复备份"
cp "$BACKUP" "$FILE"
exit 1
fi
```
## ⚠️ 常见问题与解决方案
### 问题1`edit`工具失败
**症状**`Edit: in ... failed`
**原因**:文本不匹配(换行符、空格、内容变化)
**解决**
1. 使用`write`重新创建文件
2. 或使用更精确的匹配文本
3. 或先备份再尝试
### 问题2权限不足
**症状**`Permission denied`
**原因**:文件权限设置
**解决**
```bash
# 检查权限
ls -la file.md
# 临时修改权限(谨慎使用)
chmod +w file.md
# 编辑后恢复权限
chmod 644 file.md
```
### 问题3文件被锁定
**症状**`Resource busy` 或编辑后内容恢复
**原因**:其他进程正在使用文件
**解决**
```bash
# 检查哪个进程在使用
lsof file.md
# 等待或停止相关进程
# 或复制到临时文件编辑
cp file.md file.md.tmp
edit file.md.tmp "old" "new"
mv file.md.tmp file.md
```
## 📊 编辑策略选择矩阵
| 场景 | 推荐工具 | 备份策略 | 验证级别 |
|------|----------|----------|----------|
| 小修改 | `edit` | 自动备份 | 中等 |
| 大修改 | `write` | 手动备份 | 高 |
| 关键文件 | `write` + 版本控制 | 多重备份 | 最高 |
| 模板文件 | 模板系统 | 版本控制 | 中等 |
| 批量编辑 | 脚本 | 完整备份 | 高 |
## 🎓 经验教训
### 从今天错误中学到的
1. **不要假设文件内容**:总是先验证
2. **换行符是隐形杀手**:使用`cat -A`查看
3. **备份是救命稻草**:今天备份救了两次
4. **简单往往更好**`write``edit`更可靠
### 成功模式
1. **测试驱动编辑**:先在小文件测试
2. **增量修改**:一次只改一处
3. **即时验证**:编辑后立即检查
4. **文档记录**:记录什么方法有效
## 🔮 未来改进方向
### 工具增强
1. **智能`edit`工具**:支持模糊匹配
2. **编辑预览**:显示编辑前后的差异
3. **批量操作**:支持多文件同时编辑
4. **版本集成**与Git等版本控制系统集成
### 流程优化
1. **标准化编辑模板**:创建可重用的编辑脚本
2. **编辑审计日志**:记录所有编辑操作
3. **自动恢复系统**:失败时自动回滚
4. **协作编辑支持**:多用户安全编辑
### 培训和教育
1. **新手指南**:文件编辑入门教程
2. **案例研究**:成功和失败的编辑案例
3. **最佳实践库**:收集和分享有效方法
4. **社区贡献**:鼓励用户分享技巧
## ✅ 检查清单
### 编辑前检查
- [ ] 文件已备份
- [ ] 权限正确
- [ ] 内容已验证
- [ ] 匹配文本精确
- [ ] 有回滚计划
### 编辑后检查
- [ ] 文件大小合理
- [ ] 关键内容存在
- [ ] 格式正确
- [ ] 备份可恢复
- [ ] 记录编辑操作
## 📞 支持资源
### 内部文档
- `file-editing-best-practices.md`(本文档)
- `learnings/2026-03-14-file-edit-failure.md`(错误分析)
- `scripts/safe-edit.sh`(安全编辑脚本)
### 外部参考
- OpenClaw文档文件操作工具
- Unix文本处理工具手册
- 版本控制系统最佳实践
---
**版本**: 1.0
**创建日期**: 2026-03-14
**最后更新**: 2026-03-14 00:25 GMT+8
**作者**: 星曜 (OpenClaw助手)
**状态**: ✅ 生效中