mcpField
U
unity-workflow

unity-workflow

github.com/besty0728エージェントワークフロー1.9k83 回インストール今日更新
リポジトリ

unity-workflow について

unity-workflowは、UnityのAI操作を記録してロールバックする永続履歴スキルモジュールです。エージェントはタスクや会話単位で変更を追跡し、複数スキルの計画を確認して、Editorの再起動後も記録済みの操作を元に戻せます。

主な機能

  1. 01タスク・セッション単位の変更追跡
  2. 02永続スナップショットとロールバック
  3. 03複数ステップの取り消しとやり直し
  4. 04複数スキルの実行計画
  5. 05アセットの一括検索と再試行

活用シーン

  1. 01リスクのある編集前に変更を記録
  2. 02会話中のUnity変更を一括で取り消し
  3. 03一括操作前に実行計画を確認
  4. 04バッチレポートの失敗項目を再試行

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/besty0728/unity-skills --skill unity-workflow

インストール後、Claude Code で/unity-workflowを入力して読み込まれたか確認します。

詳細

このモジュールのスキルを呼び出す前に: 名前や説明から推測したパラメーターでスキルを呼び出そうとしている場合は、いったん停止し、まずこのファイルを読むか、GET /skills/recommend?includeSchema=true でスキーマを取得してください。recommend/schema からパラメーター定義をすでに取得している場合は、そのまま dryRun に進めます。

トリガー

  • タスクまたはセッション全体を取り消す
  • リスクの高い変更の前にスナップショットを作成する
  • 一括操作を計画/プレビューする
  • ロールバックする
  • 撤销整个任务或会话、高危改动前快照、规划/预览批量操作、回滚

ワークフロースキル

AI 操作の永続的な履歴およびロールバックシステム(「タイムマシン」)です。 タスクにタグを付けたり、オブジェクトの変更前にスナップショットを作成したり、Editor の再起動後でも特定のタスクを取り消したりできます。

新機能:セッション単位の取り消し — 会話中のすべての変更をまとめて取り消せます。

動作モード

  • 承認:このモジュールのほとんどのスキルは SkillMode.SemiAuto(bookmark / history / task / session 系列の読み取り専用クエリと workflow_plan。後者は ReadOnly=true で、集約された計画のみを生成)に設定されており、直接実行できます。副作用のあるスキル(bookmark_set / bookmark_goto / workflow_snapshot_object / workflow_snapshot_created / batch_retry_failed)はデフォルトの SkillMode.FullAuto で実行され、grant が必要です。
  • 自動/バイパス:FullAuto は直接実行されます。
  • NeverInSemi に該当する高リスクスキル:bookmark_delete / workflow_delete_task(Operation.Delete に設定。ブックマーク/タスク記録を削除)、workflow_clear_history(Operation.Delete + RiskLevel=high に設定。すべての履歴、redo スタック、ファイルストレージを消去し、元に戻せません)。これらは Approval/Auto では MODE_FORBIDDEN を返し、Bypass または Allowlist に該当する場合にのみ呼び出せます。

注意:workflow_undo_task / workflow_session_undo は Delete operation ではありません(Modify/Execute に設定)。Approval/Auto でも、記録済みのタスクを直接取り消せます。

サーフェスプロファイル: workflow_undo_task / workflow_redo_task / workflow_revert_task / workflow_session_undo は、対象タスクが復元するすべてのスナップショットを検査します。スナップショットのいずれかが、アクティブなプロファイルで除外されているカテゴリ(シーンの GameObject、または .unity / .mat アセット)を作成する場合、呼び出し全体が SURFACE_EXCLUDED で拒否され、一部だけが適用されることはありません(surfaceProfile/category/operation/manualDoc/userControlled/hint は最上位にあり、details の下にはネストされません)。スクリプト、プレハブ、テクスチャ、ScriptableObjects、Editor/プロジェクト設定のスナップショットには影響しません。これらはどのプロファイルでも引き続き取り消し可能です。

使用しないでください(よくある誤った思い込み):

  • workflow_save は存在しません → タスクを終了して保存するには workflow_task_end を使用してください
  • workflow_rollback は存在しません → workflow_undo_task(taskId を指定)または workflow_session_undo(sessionId を指定)を使用してください
  • workflow_create は存在しません → workflow_task_start を使用してください
  • workflow_revert_task は非推奨です → workflow_undo_task を使用してください

