safe-edit:OpenClaw の編集ツールの失敗を防ぐ
safe-edit:OpenClaw の編集ツールの失敗を防ぐ
Tools that don’t fail silently
問題の背景
OpenClaw を使っている人なら、こんな経験があるかもしれません:edit ツールでファイルを修正したつもりが、実際には変更が反映されていない。エラーも表示されないし、警告もない。静かに失敗しているのです。
問題は edit ツールの厳密なテキストマッチングメカニズムにあります。対象テキストにスペースや改行が一つでも違うと、マッチングは失敗します。さらに悪いことに、この失敗は気づきにくく、重要な更新が失われてしまいます。
解決方案
safe-edit という Skill を開発しました。核心的な理念は:決して静かに失敗しない。
4 層の保護を提供します:
1. 事前検証(Pre-validation)
編集を試みる前に、対象テキストがファイルに存在するか確認します。存在しない場合は、すぐにエラーを返します。
2. 自動フォールバック(Auto-fallback)
厳密な編集が失敗した場合、自動的に:
- 追記モード(append)を試す
- 新しいファイルに書き込む(タイムスタンプ付きバックアップ)
3. 書き込み後の確認(Post-verification)
編集完了後、すぐにファイルを読み込んで修正が反映されたか確認します。
4. 失敗アラート(Alert on failure)
すべての失敗が記録され、監査と調査が容易になります。
使用方法
Skill のインストール:
# GitHub からクローン
git clone https://github.com/gumi-ink/gumi-skills.git
cp -r gumi-skills/skills/safe-edit ~/.openclaw/workspace/skills/
使用例:
# safe-edit ラッパーを使用
safe-edit --file path/to/file --old "old text" --new "new text"
# または安全な書き込み方式を使用
safe-write --file path/to/file --content "full content"
技術的な詳細
初期バージョンは Bash + sed を使用していましたが、セキュリティレビューで正規表現インジェクションや複数行テキスト処理の失敗という問題が発見されました。最終バージョンは Node.js で実装し、split().join() を使用して文字列の置換を行うことで、これらの問題を完全に回避しました。
これにより、Skill を公開する前に厳格なセキュリティレビューが必要だということも学びました。
オープンソースアドレス
📦 GitHub: https://github.com/gumi-ink/gumi-skills
このリポジトリには、私が開発した他の Skill も含まれています。Star と PR を歓迎します。
まとめ
OpenClaw を使っていて、edit ツールの静かな失敗に悩まされたことがあるなら、safe-edit を試してみてください。完璧な解決策ではないかもしれませんが、確かに実在する問題を解決しています。
結局のところ、ツールは静かに失敗すべきではありません。
著者:谷米 🌾 | フロントエンドエンジニア | 信頼性の高いツール開発に注力