takt

タスク管理

English 日本語 简体中文

概要

TAKT は複数のタスクを蓄積してバッチ実行するためのタスク管理ワークフローを提供します。基本的な流れは次の通りです。

  1. takt add – AI との会話でタスク要件を精緻化し、.takt/tasks.yaml に保存
  2. タスクの蓄積 – order.md ファイルを編集し、参考資料を添付
  3. takt run – すべての pending タスクを一括実行(逐次または並列)
  4. takt list – 結果を確認し、ブランチのマージ、失敗のリトライ、指示の追加

各タスクは隔離クローン(オプション)で実行され、レポートを生成し、takt list でマージまたは破棄できるブランチを作成します。

タスクの追加(takt add)

takt add を使用して .takt/tasks.yaml に新しいタスクエントリを作成します。

# インラインテキストでタスクを追加
takt add "Implement user authentication"

# GitHub Issue からタスクを追加
takt add '#28'
takt add --issue 28

タスク追加時に次の項目を確認されます。

GitHub Issue 連携

Issue 参照(例: #28)を渡すと、TAKT は GitHub CLI(gh)を介して Issue のタイトル、本文、ラベル、コメントを取得し、タスク内容として使用します。Issue 番号は tasks.yaml に記録され、ブランチ名にも反映されます。

要件: GitHub CLI(gh)がインストールされ、認証済みである必要があります。

GitHubのPR・Issue画像の自動添付

takt add --pr N、takt add --issue N(takt add '#N'も同じ経路)は、PR本文、conversationコメント、review summary、review threadコメント、Issue本文・コメントにあるMarkdown画像構文とHTMLの<img src>からGitHub添付画像を取得します。pipelineでも--pr Nと--issue Nに対応します。

成功した画像は.takt/tasks/<slug>/attachments/image-N.pngなどへ保存されます。同じURLは1ファイルにまとめられ、取得・保存に成功した画像の初出順に欠番のない番号が付きます。本文の元構文を残し、その直後に[Image #N]を補足します。order.mdの末尾には既存の## 添付画像形式でファイル一覧が追記されます。

実行時は実行先の.takt/runs/<run-slug>/context/task/attachments/へコピーされ、同じディレクトリのorder.mdから参照できます。pipelineの一時task specは実行後に削除されますが、run内の画像と指示書は残ります。

対応形式はPNG、JPEG、GIF、WebPで、画像ごとの上限は10 MiBです。Content-Typeとmagic bytesを検証し、GitHub添付以外の外部画像、コード例、HTMLコメント内の画像は取得しません。認証不可、404、通信エラー、サイズ超過、形式不一致などは画像単位で警告してスキップし、タスク登録・pipeline実行を続行します。失敗した参照には補足を付けません。

認証済みghの資格情報を使った取得を優先します。privateリポジトリの添付はトークン認証だけでは取得できない環境があり、成功は保証されません。ブラウザCookieによる取得は行いません。GitLab添付と通常のテキスト入力は自動取得の対象外です。

インタラクティブモードからのタスク保存

インタラクティブモードからもタスクを保存できます。会話で要件を整理した後に /go を使い、指示書プレビューを確認して「タスクにつむ」を選ぶと tasks.yaml に保存されます。

Issue #Nの読み込みは会話の文脈を提供します。/go は最新のタスクがそのIssueの作業かを毎回判断します。関連する指示書にはタスク見出し直後の独立した行に Issue: #N が表示され、この紐付けがあるときだけ実行・タスク保存・Issue作成へNを渡します。保存タスクの issue、生成ブランチの takt/N/{slug}、PR本文の Closes #N に同じ番号が使われます。無関係な指示書には紐付けを付けません。誤っている場合は「会話を続ける」で修正できます。/issue 後は差し替えた文脈で判断し直します。「Issueを建てる」で新しいIssue Mを作成しても、Nへの紐付けがあれば保存対象はNのままで、NへMのリンクをコメントします。紐付けがなければ新規作成したMを保存対象にします。

CLI・TUI・MCPから登録する場合は、同じIssue・PR・ブランチのpending・runningタスクがあっても追加の警告や確認なしで登録できます。ワークフロー内の自動投入だけが保存ロック内で同一対象の重複を拒否します。直接の takt add '#N' は従来どおりNを保存し、指示書の紐付け行を必要としません。

生成ブランチ名はローカルref、remote-tracking ref、未取得ブランチを含む設定済みの全remoteへ照会し、別タスククローンの所有メタデータも確認します。衝突したら -2、-3 などの候補も確認し、baseから新しいブランチを作成します。所有情報の保存が競合した場合も既存情報を上書きせず、新しいクローンのブランチを別名へ変更して保存します。照会や保存に失敗した場合は作成を中止します。明示指定した名前は従来のfetch・再利用処理で使用します。

通常のインタラクティブモードでは、「タスクにつむ」を選んだ後の worktree 設定質問で Esc を押すと、その保存を中断して行動選択メニューへ戻ります。確定済みの指示書本文と添付は同じ会話に保持されます。再度「タスクにつむ」を選ぶと質問の先頭から始まり、前回の途中回答は使われません。

MCP Client からのタスク保存

MCP client は takt-mcp stdio server を使って、shell command を直接呼ばずに pending タスクを保存し、task/run 状態を確認し、実行中 worktree clone へ追加指示を送れます。takt_enqueue_task は .takt/tasks.yaml に pending レコードを書き込み、takt_list_tasks は要約、takt_get_run は1つの run の詳細、takt_tell_run は再確認後に実行中 clone への書き込みを行います。Issue 作成後に保存が失敗し、Issue 番号まで解決済みなら、Issue は open のまま残り、MCP error result は再試行用の番号を返します。番号抽出に失敗した場合は代わりに Issue URL を返すことがあります。tool は server が許可した project root 内の絶対パス cwd を必須とし、enqueue と tell には空でない本文も必要です。pending タスクの実行には takt run、継続監視と実行には takt watch を使用してください。設定方法と tool 入力の詳細は CLI リファレンス を参照してください。

通常の assistant 会話には、MCP 対応 provider の場合だけ読み取り専用の task 状態 tool が渡されます。新しいタスクには /go、実行中 worktree clone への追加指示には /tell で対象を選び、内容を確認してから送ります。failed タスクの再投入には /requeue または /retry を使用できます。MCP 非対応 provider でも会話は利用できますが、task 状態の参照はできません。

タスクディレクトリ形式

TAKT はタスクのメタデータを .takt/tasks.yaml に、各タスクの詳細仕様を .takt/tasks/{slug}/ に保存します。

tasks.yaml スキーマ

tasks:
  - name: add-auth-feature
    status: pending
    task_dir: .takt/tasks/20260201-015714-implement-user-authentication
    workflow: default
    created_at: "2026-02-01T01:57:14.000Z"
    started_at: null
    completed_at: null

フィールドの説明は次の通りです。

フィールド 説明
name AI が生成したタスクスラグ
status pending、running、completed、failed、exceeded、または pr_failed(workflow は成功したが PR 作成/push に失敗)
task_dir order.md を含むタスクディレクトリのパス
workflow 実行に使用する workflow 名
worktree true(自動)、パス文字列、または省略(カレントディレクトリで実行)
branch ブランチ名(省略時は自動生成)
base_branch クローンと PR の base branch(takt add で選択した場合に設定)
auto_pr 実行後に PR を自動作成するかどうか
draft_pr 自動作成する PR を draft にするかどうか
issue 設定済み issue provider の Issue 番号(該当する場合)
run_slug .takt/runs/ 配下の最新実行ディレクトリのスラグ
failure 失敗タスクに記録される失敗詳細(step、error、last_message)
created_at ISO 8601 タイムスタンプ
started_at ISO 8601 タイムスタンプ(実行開始時に設定)
completed_at ISO 8601 タイムスタンプ(実行完了時に設定)

tasks.yaml には上記のほかに、TAKT が内部管理用に使用するフィールド(slug、source_run_slug、resume_mode、owner_pid、auto_requeue_count、exceeded_* など)が記録されることがあります。

タスクディレクトリのレイアウト

.takt/
  tasks/
    20260201-015714-implement-user-authentication/
      order.md          # タスク仕様(自動生成、編集可能)
      schema.sql        # 添付の参考資料(任意)
      wireframe.png     # 添付の参考資料(任意)
  tasks.yaml            # タスクメタデータレコード
  runs/
    20260201-020152-implement-user-authentication-x7k2pq/
      reports/           # 実行レポート(自動生成)
      logs/              # NDJSON セッションログ
      context/           # スナップショット(previous_responses など)
      operations/        # オペレーションジャーナル(journal.json)
      meta.json          # 実行メタデータ

run ディレクトリのスラグは実行ごとにランダムな6文字のサフィックスを付けて別採番されるため、タスクディレクトリのスラグとは一致しません。タスクの run ディレクトリを探すにはtasks.yaml の run_slug フィールドか .takt/runs/ 配下の最新ディレクトリを確認してください。

takt add は .takt/tasks/{slug}/order.md を自動作成し、task_dir への参照を tasks.yaml に保存します。実行前に order.md を自由に編集したり、タスクディレクトリに補足ファイル(SQL スキーマ、ワイヤーフレーム、API 仕様など)を追加したりできます。

タスクの実行(takt run)

.takt/tasks.yaml のすべての pending タスクを実行します。

takt run

# workflow の max_steps を無視して別の停止条件まで継続
takt run --ignore-exceed

run コマンドは pending タスクを取得して、設定された workflow を通じて実行します。各タスクは次の処理を経ます。

  1. クローン作成(worktree が設定されている場合)
  2. クローン/プロジェクトディレクトリでの workflow 実行
  3. 自動コミットとプッシュ(worktree 実行の場合)
  4. 実行後フロー(auto_pr 設定時は PR 作成)
  5. tasks.yaml のステータス更新(completed、failed、または exceeded)

workflow が max_steps に到達した場合、通常の takt run はタスクを exceeded として停止し、exceeded_max_steps、exceeded_current_iteration、resume_point などの再実行メタデータを保存します。--ignore-exceed を付けると、この iteration limit だけを無視して workflow を継続し、exceeded 用の再実行メタデータは保存しません。

MCP client はタスクの enqueue、task/run 状態の確認、実行中 clone への追加指示を行えます。pending タスクの実行には takt run、継続監視と実行には takt watch を使用してください。

並列実行(Concurrency)

takt run と takt watch は同じワーカープールを使用し、デフォルトでは逐次実行します(concurrency: 1)。~/.takt/config.yaml で並列実行を設定できます。

concurrency: 3              # takt run / takt watch の同時実行数(1-10)
task_poll_interval_ms: 500   # takt run / takt watch のポーリング間隔(100-5000ms)

concurrency が 1 より大きい場合、TAKT はワーカープールを使用して次のように動作します。

中断されたタスクのクリーンアップ

takt run が中断された場合(プロセスクラッシュ、Ctrl+C など)、running ステータスのまま残ったタスクは次回の takt run または takt watch 起動時に自動的に failed にマークされます。再実行する場合は明示的に requeue してください。

自動 Requeue

設定で auto_requeue_max_attempts を指定すると、takt run / takt watch は起動時に一度だけ適格な failed タスクを再投入し、実行中の失敗も保存済み回数の上限まで再投入します。watch の常駐中は起動時の一括処理を繰り返さず、SIGINT 後は claim・再投入を行いません。両コマンドとも入力待ち中は claim を抑止します。デフォルトは 0(手動 requeue のみ)です。詳細は設定ガイドを参照してください。

タスクの監視(takt watch)

.takt/tasks.yaml を監視し、タスクが追加されると自動実行する常駐プロセスを起動します。

takt watch

# workflow の max_steps を無視して別の停止条件まで継続
takt watch --ignore-exceed

watch コマンドの動作は次の通りです。

これは「プロデューサー-コンシューマー」ワークフローに便利です。一方のターミナルで takt add でタスクを追加し、もう一方で takt watch がそれらを自動実行します。

タスクブランチの管理(takt list)

タスクブランチの一覧表示とインタラクティブな管理を行います。

takt list

リストビューではすべてのタスクがステータス別(pending、running、completed、failed、exceeded、pr_failed)に作成日とサマリ付きで表示されます。タスクを選択すると、そのステータスに応じた操作が表示されます。一覧の最下部にはすべてのタスクを一括削除する All Delete も表示されます。

完了タスクの操作

操作 説明
View diff デフォルトブランチとの差分をページャで表示
Instruct AI との会話で追加指示を作成し、再実行
Create PR コミットして push し、タスクブランチからプルリクエストを作成
Merge from root ルートブランチの HEAD をタスクブランチにマージ。コンフリクトは AI が自動解決
Pull from remote リモート origin から最新の変更を取り込み(fast-forward のみ)
Try merge スカッシュマージ(コミットせずにステージング、手動レビュー用)
Merge & cleanup スカッシュマージしてブランチを削除
Delete すべての変更を破棄してブランチを削除

失敗タスクの操作

操作 説明
Requeue Resume または Restart の位置を選択し、会話を開かずタスクを pending に戻す
Retry 失敗コンテキスト付きのリトライ会話を開き、更新した指示書を確認して pending に戻す
Instruct run の作業ツリーに対して AI との会話で追加指示を作成し、requeue
Create PR 失敗した run の変更をコミットして push し、プルリクエストを作成
Delete 失敗したタスクレコードを削除

CLI/TUI の assistant と grill-me 会話では /requeue [補足] で failed または exceeded タスクを会話から決めます。補足は会話の最後のユーザー発話として対象タスクと開始位置の両方の判定に渡します。候補名との機械的な照合は行いません。AI が対象を決められない場合や判定に失敗した場合は候補タスクの一覧を表示し、人が選びます。開始位置が決まらない場合も選択可能な位置の一覧から選べます。タスク名、要約、workflow、開始位置を表示して Y/n で確認し、承認後は order.md を変えずに pending へ戻します。選択や確認を取りやめた場合は変更せず、その旨を会話に残します。再投入した結果もタスク名とともに会話へ残ります。/retry [補足] は従来どおり failed タスクを会話から決め、改訂後の order 全文を表示して タスクにつむ または 会話を続ける を選びます。タスクにつむと旧版をアーカイブして pending に戻し、会話を続けると変更せず会話へ戻ります。/retry で対象や開始位置が曖昧な場合や、どちらのコマンドでも候補がない場合は通知して終了します。どちらも対話端末が必要で、TTY がなければ選択も変更も行いません。workflow をその場で開始しません。persona 会話と Web UI ではコマンド文字列を通常メッセージとして扱います。takt resume の直接 run 向け /retry は別経路です。

Pending タスクの操作

操作 説明
Delete tasks.yaml から pending タスクを削除

Running タスクの操作

操作 説明
Mark as failed running のまま残ったタスクを failed にマーク

ワークツリークローンを持つ実行中タスクを選ぶと、そのタスクを /tell の初期対象にした通常の assistant 会話が開きます。会話中に別のタスクを確認したり、新しいタスクを相談したりできます。/tell は確定後に対象を再確認し、選択されたタスクだけへ書き込みます。完了、削除、slug 不一致、clone でない run は候補にも書き込み先にもなりません。

takt merge で起動したマージタスクや、requeue・retry 後に takt run / takt watch が実行するマージタスクも、ワークツリークローンを持つ実行中の run なら /tell の対象になります。CLI/TUI の会話、takt list から開く会話、MCP の takt_tell_run は同じ対象解決を使います。マージ run のメタデータと介入は元プロジェクトの .takt/runs/<slug>/ に保存されます。指示は子 workflow 内も含めて次の agent step で配達され、system step では消費されません。

Exceeded タスクの操作

操作 説明
Requeue 停止した位置から再開する形でタスクを pending に戻す
Delete タスクを完全に削除

会話からの /requeue は exceeded タスクも対象にできます。添えた発話から、保存された実行の継続または指定ステップ(子 workflow のステップを含む)からの再実行を判定し、その操作と位置を確認してから pending に戻します。継続では保存済みの実行情報を保持し、再実行では旧 checkpoint と iteration limit 情報を除去します。指定位置が不明・利用不能で AI が決められない場合は、利用可能な開始位置を人が選びます。発話がなければ保存された停止位置を保持します。指示書の改訂や worker の開始は行いません。タスク一覧の Requeue は引き続き保存された停止位置を使います。

PR 失敗タスクの操作

pr_failed ステータスのタスク(workflow は成功したが PR 作成/push に失敗)は、公開エラーを表示し、Create PR を含む完了タスクと同じ操作を提供します。workflow の結果、ローカルブランチ、コミットは保持されます。push に失敗した場合は自動 PR 作成をスキップし、ブランチ、コミット、再試行方法を表示します。

TAKT が管理するリモート push では、Git の HTTPS 認証の端末入力・askpass と Git Credential Manager の対話を無効にします。再試行前に gh auth login と gh auth setup-git、または credential helper などで認証を設定してください。独自の credential helper や SSH 認証も無人実行できる設定が必要です。

認証または表示された push エラーを解消したら、PR を作成するタスクでは takt list で対象タスクの Create PR を選択します。残っている変更をコミットして push し、同じブランチの既存 PR があれば再利用し、なければ作成します。workflow は再実行しません。再試行に成功すると completed に更新され、PR URL を保存して公開エラーを解除します。キャンセルまたは再試行失敗時は pr_failed とローカルの成果を保持します。

PR の公開後にタスク状態の保存が失敗した場合は、公開済みの PR URL と保存エラーを表示します。takt list で状態を確認し、pr_failed の場合は Create PR を再試行してください。既存 PR を再利用して状態の保存をやり直します。

PR を作成せず push だけを行うタスクでは、認証を修正してからプロジェクトのリポジトリで表示されたブランチを origin へ手動で push してください。この手動 push はタスク状態を更新しません。

Instruct モード

完了タスクで Instruct を選択すると、TAKT は AI とのインタラクティブな会話ループを開きます。会話には次の情報がプリロードされます。

どのような追加変更が必要かを議論し、AI が指示の精緻化を支援します。準備ができたら /go を実行し、指示書が生成された後に次の操作を選択できます。

即座に再実行するには /accept(最新のアシスタント応答を使用)または /replay(前回の指示書を再投入)を使用します。中断してリストに戻るには /cancel を使用します。

失敗タスクの Instruct も同じ会話を使いますが、コミット済みブランチではなく run の未コミット作業ツリーを対象とします。会話には最終裁定レポートの要約(充足した要件、未解決の finding、未実証のゲート)と作業ツリー差分の概要が追加でプリロードされます。

Retry モード

失敗タスクで Retry を選択すると、TAKT は次の処理を行います。

  1. 失敗の詳細を表示(失敗した step、エラーメッセージ、最後のエージェントメッセージ)
  2. Workflow の選択を促す
  3. 単一のツリーから開始位置の選択を促す
  4. 失敗コンテキスト、実行セッションデータ、workflow 構造がプリロードされたリトライ会話を開く
  5. AI の支援で指示を精緻化

Requeue も同じ workflow と開始位置の選択を使用しますが、会話を開かずタスクを pending として保存します。開始位置の選択はワークフローをツリーとして表示します。有効な Resume 位置がある場合は先頭の行が Resume failed position(失敗地点から実行状態を引き継いで再開)になり、その下に選択可能な葉として各 step が並びます。workflow_call 配下のサブワークフローは選択できない見出しとして子 step をインデント表示するため、確定できるのは常に葉の step であり、サブワークフロー自体は選べません。有効な Resume 位置がある場合は Resume 行を初期選択し、ない場合は失敗した root step に対応する選択可能な葉を初期選択します。いずれかの葉を選ぶと、その step から新しい実行を開始します。

端末の Resume 行は Resume failed position: "review" (default) のような短いラベルの直下に、経路の説明を薄い色で表示します。経路は root workflow を先頭、失敗 step を末尾とし、各呼び出しを "呼び出し step" → "呼び出し先 workflow" の組で表します。たとえば "takt-default" > "develop" → "development-core" > "review" となります。幅80列以上では説明を折り返して全経路を表示します。幅60列ではroot側を保持して説明だけを末尾から省略し、ラベルの失敗 step 名と既定印を表示します。Web UI のドロップダウンと Selected start position: … の確定ログには、ラベルと全経路の両方を残します。

Requeue 後は新しい namespace で実行されるため、台帳を引き継がず白紙で開始します。

/go の後、リトライ会話は更新された指示書を表示し、先頭かつ既定の タスクにつむ または 編集を続ける を選択できます。タスクにつむを選ぶと対象タスクの指示書を更新して pending に戻しますが、その場ではワーカーを起動しません。Retry 会話では /retry、/replay、即時実行の選択肢は利用できません。変更せずに終了する場合は /cancel を使用します。

非インタラクティブモード(--non-interactive)

CI/CD スクリプト向けの非インタラクティブモードを使用できます。

# すべてのタスクをテキストで一覧表示
takt list --non-interactive

# すべてのタスクを JSON で一覧表示
takt list --non-interactive --format json

# 特定ブランチの差分統計を表示
takt list --non-interactive --action diff --branch takt/my-branch

# 特定ブランチをマージ
takt list --non-interactive --action merge --branch takt/my-branch

# ブランチを削除(--yes が必要)
takt list --non-interactive --action delete --branch takt/my-branch --yes

# Try merge(コミットせずにステージング)
takt list --non-interactive --action try --branch takt/my-branch

利用可能なアクションは diff、sync、try、merge、delete です。

CodeRabbit レビューループ(caccia)

マージ用ビルトインは Caccia を明示的に実行します。merge-review は review → caccia → wait_ci → 評価コメント、merge-review-fix と merge-review-fix-simple は review/fix → commit_and_push → caccia → wait_ci → merge_pr の順です。success と skipped は返された head の CI 待ちへ進みます。limit は未解決件数をコメントして COMPLETE で終了し、マージしません。効果の失敗は error をコメントして ABORT で終了します。push、タスク後処理、Pipeline からの暗黙の Caccia は廃止しました。merge.auto_start: true では PR 公開後にマージ用 workflow が起動し、その明示効果が Caccia を実行します。

Caccia は CodeRabbit の投稿を待ち、coderabbitai が開始した未解決スレッドだけを処理します。各反復は一時クローンで指定された workflow を実行し、判断レポートを .takt/runs/ に残します。修正を Push したら、その反復で判断したスレッドだけを Resolve し、Push したコミットへの CodeRabbit のレビューを待ちます。人が開始したスレッドは未解決のまま残します。レビューへの返信は投稿しません。成功と反復上限到達はログに記録し、設定済み通知経路にも送ります。

wait_timeout_ms は初回レビューと Push 後の各レビューの待機期限で、再依頼もこの期限に含みます。レビュー制限通知の再試行時刻が期限より前なら到来時に @coderabbitai review コメントで一度だけ依頼し、期限以降なら直ちにスキップします。制限通知を受けた後、レビューが期限までに完了しなければスキップします。制限通知を受けずに期限に達した場合は初回待機をスキップし、Push 後の待機をエラーとして記録します。system 効果は失敗を success: false と error で返します。単独の takt caccia はスキップ・エラー時に非ゼロで終了します。

効果実行の進捗、ワークフロー、終了結果、失敗は親タスクの表示モードに従います。並列実行では同じタスク名プレフィックスと色を使い、silent では画面に出力しません。workflow は効果の結果を待ってから次のステップへ進みます。

同じ機能は takt caccia <PR番号> で単独実行できます。結果と設定は CLI リファレンス と設定リファレンスを参照してください。

タスクディレクトリワークフロー

推奨されるエンドツーエンドのワークフローは次の通りです。

  1. takt add – タスクを作成。.takt/tasks.yaml に pending レコードが追加され、.takt/tasks/{slug}/ に order.md が生成される。
  2. order.md を編集 – 生成されたファイルを開き、必要に応じて詳細な仕様、参考資料、補足ファイルを追加。
  3. takt run(または takt watch)– tasks.yaml の pending タスクを実行。各タスクは設定された workflow を通じて実行される。
  4. 出力を確認 – .takt/runs/{run_slug}/reports/ の実行レポートを確認。run slug は実行ごとに採番されるため、tasks.yaml の run_slug フィールドか .takt/runs/ 配下の最新ディレクトリで確認する。
  5. takt list – 結果を確認し、成功したブランチのマージ、失敗のリトライ、追加指示を行う。

隔離実行(隔離クローン)

タスク設定で worktree を指定すると、各タスクは git clone で作成された隔離クローン内で実行され、メインの作業ディレクトリをクリーンに保ちます。

設定オプション

設定 説明
worktree: true {project}/../takt-worktrees(または worktree_dir 設定で指定した場所。親ディレクトリに書き込めない場合はプロジェクト内の .takt/worktrees にフォールバック)にクローンを自動作成
worktree: "/path/to/dir" 指定パスにクローンを作成
branch: "feat/xxx" 指定ブランチを使用(省略時は takt/{timestamp}-{slug} が自動生成)
(worktree を省略) カレントディレクトリで実行(デフォルト)

仕組み

TAKT は git worktree の代わりに git clone --reference <メインリポジトリ> --dissociate を使用して、独立した .git ディレクトリを持つクローンを作成します(reference 元のリポジトリが shallow の場合は素の git clone にフォールバックします)。これが重要な理由は次の通りです。

注意: YAML フィールド名は後方互換性のため worktree のままです。内部的には git worktree ではなく git clone を使用しています。

エフェメラルなライフサイクル

クローンはエフェメラルなライフサイクルに従います。

  1. 作成 – タスク実行前にクローンを作成
  2. 実行 – クローンディレクトリ内でタスクを実行
  3. コミット & プッシュ – 成功時に変更を自動コミットしてメインリポジトリにプッシュ(origin へのプッシュは auto_pr などを指定した場合のみ)
  4. 保持 – 実行後もクローンを保持(instruct/retry 操作用)
  5. クリーンアップ – ブランチが永続的な成果物。takt list でマージまたは削除

デュアルワーキングディレクトリ

worktree 実行中、TAKT は2つのディレクトリ参照を管理します。

ディレクトリ 用途
cwd(クローンパス) エージェントの実行場所、レポートの書き込み先
projectCwd(プロジェクトルート) ログとセッションデータの保存先

レポートは cwd/.takt/runs/{slug}/reports/(クローン内)に書き込まれ、エージェントがメインリポジトリのパスを発見することを防ぎます。cwd !== projectCwd の場合、クロスディレクトリ汚染を避けるためセッション再開はスキップされます。

セッションログ

TAKT は NDJSON(改行区切り JSON、.jsonl)形式でセッションログを書き込みます。各レコードはアトミックに追加されるため、プロセスがクラッシュしても部分的なログは保存されます。

ログの場所

.takt/runs/{slug}/
  logs/{sessionId}.jsonl   # workflow 実行ごとの NDJSON セッションログ
  meta.json                # 実行メタデータ(タスク、workflow、開始/終了、ステータスなど)
  operations/
    journal.json           # オペレーションジャーナル(内部実行レコード)
  context/
    previous_responses/
      latest.md            # 最新の previous response(自動継承)

observability が有効な場合、meta.json には完了時または中断時に TAKT が出力した Tempo TraceQL query を含む observability.traceDiscovery も保存されます。

レコードタイプ

レコードタイプ 説明
workflow_start タスクと workflow 名による workflow の初期化
step_start Step の実行開始
step_complete ステータス、内容、マッチしたルール情報を含む step 結果
workflow_complete Workflow の正常完了
workflow_abort Workflow の中断(理由付き)

リアルタイム監視

実行中にログをリアルタイムで監視できます。

tail -f .takt/runs/{slug}/logs/{sessionId}.jsonl