使い分け:

  • 単純な取り消し/やり直し(1 ステップ)→ editor_undo / editor_redo(editor モジュール)
  • 複数ステップの取り消し → steps パラメーターを指定して history_undo(このモジュール)
  • 会話単位での取り消し → workflow_session_undo(このモジュール)

ブックマークスキル

bookmark_set

現在の選択項目とシーンビューの位置をブックマークとして保存します。

パラメーター型必須デフォルト説明
bookmarkNamestringはい-ブックマークの名前
notestringいいえnullブックマークの任意のメモ

戻り値: { success, bookmark, selectedCount, hasSceneView, note }

bookmark_goto

ブックマークから選択項目とシーンビューを復元します。

パラメーター型必須デフォルト説明
bookmarkNamestringはい-復元するブックマークの名前

戻り値: { success, bookmark, restoredSelection, note }

bookmark_list

保存済みのブックマークをすべて一覧表示します。

パラメーターはありません。

戻り値: { success, count, bookmarks: [{ name, selectedCount, hasSceneView, note, createdAt }] }

bookmark_delete

ブックマークを削除します。

パラメーター型必須デフォルト説明
bookmarkNamestringはい-削除するブックマークの名前

戻り値: { success, deleted }

履歴スキル

history_undo

最後の操作を取り消します(複数ステップの取り消しも可能です)。

パラメーター型必須デフォルト説明
stepsintいいえ1取り消すステップ数

戻り値: { success, undoneSteps }

history_redo

最後に取り消した操作をやり直します(複数ステップのやり直しも可能です)。

パラメーター型必須デフォルト説明
stepsintいいえ1やり直すステップ数

戻り値: { success, redoneSteps }

history_get_current

現在の取り消しグループの名前を取得します。

パラメーターはありません。

戻り値: { success, currentGroup, groupIndex }

計画とバッチ管理

workflow_plan

サーバー側で複数のスキルを組み合わせた実行計画を生成します。

パラメーター型必須デフォルト説明
skillsJsonstringはい-{ "name": "...", "params": { ... } } エントリーの JSON 配列

戻り値: { totalSteps, totalRisk, steps, dependencies, warnings, mayDisconnect }

batch_query_assets

バッチクリーンアップや移行作業の前に役立つフィルターを使って、プロジェクトのアセットを検索します。

パラメーター型必須デフォルト説明
searchFilterstringいいえ-追加の AssetDatabase.FindAssets フィルターテキスト
folderstringいいえAssets検索ルート
typeFilterstringいいえ-t:Material や Prefab などのアセットタイプフィルター
namePatternstringいいえ-拡張子を除いたファイル名に適用する正規表現
labelFilterstringいいえ-l:Addressable などのアセットラベルフィルター
maxResultsintいいえ200返されるアセットの最大数

戻り値: { count, totalMatched, summary, assets }

batch_retry_failed

以前のバッチ実行レポートで失敗した項目のみを再試行します。レポートに保存された元の操作コンテキストを再利用します。

パラメーター型必須デフォルト説明
reportIdstringはい-batch_report_get / batch_report_list のソースレポート ID
runAsyncboolいいえtruejobId をすぐに返すか、完了まで待機するか
chunkSizeintいいえ100再試行実行のチャンクサイズ

戻り値: { status, jobId?, retryCount, originalReportId, reportId? }

セッション管理(会話単位の取り消し)

workflow_session_start

新しいセッション(会話単位)を開始します。すべての変更が追跡され、まとめて取り消せます。 各会話の開始時に呼び出してください。

パラメーター型必須デフォルト説明
tagstringいいえnullセッションのラベル

戻り値: { success, sessionId, message }

workflow_session_end

現在のセッションを終了し、追跡されたすべての変更を保存します。 各会話の終了時に呼び出してください。

パラメーターはありません。

戻り値: { success, sessionId, message }

workflow_session_undo

特定のセッション中に行われたすべての変更を取り消します(会話単位の取り消し)。

パラメーター型必須デフォルト説明
sessionIdstringいいえnull取り消すセッションの UUID。指定しない場合は、直近のセッションを取り消します

戻り値: { success, sessionId, message }

workflow_session_list

記録されたすべてのセッションを一覧表示します(会話単位の履歴)。

パラメーターはありません。

戻り値: { success, count, currentSessionId, sessions: [{ sessionId, taskCount, totalChanges, startTime, endTime, tags }] }

