面向 Claude Code 的显式特权工作流,用备份、日志、diff 和安全回滚来降低敏感文件修改时的后顾之忧。
v2 新特性: 并发安全 🔒 | SQLite 日志 ⚡ | 依赖分析 🔗 | 智能快照 📸 | 分层备份 💾 | 实时监控 👀
- 🔄 可回滚 - 所有修改都有备份,支持一键回滚
- 📝 SQLite 日志 - 快速操作查询和过滤(新增)
- 🔍 Diff 查看 - 修改前后对比一目了然
- 🛡️ 安全校验 - 对象不一致时拒绝破坏性回滚
- 🔗 依赖分析 - 自动检测操作间依赖,防止不安全回滚(新增)
- 🤖 自动确认 - 可选的自动点击"Allow"按钮守护进程(改进)
- 💾 分层备份 - 主+副本备份,支持多地点恢复(新增)
- 👀 实时监控 - 检测外部文件变更并报警(新增)
- ⚙️ 并发安全 - 文件级锁,支持多进程安全访问(新增)
# 克隆仓库
git clone <repo-url> ~/.claude/skills/sudo
# 或更新现有安装
cd ~/.claude/skills/sudo
git pull
# 首次安装,迁移旧数据
python3 ~/.claude/skills/sudo/operation_logger_v2.py --migrate| 命令 | 说明 |
|---|---|
/sudo |
进入特权工作流 |
/sudo exit |
退出特权工作流 |
/sudo status |
查看当前状态和存储统计 |
/sudo history [n] |
查看最近 n 条操作记录 |
/sudo diff [path|n] |
查看变更差异 |
/sudo rollback [n] |
回滚最近 n 条操作(智能依赖检查) |
/sudo query [path] |
快速查询(新增) |
/sudo backup-clean |
清理 7 天前的备份 |
/sudo backup-status |
查看备份和存储使用情况(新增) |
# 进入特权模式
/sudo
# 修改敏感文件前记录
python3 ~/.claude/skills/sudo/sudo.py log-modify /etc/config.yaml
# 执行修改...
# 修改完成后记录
python3 ~/.claude/skills/sudo/sudo.py finalize-modify /etc/config.yaml
# 查看变更
/sudo diff /etc/config.yaml
# 如果需要回滚(自动检查依赖)
/sudo rollback 1
# 查看存储使用
/sudo status-
备份目录:
~/.claude/sudo-backups/- 主备份位置
- 自动按日期组织
- 支持多地点副本
-
日志目录:
~/.claude/sudo-logs/- JSONL 日志(向后兼容)
- SQLite 数据库(
operations.db) - 自动迁移旧日志
-
状态文件:
~/.claude/sudo-state.json- 工作流状态跟踪
- 上次进入/退出时间
比原有的 JSONL 系统快 50 倍:
# 查询特定文件的所有操作
python3 ~/.claude/skills/sudo/sudo.py query /etc/config.yaml
# 自动按类型过滤
python3 ~/.claude/skills/sudo/sudo.py query --type modify --state active自动检测操作链,防止不安全的回滚:
# 如果操作 2 被操作 3, 4, 5 依赖,会拒绝回滚
/sudo rollback 2
# ✗ Error: Cannot rollback - depended by operations 3, 4, 5
# 但允许一起回滚整个链
/sudo rollback 2 3 4 5 # 按依赖顺序逆序回滚对大文件友好的三层验证:
- 快速层 (< 1ms): 比较 mtime/size/mode
- 部分层 (< 50ms): 头尾和中间块的 hash
- 完整层 (< 1s): 完整 SHA256
检测外部对被跟踪文件的修改:
from file_monitor import FileMonitor
monitor = FileMonitor()
monitor.register_callback(lambda path, change, old, new: print(f"Changed: {change}"))
monitor.start()使用文件级互斥锁,支持多进程:
# 终端 1
/sudo
# 执行操作...
# 终端 2 (同时执行,完全安全)
/sudo history
/sudo status
# 自动等待 (< 30s 超时)# 运行完整的单元测试套件
python3 -m pytest tests/test_optimizations.py -v
# 或使用 unittest
python3 -m unittest tests.test_optimizations -v
# 测试覆盖:
# - SafetyRules 命令分类
# - SnapshotEngine 快照验证
# - ConcurrencyManager 并发锁
# - DependencyAnalyzer 依赖分析
# - 集成测试首次运行 v2 时,会自动:
- ✅ 扫描所有现有 JSONL 日志
- ✅ 创建 SQLite 数据库
- ✅ 导入所有历史操作
- ✅ 保留原始 JSONL(备用)
# 验证迁移
python3 ~/.claude/skills/sudo/sudo.py status
# 应该看到: "operations": XXX 和 "db_path": ...# 备份旧日志
cp -r ~/.claude/sudo-logs ~/.claude/sudo-logs.backup
# 备份备份目录
tar -czf ~/sudo-backups-backup.tar.gz ~/.claude/sudo-backups/# 自定义存储位置(高级用法)
export SUDO_SKILL_HOME=/custom/path
# 运行命令...
/sudo修改文件监控间隔:
from file_monitor import FileMonitor
monitor = FileMonitor(check_interval=0.5) # 500ms(默认 1s)# 检查权限
ls -la ~/.claude/sudo-backups/
ls -la ~/.claude/sudo-logs/
# 修复权限
chmod 700 ~/.claude/sudo*# 检查进程状态
python3 ~/.claude/skills/sudo/auto_confirm_v2.py status
# 查看日志
tail -f ~/.claude/sudo-auto-confirm.log
# 手动重启
python3 ~/.claude/skills/sudo/auto_confirm_v2.py stop
python3 ~/.claude/skills/sudo/auto_confirm_v2.py start# 重建数据库(保留日志)
rm ~/.claude/sudo-state.json ~/.claude/sudo-logs/operations.db
# 重新启动会自动重建
/sudo status测试环境:macOS 12, M1 Pro, 16GB RAM
| 操作 | 时间 |
|---|---|
| 查询最近 100 个操作 | 2.3ms |
| 1GB 文件快速检查 | 68ms |
| 备份一个 500MB 文件 | 850ms |
| 依赖分析 (100 操作) | 12ms |
| 快照创建 | 5-50ms |
MIT License
- ✨ 新增 SQLite 日志系统
- ✨ 新增依赖分析引擎
- ✨ 新增实时文件监控
- ✨ 新增分层备份策略
- ✨ 新增并发安全管理
- ✨ 改进自动确认鲁棒性
- 📈 性能大幅提升 (30-50x 快)
- 🔧 完整的向后兼容性
- ✅ 综合单元测试
- 基础备份和回滚系统
- JSONL 日志存储
- 自动确认守护进程
- 基本的依赖关系检查