はじめに 僕のメンターからおすすめされた本の紹介連載、第6回です。
※本記事では、以降 antigravity CLI のコマンド表記を agy と統一して記述します。
今回は、自律型AIコーディングエージェントを安全に、かつ意図通りに自動運転させるための「ライフサイクル制御」と「タスク移譲」について解説した実用的なセクションです。
導入
- ライフサイクル制御の概略(一般的な説明)
AIエージェントが一連の作業を開始し、進め、終了するまでの「時間の流れや処理の単位」を管理・制御すること。 - タスク委譲とは?(一般的な説明)
AIエージェントが実行しようとする「一般的なビジネスやマネジメントの文脈において、「自分が持っている仕事(タスク)の実行責任や権限を、部下や外部のメンバー、あるいはシステムなどの適切な他者に任せること」
この件ついて原文にあたってみます
ライフサイクル制御について
ご提示いただいた英文を、内容の省略や意訳を完全に排し、原文の構造と技術的なニュアンスをそのまま再現した厳密な直訳として記述します。
(前回とは書き方が違います)
ライフサイクル制御(原文)
When the loop is running, what's a "step"?
ループが実行されているとき、「ステップ」とは何でしょうか?
This trips people because there are two units inside a loop and they get used interchangeably, which makes the whole thing fuzzy.
ループの内部には2つの単位が存在し、それらが互換性のあるものとして交互に使用されるため、これが人々を混乱させ、全体を曖昧なものにしています。
A tool call is one action: read a file, edit a file, run a command.
ツールコール(Tool call)とは、ファイルを読み込む、ファイルを編集する、コマンドを実行する、といった1つのアクションです。
A turn is one full pass of the agent doing work, which usually contains several tool calls, ending when the agent stops and hands back.
ターン(Turn)とは、エージェントが作業を行う1回分の完全なプロセスであり、通常はいくつかのツールコールを含み、エージェントが停止して制御を戻したときに終了します。
The distinction matters enormously for loops, because the checkpoint that decides whether to keep going fires after each turn, not after each tool call.
ループにおいてこの区別は極めて重要です。なぜなら、続行するかどうかを決定するチェックポイントは、各ツールコールの後ではなく、各ターンの後に起動するからです。
Cook, J. Claude Code Loop Engineering: Build Self-Correcting Agentic Loops That Ship Trusted Code, Not a $200 Overnight Bill (English Edition) (pp. 37-38). (Function). Kindle Edition.
あと色々調べたのですが”タスク委譲”についてです
タスク委譲(原文)
Subagents are helpers the main agent spawns to do a chunk of work and report back.
サブエージェント(Subagents)は、メインエージェントが仕事のひとかたまりを実行させ、その結果を報告させるために生成するヘルパーです。
They keep verbose work out of the main context.
彼らは、メインのコンテキスト(会話履歴)に冗長な作業が入るのを防いでくれます。
One rule to remember now: a subagent cannot spawn its own subagents.
ここで覚えておくべきルールが1つあります。それは、サブエージェントが自分自身のサブエージェントを生成することはできない、ということです。
Cook, J. Claude Code Loop Engineering: Build Self-Correcting Agentic Loops That Ship Trusted Code, Not a $200 Overnight Bill (English Edition) (p. 30). (Function). Kindle Edition.
Codeの確認
1: 「ライフサイクル制御」のテキストからの抜粋
TURN 1 (one turn = one unit the /goal evaluator checks after)
├─ tool call: Edit src/auth/token.ts ← one action inside the turn
├─ tool call: Bash "npm test" ← another action inside the turn
└─ observe: "1 failing" → evaluator: condition not met → start TURN 2
TURN 2
├─ tool call: Edit src/auth/token.ts
├─ tool call: Bash "npm test"
└─ observe: "0 failing" → evaluator: condition met → goal clears, loop exits
Cook, J. Claude Code Loop Engineering: Build Self-Correcting Agentic Loops That Ship Trusted Code, Not a $200 Overnight Bill (English Edition) (p. 38). (Function). Kindle Edition.
2: 「タスク移譲」のテキストからの抜粋
/loop — a SCHEDULER. Re-runs a prompt on an interval. Polls; doesn't converge.
/goal — a CONDITION-LOOP. Keeps working until a checker confirms the condition.
subagents — workers the agent spawns that REPORT BACK (the Agent tool). Can't spawn subagents.
agent teams — peer sessions that MESSAGE EACH OTHER + share a task list (experimental, off by default).
workflows — a SCRIPT holds the plan, so no single context holds it (16 concurrent / 1,000 total caps).
ultracode — a SETTING (not a product, not an
effort flag): sends top effort AND orchestrates a workflow.
Cook, J. Claude Code Loop Engineering: Build Self-Correcting Agentic Loops That Ship Trusted Code, Not a $200 Overnight Bill (English Edition) (pp. 30-31). (Function). Kindle Edition.
ここからagyで実行です
ライフサイクル制御とタスク移譲
テキストに記載があったCodeをagyに翻訳
1: 「ライフサイクル制御」のagyむけCode
🚀 ANTIGRAVITY CLI v1.0.0 - AUTONOMOUS DEVELOPMENT PROTOCOL
[LAUNCH 01] --------------------------------------------------------------------
├─ 🛠️ ENGINE: Altering Core --> edit: src/auth/token.ts
├─ 🔥 THRUST: Ignition --> bash: "npm test"
└─ 🛰️ ORBIT CHECK: Failed...
❌ [Telemetry: 1 Gravitational Drag Detected (1 failing)]
⚠️ STATUS: Orbit Escape Velocity Not Reached. Re-calculating trajectory...
[LAUNCH 02] --------------------------------------------------------------------
├─ 🛠️ ENGINE: Vector Adjust --> edit: src/auth/token.ts
├─ 🔥 THRUST: Re-ignition --> bash: "npm test"
└─ 🛰️ ORBIT CHECK: Success!
✨ [Telemetry: 0 Drag. Stable Orbit Achieved (0 failing)]
✅ STATUS: Mission Objective Cleared. System Exiting Loop.
================================================================================
🛸 CRUISE MODE ENGAGED. HAVE A SAFE FLIGHT!
実行結果
▄▀▀▄ Antigravity CLI 1.0.13
▀▀▀▀▀▀ ai-agent@antigravity.io (Google AI Pro)
▀▀▀▀▀▀▀▀ Gemini 3.5 Flash (Medium)
▄▀▀ ▀▀▄ ~/workspace/architecture-test
▄▀▀
▀▀▄────────────────────────────────────────────────────────────>
🛸 EXECUTING COMMAND: /poll
🚀 CRUISE SYSTEM ACTIVATED. Polling telemetry...
📡 [POLL #1] Checking metrics... Drag: Stable. (No convergence)
📡 [POLL #2] Checking metrics... Drag: Stable. (No convergence)
🛸 EXECUTING COMMAND: /orbit --condition='drag == 0'
🛰️ ORBIT CONTROL ENGAGED. Locking trajectory...
[LAUNCH 01] --------------------------------------------------------------------
├─ 🛠️ ENGINE: Deploying Probe --> drones: spawn single unit
├─ 🔥 THRUST: Verification --> flight-plan: test.sh
└─ 🛰️ ORBIT CHECK: Failed...
❌ [Telemetry: 1 Gravitational Drag Detected (Condition Not
Met)]
[LAUNCH 02] --------------------------------------------------------------------
├─ 🛠️ ENGINE: Vector Adjust --> fleet-mesh: sync
├─ 🔥 THRUST: Re-ignition --> flight-plan: test.sh
└─ 🛰️ ORBIT CHECK: Success!
✨ [Telemetry: 0 Drag. Stable Orbit Achieved (Condition Met)]
🛸 ENGAGING MODE: --hyper-drive (MAXIMUM EFFORT)
🧠 Orchestrating flight-plan across 16 concurrent threads...
==========================================================================
======
🛸 CRUISE MODE ENGAGED. HAVE A SAFE FLIGHT!
==================================================================
このCodeの考察
どうやら、AI(gemini)に確認したところ、原文(claudeCode)のサンプルコードに問題があり、それをAIが自動修正して実行を継続した可能性が高いそうです。
1周目(LAUNCH 01):そのまま動かした(テストした)ので、当然エラーで落ちた。
ORBIT CHECK: Failed...
2周目(LAUNCH 02):AIが「あ、原文のここが間違ってるじゃん!」と気づいて勝手にコードを書き換えて直したので、テストがパスした。
ということだそうです
2: 「タスク制御」のagyむけCode
/**
- ====================================================================
-
- Antigravity CLI コアアーキテクチャの型定義 (Architecture Cheat Sheet)
- ====================================================================
*/
// /loop — SCHEDULER (ポーリング・非収束)
export interface SchedulerLoop {
type: 'polling';
prompt: string;
intervalMs: number;
converges: false;
}
// /goal — CONDITION-LOOP (条件達成で終了)
export interface ConditionLoop {
type: 'condition_match';
prompt: string;
conditionChecker: (context: any) => boolean;
}
// subagents — WORKERS (メインに報告するワーカー / 子は作れない)
export interface Subagent {
id: string;
role: string;
reportBack: (result: any) => void;
canSpawnSubagents: false;
}
// agent teams — PEER SESSIONS (対等なセッション間の連携 / 実験的機能)
export interface AgentTeam {
isExperimental: true;
isEnabled: boolean; // デフォルトは off
peerSessions: string[];
sharedTaskList: string[];
}
// workflows — SCRIPTS (コンテキストを分離した実行計画)
export interface Workflow {
scriptPlan: string; // 1つのコンテキストに依存させない
limits: {
concurrentCaps: 16; // 同時実行上限
totalCaps: 1000; // 累計上限
};
}
// ultracode — SETTING (最高努力 + オーケストレーション)
export interface UltracodeSetting {
isProduct: false; // 製品ではない
isEffortFlag: false; // 単なる努力フラグでもない
config: {
sendTopEffort: true;
orchestrateWorkflow: true;
};
}
/**
- ====================================================================
-
- 実際の利用イメージ (Usage Example)
- ====================================================================
- ※上記で定義した型をどう CLI に喰わせるかのイメージ
*/
const myAntigravityTask = {
// ultracode設定を有効化して、最高効率でワークフローを回す
setting: {
isProduct: false,
isEffortFlag: false,
config: { sendTopEffort: true, orchestrateWorkflow: true }
} as UltracodeSetting,
// 16並列 / 1000ステップ制限の独立スクリプトとして実行
workflow: {
scriptPlan: "./plans/deploy_and_test.sh",
limits: { concurrentCaps: 16, totalCaps: 1000 }
} as Workflow
};
実行結果
==========================================================================
🛸 ANTIGRAVITY CORE AGENT SIMULATOR - Architecture v2026.1
==========================================================================
🧠 ORCHESTRATOR CONFIGURATION:
├─ isProduct: false
├─ sendTopEffort: true (Deploying maximum reasoning effort)
└─ orchestrateWorkflow: true (Orchestrating concurrent workflow
execution)
🛸 EXECUTING COMMAND: /loop
📡 [Scheduler Loop] Polling telemetry: "Checking telemetry metrics"
📡 [Scheduler Loop] Polling telemetry: "Checking telemetry metrics"
(Scheduler loop continues in background: converges = false)
📋 WORKFLOW INITIALIZED:
├─ Script Plan: "independent-flight-plan.sh"
└─ Limits: { concurrencyCap: 16, totalCap: 1000 }
👥 AGENT TEAM (Experimental Peer Sessions):
├─ Enabled: true
├─ Peer Sessions: ["session-alpha","session-beta"]
└─ Shared Task List: ["Analyze Token System","Verify Token Output"]
✉️ [Peer Send] Team Peer Session message -> [peer-agent-x]: "Telemetry
synchronized. Commencing launch validation."
🛸 EXECUTING COMMAND: /goal --condition="drag == 0"
🛰️ CONDITION LOOP ENGAGED. Prompt: "Resolve token validation errors and
stabilize trajectory"
[LAUNCH 01] --------------------------------------------------------------------
├─ 🛠️ ENGINE: Deploying Probe --> drones: spawn single unit
├─ 🤖 [Subagent: worker-01] Reporting back:
👉 [Parent] Received result from worker-01: "Found no syntax
errors, but assertion failed on token verification."
├─ 🔥 THRUST: Verification --> flight-plan: test.sh
├─ 🤖 [Subagent: worker-02] Reporting back:
👉 [Parent] Received result from worker-02: "Test run failed (1
failing test). Expected 'token-for-alice' but got generic token."
└─ 🛰️ ORBIT CHECK: Failed...
❌ [Telemetry: 1 Gravitational Drag Detected]
[LAUNCH 02] --------------------------------------------------------------------
├─ 🛠️ ENGINE: Vector Adjust --> fleet-mesh: sync
├─ 🤖 [Subagent: worker-01] Reporting back:
👉 [Parent] Received result from worker-01: "Corrected token
generation logic. All structures validated."
├─ 🔥 THRUST: Re-ignition --> flight-plan: test.sh
├─ 🤖 [Subagent: worker-02] Reporting back:
👉 [Parent] Received result from worker-02: "Test run passed (0
failing tests)."
└─ 🛰️ ORBIT CHECK: Success!
✨ [Telemetry: 0 Drag. Stable Orbit Achieved]
🛸 ENGAGING MODE: --hyper-drive (MAXIMUM EFFORT)
🧠 Orchestrating flight-plan across 16 concurrent threads
(concurrencyLimit = 16)...
==========================================================================
🛸 CRUISE MODE ENGAGED. HAVE A SAFE FLIGHT!
==========================================================================
この結果の考察
これも、実行させたプログラムにエラーがあったのかな??
それをagyが訂正した感じですね
結論
僕は今回、テキストからclaudeのCodeをひっぱてきて、agy用に翻訳・実行しただけですが、Codeが自動修正されているということですね
引き続きこの連載は継続します。