workflow_session_status

現在のセッションのステータスを取得します。

パラメーターはありません。

戻り値: { success, hasActiveSession, currentSessionId, isRecording, currentTaskId, currentTaskTag, currentTaskDescription, snapshotCount }

タスクレベルのスキル

workflow_task_start

取り消しのために変更を追跡する、新しい永続ワークフロータスクを開始します。完了したら workflow_task_end を呼び出してください。

パラメーター型必須デフォルト説明
tagstringはい-タスクの短いラベル(例:「NPC を作成」)
descriptionstringいいえ""詳細な説明またはプロンプト

戻り値: { success, taskId, message }

workflow_task_end

現在のワークフロータスクを終了して保存します。アクティブなタスクが必要です(先に workflow_task_start を呼び出してください)。

パラメーターはありません。

戻り値: { success, taskId, snapshotCount, message }

workflow_snapshot_object

変更前に、オブジェクトの状態を手動でスナップショットします。アクティブなタスクが必要です(先に workflow_task_start を呼び出してください)。 component_set_property、gameobject_set_transform などを呼び出す前に、必ずこれを呼び出してください。

パラメーター型必須デフォルト説明
namestringいいえnullGame Object の名前
instanceIdintいいえ0オブジェクトのインスタンス ID(推奨)

戻り値: { success, objectName, type }

workflow_snapshot_created

新しく作成したオブジェクトを、取り消し追跡用に記録します。アクティブなタスクが必要です(先に workflow_task_start を呼び出してください)。 注: component_add と gameobject_create は作成したオブジェクトを自動的に記録するため、通常は手動で呼び出す必要はありません。

パラメーター型必須デフォルト説明
namestringいいえnullGame Object の名前
instanceIdintいいえ0オブジェクトのインスタンス ID(推奨)

戻り値: { success, objectName, type }

workflow_list

永続ワークフローの履歴を一覧表示します。

パラメーターはありません。

戻り値: { success, count, history: [{ id, tag, description, time, changes }] }

workflow_undo_task

特定のタスクによる変更を取り消し、以前の状態に復元します。取り消したタスクは保存され、後からやり直すことができます。

パラメーター型必須デフォルト説明
taskIdstringはい-取り消すタスクの UUID

戻り値: { success, taskId }

workflow_redo_task

以前に取り消したタスクをやり直し、変更を復元します。

パラメーター型必須デフォルト説明
taskIdstringいいえnullやり直すタスクの UUID。指定しない場合は、最後に取り消したタスクをやり直します

戻り値: { success, taskId }

workflow_undone_list

やり直し可能な、取り消し済みタスクをすべて一覧表示します。

パラメーターはありません。

戻り値: { success, count, undoneStack: [{ id, tag, description, time, changes }] }

workflow_revert_task

(非推奨) workflow_undo_task の別名です。代わりに workflow_undo_task を使用してください。

パラメーター型必須デフォルト説明
taskIdstringはい-取り消すタスクの UUID

戻り値: { success, taskId }

workflow_delete_task

履歴からタスクを削除します(変更は元に戻さず、記録のみを削除します)。

パラメーター型必須デフォルト説明
taskIdstringはい-削除するタスクの UUID

戻り値: { success, deletedId }

workflow_clear_history

ワークフローの履歴をすべて完全に消去します。すべてのタスク、やり直し(取り消し済み)スタック、コンテンツアドレス可能なストア内のバックアップ済みファイル blob が対象です。リスクが高く、元に戻せません。 これは追跡履歴のみを削除します。プロジェクトのアセット、シーン、設定にすでに適用された変更を取り消したり、元に戻したりすることはありません。 変更をロールバックするには、消去する前に workflow_undo_task / workflow_session_undo を使用してください。

SkillOperation.Delete + RiskLevel="high" に設定されているため、NeverInSemi です(Approval/Auto では MODE_FORBIDDEN を返します。呼び出せるのは Bypass または Allowlist に該当する場合のみです)。

パラメーター: なし

戻り値: { success, before, after, message }。before / after はそれぞれ { tasks, undoneStack, historyFileBytes, fileStoreBytes } を報告します。

スナップショットの仕組み

履歴は workflow_history.json(schemaVersion 5)に保存されます。アセットと .meta のバイト列はそれぞれ Library/UnitySkills/workflow_files/<sha1> にコンテンツアドレス方式で保存され、履歴には fileHash / metaFileHash の参照が保持されます。スキーマ 2/3 の履歴はアトミックに移行されます。インライン base64 が削除される前に、従来の blob が永続化されます。

