ws-ckpt は、AI エージェント ワークスペース用のスナップショットツールで、ミリ秒レベルのチェックポイントおよびロールバック機能を提供します。
Harness Agent での ws-ckpt の使用
1. インストール
1.1 ws-ckpt CLI の確認
ws-ckpt --version
ツールがインストールされていない場合は、yum を使用してインストールします。
sudo yum install ws-ckpt
1.2 OpenClaw 用の ws-ckpt プラグインのインストール
プラグインをインストールまたはアンインストールするには、次のコマンドを実行します。
# OpenClaw 用のプラグインをインストール
ws-ckpt plugin install --runtime openclaw
# OpenClaw 用のプラグインをアンインストール
ws-ckpt plugin uninstall --runtime openclawデフォルトのワークスペースパスは ~/.openclaw/workspace です。このパスをカスタマイズするには、OpenClaw に自然言語で指示するか、~/.openclaw/ws-ckpt.json 設定ファイルを変更します。
"workspace": "/path/to/workspace"-
ワークスペースパスは、OpenClaw の起動ディレクトリ、またはいずれかの親ディレクトリであってはなりません。
-
スナップショット機能はファイルシステムを変更し、ワークスペース内のプロセスの cwd に影響を与えるため、ワークスペースパスをホームディレクトリやルートディレクトリなどの重要なシステムディレクトリに設定してはなりません。
注:OpenClaw ゲートウェイは通常、ホームディレクトリから起動され、TUI は TUI コマンドが実行されるディレクトリから起動されます。
自動スナップショットを有効にするには、インストール後に OpenClaw に自然言語で指示するか、~/.openclaw/ws-ckpt.json 設定ファイルを変更します。有効にすると、プラグインは各会話ラウンドの終了時にスナップショットを作成します。
"autoCheckpoint": true1.3 Hermes 用の ws-ckpt プラグインのインストール
プラグインをインストールまたはアンインストールするには、次のコマンドを実行します。
# Hermes 用のプラグインをインストール
ws-ckpt plugin install --runtime hermes
# Hermes 用のプラグインをアンインストール
ws-ckpt plugin uninstall --runtime hermesワークスペースパスを設定する必要があります。プラグインをインストールした後、次のコマンドを実行します。
# 設定ファイルを更新してワークスペースを設定
hermes config set plugins.ws-ckpt.workspace /path/to/workspace-
ワークスペースパスは、Hermes の起動ディレクトリ、またはいずれかの親ディレクトリであってはなりません。
-
スナップショット機能はファイルシステムを変更し、ワークスペース内のプロセスの cwd に影響を与えるため、ワークスペースパスをホームディレクトリやルートディレクトリなどの重要なシステムディレクトリに設定してはなりません。
注:Hermes ゲートウェイは通常、~/.hermes/hermes-agent から起動され、TUI は TUI コマンドが実行されるディレクトリから起動されます。
自動スナップショットを有効にするには、プラグインのインストール後に次のコマンドを実行するか、Hermes に自然言語で指示します。有効にすると、プラグインは各会話ラウンドの終了時に自動スナップショットを作成します。
# 設定ファイルを更新して自動スナップショットを有効化
hermes config set plugins.ws-ckpt.autoCheckpoint true1.4 他のエージェント用の ws-ckpt スキルのインストール
ローカルインストール
-
スキルファイルパス: /usr/share/anolisa/runtime/skills/ws-ckpt/SKILL.md
-
エージェントへの指示: "Install the skill from /usr/share/anolisa/runtime/skills/ws-ckpt/SKILL.md."
GitHub からのインストール
-
スキルファイルの GitHub URL: https://github.com/alibaba/anolisa/blob/main/src/ws-ckpt/src/skills/ws-ckpt/SKILL.md
-
エージェントへの指示: "Install the skill from https://github.com/alibaba/anolisa/blob/main/src/ws-ckpt/src/skills/ws-ckpt/SKILL.md."
プラグインとスキルは同時にインストールできず、相互排他的です。
スキルには、モデルによって誤って解釈されるリスクがあります。プラグインの使用を推奨します。
2. 自然言語コマンドの使用
2.1 ワークスペースディレクトリの設定
# ユーザー入力
Set the snapshot workspace directory to /path/to/workspace
重要:OpenClaw の設定変更を永続化すると、ゲートウェイの再起動がトリガーされます。そのため、セッション内の変更はメモリ内でのみ行われ、現在のセッションにのみ適用されます。
2.2 スナップショットの作成
# ユーザー入力
Create a snapshot named test1 with the message "test snapshot"
重要:スナップショットには一意の名前を付ける必要があります。この名前は、後続のコマンドでスナップショットを識別するために使用します。
2.3 自動スナップショットの有効化
有効にすると、各会話ラウンドの後にスナップショットが自動的に作成されます。
# ユーザー入力
Enable automatic snapshots for each conversation round2.4 スケジュールされたスナップショットの有効化
有効にすると、指定した時間にスナップショットが自動的に作成されます。
スケジュールされたジョブでは、5 フィールドの cron 式を使用して分、時、月の日、月、曜日を指定します。この形式は、ほとんどの定期的および 1 回限りのスケジューリングをサポートしますが、秒単位の精度、イベントベースのトリガー (例:ファイル変更後に実行)、または連鎖スケジューリング (例:A の完了後に B を実行) はサポートしていません。
# ユーザー入力
Schedule a snapshot for 12:00 PM every day2.5 スナップショットの一覧表示
# ユーザー入力
List all snapshots2.6 スナップショットのロールバック
# ユーザー入力
Roll back to snapshot test1重要:スナップショットを名前で指定する必要があります。
2.7 スナップショットの削除
# ユーザー入力
Delete snapshot test1重要:スナップショットを名前で指定する必要があります。
2.8 自動スナップショットクリーンアップの有効化
# ユーザー入力
Enable automatic snapshot cleanup and keep only snapshots from the last 7 daysデフォルトでは、自動クリーンアップ設定は現在のワークスペースにのみ適用されます。クリーンアップポリシーをサーバー上のすべてのワークスペースに適用するには、グローバルな自動クリーンアップを明示的に設定する必要があります。
CLI の使用
1. スナップショットの作成
ws-ckpt checkpoint -w <workspace> [-s <snapshot id>] [-m <message>] [--metadata <json>]|
パラメーター |
エイリアス |
必須 |
説明 |
|
|
|
はい |
ワークスペースのパスまたは ID。 |
|
| いいえ | スナップショットの一意の ID。指定しない場合、自動的に生成されます。 |
|
|
|
いいえ |
スナップショットの説明。 |
|
|
いいえ |
JSON 形式の追加メタデータ。 |
例:
# 基本的な使用法
ws-ckpt checkpoint -w ./my-project -s test
# メッセージ付き
ws-ckpt checkpoint -w ./my-project -s test -m "initial state"
# メタデータ付き
ws-ckpt checkpoint -w ws-6d5aaa -s test --metadata '{"tool":"write","file":"main.py"}'2. 特定のスナップショットへのロールバック
ws-ckpt rollback -w <workspace> {-s <snapshot> | -n <num_ancestors>} [--preview]--snapshot パラメーター (エイリアス -s) には、test のようなスナップショット ID を指定します。
--workspace (エイリアス -w) は、ワークスペースのパスまたは ID を指定します。
|
パラメーター |
エイリアス |
必須 |
説明 |
|
|
| いいえ | ターゲットスナップショットの ID。このパラメーターは |
|
| いいえ | 親チェーンに沿って N 個のスナップショットをロールバックします。このパラメーターは |
|
| はい | ワークスペースのパスまたは ID。 |
| いいえ | ターゲットスナップショットと現在のワークスペースとの差分を表示しますが、変更は適用しません。 |
例:
# ID でスナップショットにロールバック
ws-ckpt rollback -w ./my-project -s test
# 3 つのスナップショットをロールバック
ws-ckpt rollback -w ./my-project -n 3
# 'test' スナップショットと現在のワークスペースとの差分をプレビュー
ws-ckpt rollback -w ./my-project -s test --preview3. スナップショットの一覧表示
ws-ckpt list [-w <workspace>] [--format <table|json>]|
パラメーター |
エイリアス |
必須 |
説明 |
|
|
|
いいえ |
|
|
|
いいえ |
出力形式。有効な値:table または json。 |
例:
# すべてのワークスペースのスナップショットを一覧表示
ws-ckpt list
# 特定のワークスペースのスナップショットを一覧表示
ws-ckpt list -w ./my-project
# JSON 形式で出力
ws-ckpt list -w workspace-6d5aaa --format json4. スナップショットの差分の表示
ws-ckpt diff -w <workspace> -f <snapshot> [-t <snapshot>]パラメーター | エイリアス | 必須 | 説明 |
|
| はい | ワークスペースのパスまたは ID。 |
|
| はい | 開始スナップショットの ID。 |
| | いいえ | ターゲットスナップショットの ID。省略した場合、コマンドは from スナップショットと現在のワークスペースの状態を比較します。 |
例:
# 2 つのスナップショットを比較
ws-ckpt diff -w ./my-project -f v1 -t v2
# スナップショットと現在のワークスペースの状態を比較
ws-ckpt diff -w ./my-project -f v1
5. スナップショットの削除
ws-ckpt delete [-w <workspace>] -s <snapshot> [--force]|
パラメーター |
エイリアス |
必須 |
説明 |
|
|
|
はい |
スナップショットの ID。 |
|
|
|
いいえ |
ワークスペースのパスまたは ID。スナップショット ID がグローバルに一意である場合、 |
例:
# 1 つのスナップショットを削除
ws-ckpt delete -w ./my-project -s test
# スナップショット ID でグローバルに削除 (-w は ID が一意であれば不要)
ws-ckpt delete -s test6. ステータスの確認
ws-ckpt status [-w <workspace>] [--format <table|json>]|
パラメーター |
エイリアス |
必須 |
説明 |
|
|
|
いいえ |
|
|
|
いいえ |
出力形式。有効な値:table または json。 |
例:
# グローバルステータス
ws-ckpt status
# 特定のワークスペースのステータス
ws-ckpt status -w ./my-project7. 自動スナップショットクリーンアップの設定
ws-ckpt config
[-g | -w <workspace>]
[--enable-auto-cleanup]
[--disable-auto-cleanup]
[--auto-cleanup-keep <AUTO_CLEANUP_KEEP>]
[--auto-cleanup-interval <AUTO_CLEANUP_INTERVAL>]|
パラメーター | エイリアス |
必須 |
説明 |
|
| いいえ | コマンドがグローバル設定に適用されることを指定します。 |
|
| いいえ | 特定のワークスペースの設定を指定します。 |
|
|
いいえ |
自動スナップショットクリーンアップを有効にします。 | |
|
|
いいえ |
自動スナップショットクリーンアップを無効にします。 | |
|
|
いいえ |
クリーンアップの保持設定。整数 (カウントモード。0 はクリーンアップを無効化) または "30d" などの保持期間 (期間モード。有効な単位は秒、分、時、日、週) のいずれかを指定します。 | |
|
|
いいえ |
自動クリーンアップの間隔 (秒単位)。値が 0 の場合、スケジューリングループが無効になります。 |
クリーンアップは、グローバルまたは個々のワークスペースに対して設定できます。ワークスペース固有の設定は、グローバル設定を上書きします。
例:
# 設定の表示
# 現在の設定の概要を表示
ws-ckpt config
# グローバル設定の表示
ws-ckpt config -g
# 特定のワークスペースの設定を表示
ws-ckpt config -w ~/proj
# 設定の変更
# === グローバル設定 ===
# 自動スナップショットクリーンアップを有効にし、最新 10 件のスナップショットを保持
ws-ckpt config -g --enable-auto-cleanup --auto-cleanup-keep 10
# 自動スナップショットクリーンアップを有効にし、過去 7 日間のスナップショットを保持
ws-ckpt config -g --enable-auto-cleanup --auto-cleanup-keep 7d
# グローバルな自動スナップショットクリーンアップを無効化
ws-ckpt config -g --disable-auto-cleanup
# === ワークスペースごとの設定 (グローバルを上書き) ===
# 特定のワークスペースのクリーンアップを有効にし、最新 10 件のスナップショットを保持
ws-ckpt config -w ~/proj --enable-auto-cleanup --auto-cleanup-keep 10
# 特定のワークスペースのクリーンアップを有効にし、過去 7 日間のスナップショットを保持
ws-ckpt config -w ~/proj --enable-auto-cleanup --auto-cleanup-keep 7d
# 特定のワークスペースのクリーンアップを無効化
ws-ckpt config -w ~/proj --disable-auto-cleanup