スナップショットは SnapshotType によって階層化されます。

タイプトリガー保存される内容取り消し時の動作
Created新しいアセット/フォルダーパス + GUID のみ作成されたアセット/フォルダーを削除
Movedasset_move旧パス + 新パスのみ旧パスに戻す
Deletedasset_delete などファイル + .meta をストアに移動完全に復元。.cs スクリプトを含む(旧実装では .cs を復元できませんでした)
Modifiedmaterial / SO / scene / uss / uxml / shadergraph …コンテンツアドレス方式のバックアップ + 軽量な originalJsonバックアップしたバイト列を復元
Settingエディター/プロジェクト設定WorkflowSettingRestorerRegistry 経由で処理Registry が以前の値を復元

取り消し/やり直しでは、スナップショットごとの詳細(TaskUndoResult: total / succeeded / failed / details / error)が返されます。操作は逆順に実行されます。最初の失敗が発生すると、失敗したスナップショットと未処理のスナップショットは、再試行できるように元のスタックに残ります。

自動クリーンアップ

WorkflowAutoCleanConfig(EditorPrefs キー UnitySkills.Workflow.*)は、EndTask の後と LoadHistory の後に履歴とファイルストアを整理します。デフォルト値は MaxTasks=200、MaxHistoryMB=32、MaxTaskAgeDays=30、MaxStoreMB=512、StoreMaxAgeDays=7 です。ストアの経過日数/サイズによる整理では、保持されている履歴から参照されている blob は削除されません。値を 0 にすると、その制限は個別に無効になります。

設定も確実に元に戻せるようになりました

設定クラスのスキルは以前は一方向でしたが、現在は復元機能を登録するため、ロールバックできます。対象は console_set_pause_on_error / console_set_collapse / console_set_clear_on_play、debug_set_defines、graphics_set_quality_level / graphics_set_default_render_pipeline / graphics_set_quality_render_pipeline / graphics_add_always_included_shader / graphics_remove_always_included_shader / graphics_set_shader_stripping、physics_set_gravity / physics_set_layer_collision、project_add_tag です。

Cinemachine の 28 個の書き込みスキルで、TracksWorkflow=true が設定されるようになりました(スナップショットのコードは存在していましたが、自動的にトリガーされていませんでした)。scene_save / scene_create もロールバック可能になりました(既存シーンに対する scene_save は、古いファイルを Modified スナップショットとしてバックアップします)。

既知の制限事項
  • scene_save の取り消しでは、ディスク上の .unity ファイルが復元されます。シーンが現在開いている場合、復元を反映するには Reload Scene が必要です。
  • 一度も保存されていないシーンで作成されたオブジェクト:Editor を再起動すると GlobalObjectId が無効になるため、取り消し結果の詳細では失敗として記録されます。
  • 外部への副作用(Package Manager の操作など)はロールバックできません。

最小限の例

import unity_skills

# Session-level: wrap entire conversation for bulk undo
unity_skills.call_skill("workflow_session_start", tag="Build Player")
unity_skills.call_skill("gameobject_create", name="Player", primitiveType="Capsule")
unity_skills.call_skill("component_add", name="Player", componentType="Rigidbody")
unity_skills.call_skill("workflow_session_end")
# Later: undo entire session
sessions = unity_skills.call_skill("workflow_session_list")
unity_skills.call_skill("workflow_session_undo", sessionId=sessions["sessions"][0]["sessionId"])

自動追跡される操作

セッション/タスクがアクティブな場合、以下の操作は取り消し用に自動追跡されます。

  • gameobject_create / gameobject_create_batch
  • gameobject_duplicate / gameobject_duplicate_batch
  • component_add / component_add_batch
  • ui_create_*(キャンバス、ボタン、テキスト、画像など)
  • light_create
  • prefab_instantiate / prefab_instantiate_batch
  • material_create / material_duplicate
  • terrain_create
  • cinemachine_create_vcam

変更操作では、可能な場合、変更前にシステムが対象オブジェクトのスナップショットを自動的に取得します。

正確なシグネチャ

正確な名前、パラメーター、デフォルト値、戻り値は、このファイルではなく、GET /skills/schema または unity_skills.get_skill_schema() で定義されています。

コメント