Marketechlabo

AIコーディングエージェント 8ツール 詳細比較表

概要

AIコーディングエージェント 8ツール 詳細比較表

本ドキュメントは comparison-detailed.md の全内容を含み、各セクションに日本語の解説を付加したガイド版である。 8つのAIコーディングエージェント (Claude Code, Cline, Codebuff, Codex CLI, Kilocode, OpenClaw, OpenCode, Roo Code) の内部アーキテクチャを、ソースコードレベルで比較している。 各ツールのシステムプロンプト構成、ツール定義、Agentic機能、長期記憶の実装を網羅的に調査した結果をまとめたものである。

調査対象バージョン(2026-02時点):

  • Claude Code 2.1.59 / Cline 3.67.1 / Codebuff 0.10.6 / Codex CLI 0.106.0
  • Kilocode 5.7.0 / OpenClaw 2026.2.26 / OpenCode 1.1.36 / Roo Code 3.50.4

この章では各ツールの実装言語、ライセンス、実行環境、LLMプロバイダといった基本属性と、 システムプロンプトがどのように組み立てられるか(エントリーポイント関数、パイプライン構造)を比較する。 「エントリーポイント」とは、システムプロンプト生成の起点となる関数のことである。 「パイプライン」とは、各セクションを順次組み立てて最終的なプロンプト文字列を生成する処理の流れを指す。

項目Claude CodeClineCodebuffCodex CLI
バージョン2.1.593.67.1SDK 0.10.60.106.0 (rust-v0.106.0)
実装言語TypeScript (npmパッケージ)TypeScriptTypeScript (モノレポ)Rust (codex-rs) + TypeScript (レガシー)
ライセンスクローズドソースOSSApache-2.0OSS
実行環境CLI + VSCode拡張VSCode拡張CLI + Web (Next.js)CLI (TUI)
LLMプロバイダAnthropic固定マルチ (16+ Variant)マルチOpenAI固定
ツールコール方式Claude API native tool useVariant別 (XML / native)JSON (<codebuff_tool_call>)OpenAI Responses API
項目KilocodeOpenClawOpenCodeRoo Code
バージョン5.7.02026.2.261.1.363.50.4 (e25b1f276)
実装言語TypeScriptTypeScriptTypeScriptTypeScript
ライセンスOSSOSSOSSOSS
実行環境VSCode拡張CLI (自律デーモン)CLI + TUI + DesktopVSCode拡張
LLMプロバイダマルチマルチマルチマルチ
ツールコール方式XML or Native (JSON Schema)プロバイダ nativeAI SDK (Vercel)Native (JSON Schema)

実装言語は大半がTypeScriptだが、Codex CLIはRustで書かれている点が特徴的である。 LLMプロバイダが「固定」のツール (Claude Code=Anthropic、Codex CLI=OpenAI) と「マルチ」対応のツールに大別される。 ツールコール方式もXML形式、JSON形式、プロバイダnative形式など多様である。

ツールエントリーポイント関数ファイル呼び出し元
Claude Code(ソース非公開。動的組み立て)
ClinegetSystemPrompt(context: SystemPromptContext)src/core/prompts/system-prompt/index.tsTask.attemptApiRequest() (L1873付近)
CodebuffloopAgentSteps() 内の getAgentPrompt()packages/agent-runtime/src/run-agent-step.tscallMainPrompt() (packages/agent-runtime/src/main-prompt.ts)
Codex CLIbuild_prompt(input, router, turn_context, base_instructions)codex-rs/core/src/codex.rs:5410run_sampling_request()
KilocodeSYSTEM_PROMPT()generatePrompt()src/core/prompts/system.tsタスク実行ループ
OpenClawbuildAgentSystemPrompt()src/agents/system-prompt.ts:189-664buildEmbeddedSystemPrompt() (pi-embedded-runner/system-prompt.ts)
OpenCodeSystemPrompt.provider(model) + SystemPrompt.environment()packages/opencode/src/session/system.tsLLM.stream() (session/llm.ts:48)
Roo CodeSYSTEM_PROMPT(context, cwd, mode, ...)generatePrompt()src/core/prompts/system.tsTask.recursivelyMakeClineRequests()

システムプロンプトの組み立てはツールごとに大きく異なる。 Claude Codeはソース非公開だが動的組み立てを行い、Clineはテンプレートエンジンによるプレースホルダ置換方式、 Codex CLIはRust構造体ベースで型安全なプロンプト構築を行う。 各ツールの「呼び出し元」列を見ると、プロンプト生成がどのタイミングで発動するかがわかる。

ツールパイプライン構造中間表現
Claude Codeセクション1-13を順序結合 → APIリクエストのsystemパラメータ文字列結合
ClinePromptRegistry.get(context)getModelFamily() でVariant選択 → PromptBuilder.build()buildComponents()preparePlaceholders()TemplateEngine.resolve()postProcess()SystemPromptContext → Variant → {{SECTION_NAME}} テンプレート → 最終文字列
CodebuffgetAgentTemplate()getAgentPrompt('systemPrompt')formatPrompt() でプレースホルダ置換 → getAgentPrompt('instructionsPrompt') → ステップごとに getAgentPrompt('stepPrompt')AgentDefinition{CODEBUFF_*} プレースホルダ → 3層プロンプト (system/instructions/step)
Codex CLIBaseInstructions 解決 (config > session > model_info) → CollaborationMode developer_instructions → Memory instructions → ContextualUserMessage fragmentsPrompt { input, tools, base_instructions, personality, output_schema } (Rust構造体)
Kilocodeカスタムシステムプロンプト存在チェック → generatePrompt() → 各セクション関数 → addCustomInstructions()SystemPromptSettings → テンプレートリテラル結合 → 最終文字列
OpenClawresolveBootstrapContextForRun()buildAgentSystemPrompt() → 各セクションビルダー → contextFiles ループ → lines.filter(Boolean).join("\\n")PromptMode (“full”/“minimal”/“none”) → 配列 → join
OpenCodeagent.prompt ?? SystemPrompt.provider(model)SystemPrompt.environment()InstructionPrompt.system()Plugin.trigger("experimental.chat.system.transform")system[] 配列 → join → AI SDK streamText()
Roo CodegetModeSelection()generatePrompt() → 各セクション関数 → addCustomInstructions()テンプレートリテラル結合 → 最終文字列

この章ではシステムプロンプトを構成する「セクション」の一覧と注入順序、 モデルファミリー別の分岐(Variant)、テンプレート変数の置換方式を比較する。 セクション数はツールにより5〜24と大きく異なり、設計思想の違いが如実に表れている。

Claude Code (13セクション、ソース非公開):

#セクション条件
1Core Identity & Safety常時
2System Behavior常時
3Task Execution Guidelines常時
4Tool Usage Guidelines常時
5Tone and Style常時
6Git Operations Protocol常時
7Auto Memory Instructions常時
8Environment Context常時
9CLAUDE.md Files (全階層)常時
10Auto Memory (MEMORY.md 先頭200行)常時
11Skill Descriptions常時 (バジェット: context windowの2%)
12IDE/Extension Context実行環境に応じて
13system-reminder Tags動的 (会話中に挿入)

Cline (13セクション):

#セクション生成関数ファイル条件
1AGENT_ROLEgetAgentRoleSection()components/agent_role.ts常時
2TOOL_USEgetToolUseSection()components/tool_use/index.ts常時
3TASK_PROGRESSgetUpdatingTaskProgress()components/task_progress.tsNext-Gen系のみ
4MCPgetMcp()components/mcp.tsMCP接続時のみ
5EDITING_FILESgetEditingFilesSection()components/editing_files.ts常時
6ACT_VS_PLANgetActVsPlanModeSection()components/act_vs_plan_mode.ts常時
7CAPABILITIESgetCapabilitiesSection()components/capabilities.ts常時
8SKILLSgetSkillsSection()components/skills.tsSkill存在時のみ
9FEEDBACKgetFeedbackSection()components/feedback.tsNext-Gen系のみ
10RULESgetRulesSection()components/rules.ts常時
11SYSTEM_INFOgetSystemInfo()components/system_info.ts常時
12OBJECTIVEgetObjectiveSection()components/objective.ts常時
13USER_INSTRUCTIONSgetUserInstructions()components/user_instructions.ts常時

Codebuff (5層):

#セクション生成関数ファイルtags
1System PromptgetAgentPrompt({ type: 'systemPrompt' })templates/strings.ts— (system role)
2User Prompt(ユーザー入力)['USER_PROMPT']
3Additional System PromptadditionalSystemPrompts[prompt]system-prompt/prompts.ts['SYSTEM_INSTRUCTION']
4Instructions PromptgetAgentPrompt({ type: 'instructionsPrompt' })templates/strings.ts['INSTRUCTIONS_PROMPT']
5Step PromptgetAgentPrompt({ type: 'stepPrompt' })templates/strings.ts['STEP_PROMPT'] (<system_reminder>ラップ)

Codex CLI (6セクション):

#セクション生成箇所ファイル
1BaseInstructionsbuild_prompt() 内分岐codex.rs:377-386 + prompt.md or model-specific
2CollaborationMode developer_instructionsdefault_mode_instructions()collaboration_mode_presets.rs:50
3Memory developer_instructionsbuild_memory_tool_developer_instructions()memories/prompts.rs:158
4Session prefix (user messages)ContextualUserMessage fragmentscontextual_user_message.rs
5Conversation historyResponseItem 配列(ランタイム)
6Tool definitionsToolRouter::specs()tools/spec.rs

Kilocode (13セクション):

#セクション生成関数ファイル条件
1roleDefinitiongetModeSelection()src/shared/modes.ts常時
2MARKDOWN RULESmarkdownFormattingSection()sections/markdown-formatting.ts常時
3TOOL USEgetSharedToolUseSection()sections/tool-use.ts常時
4# ToolsgetToolDescriptionsForMode()tools/index.tsXMLプロトコル時のみ
5Tool Use GuidelinesgetToolUseGuidelinesSection()sections/tool-use-guidelines.ts常時
6MCP SERVERSgetMcpServersSection()sections/mcp-servers.tsMCPサーバー存在時
7CAPABILITIESgetCapabilitiesSection()sections/capabilities.ts常時
8MODESgetModesSection()sections/modes.ts常時
9AVAILABLE SKILLSgetSkillsSection()sections/skills.tsSkill存在時
10RULESgetRulesSection()sections/rules.ts常時
11SYSTEM INFORMATIONgetSystemInfoSection()sections/system-info.ts常時
12OBJECTIVEgetObjectiveSection()sections/objective.ts常時
13USER’S CUSTOM INSTRUCTIONSaddCustomInstructions()sections/custom-instructions.ts常時

OpenClaw (24セクション):

#セクション生成箇所条件
1Identity直接文字列 (L419)常時
2Toolingインライン (L421-455)常時
3SafetysafetySection 定数 (L390-396)常時
4CLI Quick Reference直接文字列 (L464-471)常時
5SkillsbuildSkillsSection() (L20-35)full/minimal
6Memory RecallbuildMemorySection() (L37-63)fullのみ
7Self-Update条件付きインライン (L476-486)fullのみ, gateway有
8Model Aliases条件付きインライン (L489-498)fullのみ
9Workspace直接文字列 (L502-506)常時
10DocumentationbuildDocsSection() (L171-187)fullのみ
11Sandbox条件付きインライン (L508-552)sandbox有効時
12Authorized SendersbuildUserIdentitySection() (L65-70)fullのみ
13Date & TimebuildTimeSection() (L96-101)常時
14Workspace Filesインライン常時
15Reply TagsbuildReplyTagsSection() (L103-117)fullのみ
16MessagingbuildMessagingSection() (L119-158)fullのみ
17Voice (TTS)buildVoiceSection() (L160-169)fullのみ, hint有
18Group Chat / Subagent ContextextraSystemPrompt有時
19Reactions条件付きインライン有効時
20Reasoning Format条件付きインラインreasoningTagHint有時
21Project ContextcontextFilesループ (L605-625)常時
22Silent Replies条件付きインライン (L628-643)fullのみ
23Heartbeats条件付きインライン (L646-656)fullのみ
24RuntimebuildRuntimeLine() (L667-704)常時

全ファイル: src/agents/system-prompt.ts

OpenCode (6セクション):

#セクション生成関数ファイル
1エージェント/プロバイダプロンプトagent.prompt ?? SystemPrompt.provider(model)session/system.ts
2環境情報SystemPrompt.environment(model)session/system.ts
3ユーザーインストラクションInstructionPrompt.system()session/instruction.ts
4ユーザー指定systeminput.user.system
5プラグイン変換Plugin.trigger("experimental.chat.system.transform")session/llm.ts:86
6コンテキストメッセージinsertReminders()session/prompt.ts:1198

Roo Code (11セクション):

#セクション生成関数ファイル
1roleDefinitiongetModeSelection()src/shared/modes.ts
2MARKDOWN RULESmarkdownFormattingSection()sections/markdown-formatting.ts
3TOOL USEgetSharedToolUseSection()sections/tool-use.ts
4Tool Use GuidelinesgetToolUseGuidelinesSection()sections/tool-use-guidelines.ts
5CAPABILITIESgetCapabilitiesSection()sections/capabilities.ts
6MODESgetModesSection()sections/modes.ts
7AVAILABLE SKILLSgetSkillsSection()sections/skills.ts
8RULESgetRulesSection()sections/rules.ts
9SYSTEM INFORMATIONgetSystemInfoSection()sections/system-info.ts
10OBJECTIVEgetObjectiveSection()sections/objective.ts
11USER’S CUSTOM INSTRUCTIONSaddCustomInstructions()sections/custom-instructions.ts

セクション数の多さは機能の豊富さを示す。OpenClawが24セクションと最多で、 メッセージング統合型パーソナルアシスタントとしての多機能性を反映している。 各セクションの「条件」列に注目すると、常時注入されるものと特定条件でのみ有効になるものがある。

ツール分岐方式分岐数選択ロジック定義ファイル
Claude Codeなし(Anthropic専用)1
ClineModelFamily enum + PromptRegistry16種 (GENERIC, NEXT_GEN, NATIVE_NEXT_GEN, GPT_5, NATIVE_GPT_5, NATIVE_GPT_5_1, GEMINI, GEMINI_3, XS, GLM, HERMES, DEVSTRAL, TRINITY等)PromptRegistry.getModelFamily(context) が全Variantの matcher(context) を順次評価、最初のマッチ採用src/core/prompts/system-prompt/variants/index.ts
CodebuffCostModeagentType マッピング5 (ask→ask, free→base-free, normal→base2, max→base2-max, plan→base2-plan)mainPrompt() 内で costModeagentType 変換packages/agent-runtime/src/main-prompt.ts
Codex CLIモデル固有 *_prompt.md + Personality テンプレート5+2 (base, gpt_5_2, gpt_5_codex, gpt-5.1-codex-max, gpt-5.2-codex + friendly/pragmatic personality)ModelInfo::get_model_instructions(personality)codex-rs/core/prompt.md, gpt_5_2_prompt.md 等 + templates/personalities/
Kilocodeなし (ツールプロトコルのみXML/Native切替)2 (XMLプロトコル / Nativeプロトコル)effectiveProtocol 判定src/core/prompts/system.ts
OpenClawなし1
OpenCodeプロバイダ別 .txt ファイル5 (anthropic, beast(GPT/o), gemini, qwen, codex_header)SystemPrompt.provider() 内のモデルID判定packages/opencode/src/session/prompt/*.txt
Roo Codeなし (Nativeツールコール固定)1

Variantとは、接続するLLMモデルに応じてプロンプトの内容を切り替える仕組みである。 Clineが16種と最多で、GPT-5系、Gemini系、Next-Gen系など細かくプロンプトを最適化している。 一方、Claude Code、OpenClaw、Roo Codeはプロバイダ固定または単一プロンプトのため分岐がない。

ツールテンプレート構文エンジン標準変数ファイル
Claude Codeなし
Cline{{PLACEHOLDER_NAME}} (二重中括弧)TemplateEngine.resolve() (正規表現置換、ドット記法ネストアクセス可)CWD, OS, SHELL, HOME_DIR, WORKING_DIR, SUPPORTS_BROWSER, MODEL_FAMILY, CURRENT_DATE, MCP_SERVERS_LIST, 全 SystemPromptSectionsrc/core/prompts/system-prompt/templates/TemplateEngine.ts, placeholders.ts
Codebuff{CODEBUFF_*} (単一中括弧)formatPrompt() (文字列replace)AGENT_NAME, FILE_TREE_PROMPT_SMALL, FILE_TREE_PROMPT, FILE_TREE_PROMPT_LARGE, GIT_CHANGES_PROMPT, INITIAL_AGENT_PROMPT, KNOWLEDGE_FILES_CONTENTS, PROJECT_ROOT, REMAINING_STEPS, SYSTEM_INFO_PROMPT, USER_CWD, USER_INPUT_PROMPTpackages/agent-runtime/src/templates/strings.ts
Codex CLI{{ variable }} (Askama テンプレート)Askama (Rust compile-time) + 手動 .replace(){{ personality }}, {{KNOWN_MODE_NAMES}}, {{REQUEST_USER_INPUT_AVAILABILITY}}, {{ASKING_QUESTIONS_GUIDANCE}}, {{ memory_root }}, {{ memory_summary }}, {{ phase2_input_selection }}codex-rs/protocol/src/openai_models.rs:285, collaboration_mode_presets.rs, memories/prompts.rs
Kilocode{{variable}} (二重中括弧)interpolatePromptContent(){{workspace}}, {{mode}}, {{language}}, {{shell}}, {{operatingSystem}}src/core/prompts/sections/custom-system-prompt.ts
OpenClawなし (関数引数で直接注入)
OpenCode$1, $ARGUMENTS (コマンドテンプレートのみ)文字列replace (コマンド展開時のみ)$1, $2, $ARGUMENTSpackages/opencode/src/command/index.ts
Roo Codeなし (関数引数で直接注入)

この章ではユーザーがプロジェクト固有の指示をエージェントに与える仕組みを比較する。 CLAUDE.md、.clinerules、AGENTS.md、knowledge.mdなど、ツールごとに異なるファイル名と配置規則がある。 スコープ(組織/グローバル/プロジェクト/ローカル)の階層構造と、他ツールのルールファイルとの互換性も重要な比較軸である。

ツールメインファイル読み込み関数ファイル
Claude CodeCLAUDE.md, .claude/CLAUDE.md(非公開)
Cline.clinerulesgetLocalClineRules()src/core/context/instructions/user-instructions/cline-rules.ts
Codebuffknowledge.mdformatPrompt()KNOWLEDGE_FILES_CONTENTSpackages/agent-runtime/src/templates/strings.ts
Codex CLIAGENTS.mdwalk_agents_md()codex-rs/core/src/project_doc.rs
Kilocode.kilocode/rules/ ディレクトリloadRuleFiles() / loadEnabledRules()src/core/prompts/sections/custom-instructions.ts
OpenClawAGENTS.mdloadWorkspaceBootstrapFiles()src/agents/workspace.ts:441
OpenCodeAGENTS.md, CLAUDE.mdInstructionPrompt.system()packages/opencode/src/session/instruction.ts
Roo Code.roo/rules/ ディレクトリloadRuleFiles()src/core/prompts/sections/custom-instructions.ts
ツールマネージド (組織)グローバル (ユーザー)プロジェクトローカル (gitignore)サブディレクトリ
Claude CodeC:\Program Files\ClaudeCode\CLAUDE.md (Win) / /Library/Application Support/ClaudeCode/CLAUDE.md (Mac) / /etc/claude-code/CLAUDE.md (Linux)~/.claude/CLAUDE.md, ~/.claude/rules/*.md./CLAUDE.md, ./.claude/CLAUDE.md, ./.claude/rules/*.md./CLAUDE.local.md親ディレクトリ再帰走査、子ディレクトリはオンデマンド
ClineリモートConfig (サーバーから取得・キャッシュ)~/Documents/Cline/Rules/ (ディレクトリ内全ファイル).clinerules (ファイル or ディレクトリ)
Codebuff~/.knowledge.md, ~/.AGENTS.md, ~/.CLAUDE.md (読取専用)knowledge.md, AGENTS.md, CLAUDE.md (大文字小文字不問)
Codex CLI$CODEX_HOME/prompts/*.mdリポジトリ内任意の AGENTS.md (CWDからルートまで走査)配置ディレクトリ以下のツリー全体
Kilocode~/.kilocode/rules/, ~/.kilocode/rules-{mode}/.kilocode/rules/, .kilocode/rules-{mode}/enableSubfolderRules 設定で制御
OpenClaw~/.openclaw/workspace/ 内の AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md, HEARTBEAT.md, BOOTSTRAP.md, MEMORY.md
OpenCode~/.config/opencode/AGENTS.md, ~/.claude/CLAUDE.mdAGENTS.md, CLAUDE.md (findUp), config.instructions (glob/URL)InstructionPrompt.resolve() でReadツール実行時にディレクトリ別動的ロード
Roo Code~/.roo/rules/, ~/.roo/rules-{mode}/.roo/rules/, .roo/rules-{mode}/enableSubfolderRules で制御
ツール.clinerules.cursorrules.cursor/rules/*.mdc.windsurfrulesAGENTS.mdCLAUDE.md
Claude Code✓ (メイン)
Cline✓ (メイン)✓ (再帰スキャン)
Codebuff
Codex CLI✓ (メイン)
Kilocode✓ (レガシー)
OpenClaw✓ (メイン)
OpenCode✓ (メイン)
Roo Code✓ (フォールバック)✓ (useAgentRules設定)

互換ルールファイル対応表は、ツール間の移行や併用の容易さを示す。 AGENTS.mdは最も広くサポートされており、Codebuff、Codex CLI、OpenClaw、OpenCodeなど多くのツールが対応している。 ClineはAGENTS.md、.cursorrules、.cursor/rules等も読み込む最も互換性の高いツールである。

ツール対応構文評価ロジックファイル
Claude CodeYAML frontmatter paths: (.claude/rules/*.md)glob照合— (非公開)
ClineYAML frontmatter paths: (.clinerules)RuleContextBuilder がファイルパス・エディタタブ・メッセージテキストに対してglob照合src/core/context/instructions/user-instructions/rule-conditionals.ts
Codebuff
Codex CLI
Kilocode
OpenClaw
OpenCode
Roo Code

条件付きルールとは、特定のファイルパスに対してのみ有効になるルール定義である。 現状ではClaude CodeとClineのみが対応しており、YAML frontmatterの paths フィールドでglob指定する。 例えば *.test.ts にのみ適用されるテスト固有の指示を書くことができる。

ツール対応パス失われるセクション残るセクションファイル
Claude Code
Cline
Codebuffカスタムエージェントの systemPrompt 設定Buffy デフォルトプロンプト全体instructionsPrompt のサブエージェント仕様は自動追記agents/types/agent-definition.ts
Codex CLIconfig.base_instructionsmodel_info.base_instructionsCollaborationMode instructions, Memory instructions, Session prefixcodex-rs/core/src/codex.rs:377
Kilocode.kilocode/system-prompt-{mode}TOOL USE, MCP, CAPABILITIES, MODES, SKILLS, RULES, SYSTEM INFO, OBJECTIVEroleDefinition + カスタムプロンプト + customInstructionssrc/core/prompts/sections/custom-system-prompt.ts
OpenClaw— (ブートストラップファイルは追加方式)
OpenCodeagent.prompt フィールドSystemPrompt.provider() 全体SystemPrompt.environment(), InstructionPrompt.system(), モード遷移リマインダーpackages/opencode/src/session/llm.ts
Roo Code— (カスタムモードの roleDefinition 上書きのみ)

この章ではLLMに提供するツール(関数呼び出し)の定義形式と、 モードやコンテキストに応じてツールの可視性を制御するフィルタリング機構を比較する。 定義形式はJSON Schema、Zod、XML、TypeBox等ツールにより多様であり、 フィルタリングの層数も1〜7層と大きな差がある。層が多いほどきめ細かいアクセス制御が可能である。

ツールスキーマ形式定義ファイル登録/集約LLMへの送信方式
Claude CodeJSON Schema (Claude API tools パラメータ)(非公開、バイナリ内蔵)APIリクエストの tools パラメータ
ClineClineToolSpec (独自インターフェース)src/core/prompts/system-prompt/tools/*.ts (1ファイル=1ツール)registerClineToolSets()ClineToolSet (registry/ClineToolSet.ts)非ネイティブ: プロンプト内XML形式。ネイティブ: toolSpecInputSchema() / toolSpecFunctionDefinition() / toolSpecFunctionDeclarations() でプロバイダ変換 (spec.ts)
CodebuffZod v4 スキーマcommon/src/tools/ (パラメータ定義) + packages/agent-runtime/src/tools/handlers/tool/ (ハンドラ)toolParams オブジェクト → toolDescriptions マップ (tools/prompts.ts)<codebuff_tool_call>{ "cb_tool_name": "..." }</codebuff_tool_call> JSON形式をプロンプトに注入
Codex CLIToolSpec::Function (JSON Schema) / ToolSpec::Freeform (自由形式)codex-rs/core/src/tools/spec.rs (ビルダー関数群) + tools/handlers/build_tools_for_config()ToolRouterOpenAI Responses API の tools パラメータ
KilocodeXML: TypeScript関数が文字列返却。Native: OpenAI.Chat.ChatCompletionTool JSON SchemaXML: src/core/prompts/tools/*.ts。Native: src/core/prompts/tools/native-tools/*.tsXML: getToolDescriptionsForMode()。Native: filterNativeToolsForMode()XML: システムプロンプトの # Tools セクション。Native: API tools 配列
OpenClawTypeBox (@sinclair/typebox, JSON Schema互換)src/agents/tools/*.ts (1ファイル=1ツール、create*Tool() 関数)createOpenClawTools() + createOpenClawCodingTools()プロバイダ native tools/functions
OpenCodeZod → z.toJSONSchema() → AI SDK jsonSchema()packages/opencode/src/tool/*.ts (1ファイル=1ツール、Tool.define())ToolRegistry.tools()resolveTools()AI SDK tool()description + parameters
Roo CodeOpenAI.Chat.ChatCompletionTool (JSON Schema、satisfies 型)src/core/prompts/tools/native-tools/*.ts (1ファイル=1ツール)getNativeTools()filterNativeToolsForMode()API tools 配列

Claude Code:

フィルタ制御元
1Permission Modepermissions.defaultMode / Shift+Tab (default / acceptEdits / plan / bypassPermissions)
2SubAgent tools フィールドエージェント定義の許可リスト
3SubAgent disallowedTools フィールドエージェント定義の拒否リスト
4permissions.denyTask(Explore) 等でSubAgent起動先も制限

Cline (5層):

フィルタ実装箇所
1Variant定義variants/*/config.ts.tools(...) で各Variantに含めるツール一覧を指定
2contextRequirements ゲーティングClineToolSpec.contextRequirements: browser → supportsBrowserUse, web_* → clineWebToolsEnabled, ask → !yoloModeToggled
3ACT/PLANモードplan_mode_respond はPLAN MODEのみ(プロンプト指示制御)
4ネイティブtool callフラグvariant.labels.use_native_tools === 1 でXML/ネイティブ切替
5パラメータレベル個別パラメータに contextRequirementsdependencies

フィルタリング関数: ClineToolSet.getEnabledToolSpecs(variant, context) (registry/ClineToolSet.ts)

Codebuff:

フィルタ実装箇所
1toolNames 配列エージェント定義の toolNames でツール可視性を決定
2モード別条件createBase2()buildArray() でモード別条件分岐 (例: !isFast && !isFree && 'write_todos')

Codex CLI:

フィルタ実装箇所
1CollaborationModePlanモードでは update_plan を除外 (plan.rs でエラー返却)
2Feature flagFeature::Collab → multi-agentツール群、Feature::MemoryTool → メモリ関連
3SandboxPolicyDangerFullAccess vs WorkspaceWrite で承認レベル変更

フィルタリング関数: build_tools_for_config() (codex-rs/core/src/tools/spec.rs)

Kilocode (2段階 + 追加条件):

フィルタ実装箇所
1TOOL_GROUPS × モードの groupsgetToolsForMode() (src/shared/modes.ts)
2条件付き除外/追加isToolAllowedForMode() (src/core/tools/validateToolUse.ts) + filterNativeToolsForMode() (filter-tools-for-mode.ts)
追加codebase_search有効性, todoList有効性, 実験フラグ(imageGeneration, runSlashCommand), Fast Apply, yoloモード時ask_followup_question除外, ブラウザ無効化各所

OpenClaw (7層パイプライン):

フィルタ実装箇所
1ToolProfileCORE_TOOL_PROFILES (“minimal”/“coding”/“messaging”/“full”) (tool-catalog.ts)
2エージェント設定config.agents.list[].tools.allow/deny
3オーナー専用OWNER_ONLY_TOOL_NAME_FALLBACKS = {“whatsapp_login”, “cron”, “gateway”} (tool-policy.ts:31)
4サブエージェント深度別SUBAGENT_TOOL_DENY_ALWAYS / SUBAGENT_TOOL_DENY_LEAF (pi-tools.policy.ts:46-66)
5サンドボックスpickSandboxToolPolicy() (pi-tools.policy.ts)
6グループ/チャネルresolveChannelGroupToolsPolicy()
7メッセージプロバイダーvoice → tts拒否

OpenCode (2段階):

フィルタ実装箇所
1モデルIDベースToolRegistry.tools() (registry.ts:125): codesearch/websearch → opencode or Exa有効、apply_patch → GPT系のみ、plan_enter/plan_exit → 実験フラグ+CLI
2エージェントパーミッションPermissionNext.disabled() がdenyツールを特定 + input.user.tools 明示除外。LLM.resolveTools() (llm.ts:277)

Roo Code:

フィルタ実装箇所
1TOOL_GROUPS × モードの groupsfilterNativeToolsForMode() (src/core/prompts/tools/filter-tools-for-mode.ts)
2ALWAYS_AVAILABLE_TOOLSask_followup_question, attempt_completion, switch_mode, new_task, update_todo_list, run_slash_command, skill (src/shared/tools.ts)
追加applyModelToolCustomization() でモデル別 includedTools/excludedTools、TOOL_ALIASES によるエイリアス解決、disabledTools設定各所

この章では各ツールが実装しているツール(LLMが呼び出せる関数)を機能カテゴリ別に比較する。 ファイル操作、検索、実行、Web、エージェント制御、計画・管理、MCP、固有ツールの8カテゴリで整理している。 同じ機能でもツール名や実装方式が異なるため、移行時の機能マッピングに役立つ。

機能Claude CodeClineCodebuffCodex CLIKilocodeOpenClawOpenCodeRoo Code
ファイル読取Readread_fileread_filesread_file (実験)read_filereadreadread_file
ファイル書込Writewrite_to_filewrite_file— (apply_patchで代替)write_to_filewritewritewrite_to_file
差分編集Edit (文字列置換)replace_in_file (SEARCH/REPLACE)str_replaceapply_patch (JSON or Freeform/Lark文法)apply_diffeditedit (文字列置換)apply_diff
パッチ適用apply_patch (GPT-5系のみ)apply_patch (Codex形式)apply_patchapply_patch (Codex形式)apply_patchapply_patch (unified diff, GPT系)apply_patch (opt-in)
複数箇所編集search_and_replace / search_replace / edit_filemultiedit
ファイル削除delete_file
Notebook編集NotebookEdit
画像読取Read (マルチモーダル)read_file (PDF/DOCX対応)view_imageimageread_file (画像対応)
機能Claude CodeClineCodebuffCodex CLIKilocodeOpenClawOpenCodeRoo Code
ファイル名検索Globlist_filesfind_files / globlist_dir (実験)list_filesfind / lsglob / listlist_files
内容検索 (grep)Grep (ripgrep)search_files (正規表現)code_search (ripgrep)grep_files (実験)search_files (正規表現)grepgrep (ripgrep)search_files
セマンティック検索codebase_search (CodeIndexManager/ManagedIndexer)codesearch (Exa API)codebase_search
コード定義一覧list_code_definition_namesread_subtree (ディレクトリツリー+変数名)
LSPシンボル検索lsp (experimental)
機能Claude CodeClineCodebuffCodex CLIKilocodeOpenClawOpenCodeRoo Code
シェルコマンドBashexecute_command (requires_approval付)run_terminal_command (SYNC/BACKGROUND)shell / shell_command / exec_command (PTY, timeout, yield)execute_commandexec (PTY対応)bashexecute_command
標準入力書込write_stdin
プロセス管理process (バックグラウンド)
REPLjs_repl / js_repl_reset
機能Claude CodeClineCodebuffCodex CLIKilocodeOpenClawOpenCodeRoo Code
Web検索WebSearchweb_search (Clineプロバイダ限定)web_search (Linkup API)web_searchweb_search (Brave API)websearch (条件付き)
URL取得WebFetchweb_fetch (Clineプロバイダ限定)web_fetchwebfetch
ブラウザ操作browser_action (Puppeteer)browser_actionbrowser
ドキュメント取得read_docs (Context7 API)
機能Claude CodeClineCodebuffCodex CLIKilocodeOpenClawOpenCodeRoo Code
SubAgent起動Task (foreground/background)use_subagents (最大5並列)spawn_agents (並列) / spawn_agent_inlinespawn_agent / spawn_agents_on_csv (最大64)new_task (逐次)sessions_spawn (隔離セッション)task (子セッション)new_task (逐次)
SubAgent出力取得TaskOutput— (自動返却)— (自動返却)wait (複数待機)— (attempt_completionで返却)— (push-based自動通知)— (自動返却)— (attempt_completionで返却)
SubAgent停止TaskStopclose_agentsubagents (kill)
SubAgent通信send_input / resume_agentsessions_send / subagents (steer)
タスク完了— (テキスト応答)attempt_completiontask_completed / end_turnattempt_completionattempt_completion
モード切替— (Permission Mode)— (act/plan UIのみ)/mode:* CLI— (CollaborationMode API)switch_modePlanEnter/PlanExit (experimental)switch_mode
機能Claude CodeClineCodebuffCodex CLIKilocodeOpenClawOpenCodeRoo Code
TodoListTodoWrite— (attempt_completionのtask_progress)write_todosupdate_planupdate_todo_listtodowrite / todoreadupdate_todo_list
ユーザー質問AskUserQuestion (選択肢UI)ask_followup_questionask_user (複数選択) / suggest_followupsrequest_user_inputask_followup_questionquestionask_followup_question
Plan ModeEnterPlanMode / ExitPlanModeplan_mode_respondPLAN mode (base2-plan)CollaborationMode Planplan_enter / plan_exit (experimental)
Skill読込Skilluse_skillskill— (description triggerで自動)fetch_instructions— (readツールで読込)skillskill
WorktreeEnterWorktree
コンテキスト圧縮— (自動)condense / summarize_task— (context-pruner自動)— (自動)condense— (自動)— (自動)— (自動)
ルール作成new_rulenew_rule
機能Claude CodeClineCodebuffCodex CLIKilocodeOpenClawOpenCodeRoo Code
MCPツール呼出mcp__<server>__<tool> (命名規則)use_mcp_toolmcpServers 経由MCP経由動的ツールuse_mcp_toolMCP.tools() 経由use_mcp_tool
MCPリソースaccess_mcp_resourcelist_mcp_resources / read_mcp_resource / list_mcp_resource_templatesaccess_mcp_resourceaccess_mcp_resource
MCPドキュメントload_mcp_documentation
ツール固有ツール
Claude CodeNotebookEdit (Jupyter), EnterWorktree (Git worktree隔離)
Clinebrowser_action (Puppeteer), new_task (コンテキスト付き新タスク提案), generate_explanation (Git diff説明, VSCode), report_bug
Codebuffread_docs (Context7 API), propose_str_replace / propose_write_file (提案のみ), lookup_agent_info, set_output, set_messages / add_message (履歴操作), run_file_change_hooks, think_deeply
Codex CLIshell (配列コマンド), exec_command (PTY+yield), write_stdin, js_repl, spawn_agents_on_csv (バッチ64並列), send_input / resume_agent / wait / close_agent (エージェント間通信), view_image, report_agent_job_result
Kilocodecodebase_search (セマンティック), fast_edit_file (Morph), delete_file, generate_image (実験), new_rule, report_bug, act_mode_respond, search_and_replace / search_replace / edit_file (複数編集バリアント)
OpenClawmemory_search / memory_get, canvas, nodes, cron, gateway, message (チャネルルーティング), sessions_list / sessions_history / sessions_send / session_status, subagents (list/steer/kill), agents_list, tts, image, process
OpenCodemultiedit, lsp (experimental), batch (並列実行, experimental), codesearch (Exa API), plan_enter / plan_exit (experimental)
Roo Codecodebase_search (ベクトル), read_command_output, run_slash_command (実験), edit / search_replace / edit_file / apply_patch (opt-in編集バリアント), generate_image (実験)

この章ではエージェントの振る舞いを定義する3つの中核概念を比較する。
Mode: エージェントの動作モード(計画/実行/レビュー等)の切り替え方式。
SubAgent: 親エージェントが子エージェントを起動して並列・委譲処理する仕組み。
Skill: 特定タスク向けの再利用可能なプロンプト+設定のパッケージ。
これらの組み合わせにより、複雑なタスクを構造化して処理する能力が決まる。

項目Claude CodeClineCodebuffCodex CLI
型定義"default" | "acceptEdits" | "dontAsk" | "bypassPermissions" | "plan"type Mode = "plan" | "act"CostMode = 'ask' | 'free' | 'normal' | 'max'CollaborationModeMask { name, mode: Option<ModeKind>, model, reasoning_effort, developer_instructions } + ModeKind { Default, Plan }
定義ファイル設定ファイル permissions.defaultModesrc/shared/storage/types.ts, components/act_vs_plan_mode.tspackages/agent-runtime/src/main-prompt.tscore/src/models_manager/collaboration_mode_presets.rs, core/src/agent/role.rs
組み込みモード数5 (Permission Mode)2 (act/plan)5+1 (ask/free/normal/max/fast + plan)2 CollabMode (Default/Plan) + 4 AgentRole (default/explorer/worker/awaiter)
切替方式Shift+Tab / CLI --permission-modeUI切替/mode:* CLIクライアントがターン開始時指定
ツール制御方式Permission Modeがツール承認動作を制御プロンプト指示のみ(ハードフィルタなし)toolNames 配列の条件分岐developer_instructions差替。AgentRoleはConfig TOMLマージ
カスタムモードカスタムCollaborationModeプリセット
SubAgent別設定permissionMode フィールドで個別設定(親がbypass時は上書き不可)エージェント定義ごとに独立AgentRole TOML overlay (apply_role_to_config())
項目KilocodeOpenClawOpenCodeRoo Code
型定義ModeConfig { slug, name, roleDefinition, whenToUse, groups, customInstructions, source?, iconName? }ToolProfileId = "minimal" | "coding" | "messaging" | "full" + PromptMode = "full" | "minimal" | "none"Agent.Info { name, mode("primary"|"subagent"|"all"), permission(Ruleset), prompt?, model? }ModeConfig { slug, name, roleDefinition, whenToUse?, groups, customInstructions? }
定義ファイルpackages/types/src/mode.ts (DEFAULT_MODES), src/shared/modes.tssrc/agents/tool-catalog.ts, src/agents/system-prompt.tspackages/opencode/src/agent/agent.tspackages/types/src/mode.ts, src/shared/modes.ts
組み込みモード数6 (architect/code/ask/debug/orchestrator/review)ToolProfile 4種 + PromptMode 3種2 primary (build/plan) + 2 subagent (general/explore) + 3 hidden5 (architect/code/ask/debug/orchestrator)
切替方式switch_mode ツール / UIエージェント設定@ 指定 / PlanEnter/PlanExitswitch_mode ツール / UI
ツール制御方式groups × TOOL_GROUPS + isToolAllowedForMode()allow/denyリストエージェント別 permission ルールセットgroups × TOOL_GROUPS
カスタムモード✓ (VSCode globalState customModes / .kilocode/)エージェント定義で設定.opencode/agent/*.md / opencode.json agent✓ (VSCode customModes / .roomodes)
SubAgent別設定— (逐次new_task)サブエージェント深度別ToolPolicyエージェント別 permission + disabled tools— (逐次new_task)
項目Claude CodeClineCodebuffCodex CLI
ツール名Taskuse_subagentsspawn_agents / spawn_agent_inlinespawn_agent / spawn_agents_on_csv
実装ファイル— (非公開)SubagentToolHandler.ts, SubagentRunner.ts (src/core/task/tools/subagent/)spawn-agents.ts, spawn-agent-utils.ts (packages/agent-runtime/src/tools/handlers/tool/)multi_agents.rs, control.rs, guards.rs (core/src/tools/handlers/, core/src/agent/)
並列実行✓ (run_in_background パラメータ)✓ (最大5, Promise.allSettled)✓ (Promise.allSettled)✓ (agent_max_threads 制限 + CSV batch 最大64)
再帰制限不可 (SubAgentはSubAgent起動不可)不可 (!context.isSubagentRun ガード)可 (loopAgentSteps() 再帰呼び出し)深度制限 (agent_max_depth)
コンテキスト独立 (resume対応: agent IDで再開可能)独立 (親の会話履歴参照なし)独立 or 親継承 (inheritParentSystemPrompt, includeMessageHistory)fork可能 (fork_context: bool)
結果返却サマリとして親に返却attempt_completion で親に返却自動返却completion_watcher が親に完了通知
エージェント間通信send_input / resume_agent
isolationisolation: "worktree" でGit worktree隔離
トランスクリプト~/.claude/projects/{project}/{sessionId}/subagents/agent-{agentId}.jsonl
項目KilocodeOpenClawOpenCodeRoo Code
ツール名new_tasksessions_spawntasknew_task
実装ファイルsrc/core/tools/NewTaskTool.tssrc/agents/subagent-spawn.ts, tools/sessions-spawn-tool.tspackages/opencode/src/tool/task.tssrc/core/tools/NewTaskTool.ts
並列実行不可 (逐次)✓ (Gateway API経由)LLM判断依存 (複数task同時発行)不可 (逐次)
再帰制限不可深度制限 (DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH)不可 (hasTaskPermission チェック)不可
コンテキスト独立 (delegateParentAndOpenChild())独立 (隔離セッション)独立 (Session.create({ parentID }))独立 (delegateParentAndOpenChild())
結果返却attempt_completion で返却完了時自動アナウンス (push-based)テキスト結果を親に返却attempt_completion で返却
エージェント間通信sessions_send / subagents (steer/kill)
特記newTaskRequireTodos 設定でtodos必須化可能mode: “run” (一回実行) / “session” (永続スレッドバインド)サブセッションはtodowrite/todoread無効newTaskRequireTodos 設定でtodos必須化可能
項目Claude CodeClineCodebuffCodex CLI
配置パス.claude/skills/<name>/SKILL.md (project), ~/.claude/skills/<name>/SKILL.md (user).clinerules/skills/, .cline/skills/, .claude/skills/, .agents/skills/, ~/.cline/skills/, ~/.agents/skills/.agents/skills/{name}/SKILL.md$CODEX_HOME/skills/<name>/SKILL.md
frontmattername, description, disable-model-invocation, user-invocable, allowed-tools, model, context, agent, hooksname, descriptionname, descriptiondescription (トリガーマッチング用)
読み込みツールSkilluse_skillskill自動 (descriptionマッチ→ボディ注入)
プロンプト注入方式セッション開始時にdescription一覧を注入 (バジェット: context windowの2%, フォールバック16,000文字)SKILLS_SECTIONにリスト注入 → LLMが名前指定で読込formatAvailableSkillsXml() でXML形式に変換しdescriptionに埋込起動時に install_system_skills() でアセット展開 → フロントマターdescriptionでマッチ
モード別フィルタ
特記context: fork で独立SubAgentコンテキスト。allowed-tools で権限昇格。agent フィールドで実行SubAgent指定/skill:{name} でスラッシュコマンドからも呼出可能Built-in: skill-creator, skill-installer
実装ファイル— (非公開)src/core/context/instructions/user-instructions/skills.ts, tools/use_skill.tspackages/agent-runtime/src/tools/handlers/tool/skill.tscodex-rs/skills/src/lib.rs
項目KilocodeOpenClawOpenCodeRoo Code
配置パス.kilocode/skills/, .kilocode/skills-{mode}/ (global/project)workspace内 skills/ + バンドル + プラグイン.opencode/{skill,skills}/**/SKILL.md, .claude/skills/**/SKILL.md, ~/.claude/skills/.roo/skills/, .roo/skills-{mode}/, .agents/skills/ (global/project)
frontmattername, descriptionname, description, always, os, requires.bins/env/config, installname, descriptionname, description, modeSlugs
読み込みツールfetch_instructionsread ツールで読込skillskill
プロンプト注入方式AVAILABLE SKILLSセクションに一覧 + mandatory_skill_check 指示<available_skills> セクション注入 → LLMがマッチ選択SkillToolのdescriptionにスキル一覧をXML形式で埋込AVAILABLE SKILLSセクションにXMLリスト + mandatory_skill_check
モード別フィルタ✓ (skills-{mode}/ ディレクトリ)✓ (skills-{mode}/ ディレクトリ + modeSlugs frontmatter)
特記優先順位: project > global, mode-specific > genericalways frontmatterで常時読込。requires で前提条件指定。SkillCommandSpecでスラッシュコマンド登録Skillはプロンプトテキスト注入のみ(ツールセット切替なし)優先順位: project > global, mode-specific > generic, .roo > .agents
実装ファイルsrc/services/skills/SkillsManager.ts, sections/skills.tssrc/agents/skills/workspace.ts, skills/types.tspackages/opencode/src/skill/skill.ts, tool/skill.tssrc/services/skills/SkillsManager.ts, sections/skills.ts

この章ではエージェントの長時間実行を支える4つの機能を比較する。
Context Compaction: コンテキストウィンドウの溢れを防ぐ会話圧縮。
Checkpoint/Rollback: ファイル変更の巻き戻し(アンドゥ)機能。
Plan + TodoList: タスクの計画・進捗管理。
Tool Permission: ツール実行の承認・拒否制御とサンドボックス。

項目Claude CodeClineCodebuffCodex CLI
トリガー自動: context windowの約95%到達。手動: /compact [focus]自動: コンテキストウィンドウ超過。手動: /smol (/compact) → condense ツール自動: 毎ステップ先頭でcontext-prunerが判定 (maxContextLength超過 or プロンプトキャッシュミス5分超)自動: コンテキストウィンドウ溢れ。手動: ユーザー明示
圧縮方式古いツール出力クリア → 必要に応じLLMで要約summarize_task → LLMが8セクション要約生成。condensegetNextTruncationRange() でトランケーションcontext-pruner (gpt-5-mini) が全履歴を要約 → <conversation_summary> タグ → set_messages で置換Inline: 同一モデルに会話履歴+Compactionプロンプト送信→要約生成→新履歴構築。Remote: OpenAI専用APIで圧縮済み履歴受信
保持ルールCLAUDE.mdの指示は保持。“Compact Instructions"セクションで制御可能keepStrategy: “lastTwo”/“none”目標サイズ: maxContextLength × 0.1 (10%)ユーザーメッセージ最新優先、20,000トークン上限。Ghost Snapshot再付加
実装ファイル— (非公開)src/core/context/context-management/ContextManager.ts, src/core/prompts/contextManagement.ts, CondenseHandler.tsagents/context-pruner.tscore/src/compact.rs (Inline), core/src/compact_remote.rs (Remote)
閾値設定CLAUDE_AUTOCOMPACT_PCT_OVERRIDE 環境変数maxContextLength (デフォルト200K)
HookPreCompact フックイベント (matcher: manual | auto)PreCompact Hook (外部スクリプトが contextModification で注入可能)
SubAgentSubAgentも独立してauto-compactionSubAgent: useAutoCondense 設定で75%閾値親のhandleStepsが毎ステップ呼出 (inheritParentSystemPrompt)
項目KilocodeOpenClawOpenCodeRoo Code
トリガー自動: MIN_CONDENSE_THRESHOLD(5%)~MAX_CONDENSE_THRESHOLD(100%)到達自動: トークン上限到達自動: isOverflow() (入力トークン > limit.input)自動: トークン上限接近。手動: /compact
圧縮方式最後の3メッセージ (N_MESSAGES_TO_KEEP) 保持、残りをLLMで要約 → 要約をassistantメッセージとして挿入、元メッセージを condenseParent タグで非表示化(非破壊的)chunkMessagesByMaxTokens() でチャンク分割 → 各チャンク generateSummary() (reasoning: “high”) → 要約で置換compaction agent で要約生成 (summary: true assistantメッセージ) → prune() で古いツール出力を compacted マーク (40,000トークン以降)summarizeConversation() でLLM要約 → 全メッセージに condenseParent タグ付与 → 要約メッセージのみAPI送信 (Fresh Start Model)
保持ルールBASE_CHUNK_RATIO=0.4, SAFETY_MARGIN=1.2skill ツール出力はプルーニング保護<command> ブロックとファイルコンテキストは保持
実装ファイルsrc/core/condense/index.tssrc/agents/compaction.tspackages/opencode/src/session/compaction.tssrc/core/condense/index.ts
カスタマイズカスタム要約プロンプト + カスタムAPI handlerconfig.compaction.auto (デフォルトtrue), config.compaction.prune (デフォルトtrue)customCondensingPrompt で要約指示カスタマイズ

Context Compactionはロングランニングタスクにおいて不可欠な機能である。 圧縮方式はツールにより異なり、LLM要約型(Claude Code, Kilocode等)、チャンク分割要約型(OpenClaw)、 専用圧縮エージェント型(Codebuff, OpenCode)、リモートAPI型(Codex CLI)等がある。 保持ルールの違いにより、圧縮後にどれだけの情報が残るかが大きく変わる。

項目Claude CodeClineCodebuffCodex CLI
実装— (未実装)
方式セッションローカルスナップショットShadow Gitリポジトリ (CheckpointTracker)Ghost Commit (git) + ShellSnapshot + Thread Rollback API
保存タイミングファイル編集前に自動ツール実行ごとに commit()ターン開始時に GhostSnapshotTaskcreate_ghost_commit_with_report() 実行
復元方式Esc×2 → /rewind ダイアログ → 任意時点に巻き戻し3タイプ: "task" (会話のみ), "workspace" (ファイルのみ, git reset --hard), "taskAndWorkspace" (両方)/undo → 履歴末尾の GhostSnapshot 検索 → restore_ghost_commit_with_options()。Thread Rollback: 最後Nターン切捨て (ファイル復元なし)
追加機能--fork-session で特定時点から分岐Shell Snapshot: シェル環境 (functions/aliases/env vars) キャプチャ → $CODEX_HOME/shell_snapshots/ (3日保持)
実装ファイル— (非公開)src/integrations/checkpoints/CheckpointTracker.ts, index.tscore/src/tasks/ghost_snapshot.rs, core/src/tasks/undo.rs, utils/git/src/ghost_commits.rs, core/src/shell_snapshot.rs
制限リモートシステム操作はチェックポイント対象外初期化に15秒タイムアウトtracked+untracked全ファイル (node_modules除外, 10MiB超untracked除外, 200ファイル超untrackedディレクトリ除外)
項目KilocodeOpenClawOpenCodeRoo Code
実装— (未実装)
方式Shadow Gitリポジトリ (RepoPerTaskCheckpointService)Snapshot (Git write-tree)Shadow Gitリポジトリ (RepoPerTaskCheckpointService)
保存タイミングツール実行前各ステップ開始時 (Snapshot.track())ツール実行後 (checkpointSave())
復元方式Git restoreで復元SessionRevert.revert() でSnapshotパッチを逆適用。Snapshot.restore() でunrevertcheckpointRestore() で指定コミットに復元 + メッセージ履歴巻き戻し
追加機能Snapshot.cleanup() が1時間間隔で7日超をGC。Snapshot.patch() で差分記録checkpointDiff() で差分表示
実装ファイルsrc/core/checkpoints/index.tspackages/opencode/src/snapshot/index.ts, session/revert.tssrc/core/checkpoints/index.ts, src/services/checkpoints/
制限task.enableCheckpointstask.checkpointTimeout で制御専用gitdir $DATA/snapshot/$projectIDGit インストール必須。タイムアウト設定あり
項目Claude CodeClineCodebuffCodex CLI
Plan機構EnterPlanMode / ExitPlanMode ツール。Shift+Tab切替。--permission-mode plan で起動ACT/PLAN 2値切替。PLAN時は plan_mode_respond のみ使用可PLAN mode (base2-plan): ファイル変更禁止、<PLAN> タグで仕様記述CollaborationMode Plan: plan.md 注入、Explore/Intent Chat/Implementation Chat の3フェーズ、<proposed_plan> 出力、ファイル変更禁止
TodoListツールTodoWrite (content, activeForm, status: pending|in_progress|completed)FocusChain: attempt_completion/summarize_tasktask_progress パラメータ内Markdownチェックリスト (- [x]/- [ ])write_todos ({ todos: [{ task: string, completed: boolean }] })update_plan ({ explanation?, plan: [{ step, status: "pending"|"in_progress"|"completed" }] })
永続化<taskDir>/<taskId>-focuschain.md + chokidar監視UI側で表示 (ハンドラは成功を返すのみ)EventMsg::PlanUpdate → TUI/クライアント表示 (サーバー側永続化なし)
実装ファイル— (非公開)src/core/task/focus-chain/index.ts (FocusChainManager)packages/agent-runtime/src/tools/handlers/tool/write-todos.ts, agents/base2/base2-plan.tscore/src/tools/handlers/plan.rs
制限Next-Gen系モデルでのみFEEDBACK/TASK_PROGRESSセクション有効。focusChainSettings.enabled同時にin_progressは1ステップのみ。Planモードではupdate_plan拒否
項目KilocodeOpenClawOpenCodeRoo Code
Plan機構Architectモードの customInstructions がタスク分解→TodoList作成を指示— (未実装)Plan Agent + plan_enter / plan_exit (experimental: OPENCODE_EXPERIMENTAL_PLAN_MODE)。計画ファイルは .opencode/plans/ 保存Architectモードの customInstructions が計画→todoリスト作成→進捗更新を指示
TodoListツールupdate_todo_list (Markdownチェックリスト: [ ]=pending, [-]=in_progress, [x]=completed)todowrite / todoread (Todo.Info { content, status, id })update_todo_list (Markdownチェックリスト: [ ], [-], [x])
永続化Todo.update() でセッション内管理
実装ファイルsrc/core/prompts/tools/update-todo-list.ts, src/core/tools/UpdateTodoListTool.tspackages/opencode/src/tool/plan.ts, tool/todo.ts, session/todo.tssrc/core/prompts/tools/native-tools/update_todo_list.ts
制限todoListEnabled 設定で無効化可能サブセッションはtodowrite/todoread無効todoListEnabled 設定で無効化可能

Plan機構はタスクの分解と進捗追跡を行う仕組みである。 専用ツール(EnterPlanMode等)を持つものと、モードの一部として実装するもの(Architectモード等)に分かれる。 TodoListのステータス管理方式もツールにより異なり、3値(pending/in_progress/completed)が標準的だが、 Markdownチェックリスト形式を採用するツールもある。

項目Claude CodeClineCodebuffCodex CLI
承認モデルPermission Rules (allow/ask/deny)AutoApprovalSettings.actions (ツール種別ごとのbool) + YOLOモードなし (エージェントランタイム側に承認制御なし)AskForApproval enum (Never/OnFailure/OnRequest/UnlessTrusted/Reject) + SandboxPolicy + ExecPolicyManager
設定形式permissions: { allow: ["Bash(npm run lint)"], ask: ["Bash(git push *)"], deny: ["Read(./.env)"] }actions: { readFiles, readFilesExternally, editFiles, editFilesExternally, executeSafeCommands, executeAllCommands, useBrowser, useMcp }CLI側 requestToolCall コールバック (制限的).rules ファイル (Starlark DSL): exec_policy.check_multiple() → Allow/Prompt/Forbidden
評価順序deny → ask → allow (最初のマッチ)ExecPolicyManager → セッション内承認キャッシュ (with_cached_approval()) → default.rules に自動追記で永続化
ワイルドカードBash(npm run *), Read(./src/**)Starlark DSL内のパターンマッチ
サンドボックスsandbox.enabled, autoAllowBashIfSandboxed, excludedCommands, ネットワーク制限Seatbelt (macOS), Landlock (Linux), Windows Sandbox。sandbox失敗時「sandbox無しで再実行」オプション
Hook連携PreToolUseフックで動的ブロック/承認PreToolUse Hook (cancel/contextModification)
設定階層Managed > CLI > Local > Project > User。allowManagedPermissionRulesOnly で制限リモートConfig > セッションオーバーライド > タスク設定 > グローバル設定$CODEX_HOME/rules/*.rules
実装ファイル— (非公開)src/shared/AutoApprovalSettings.ts, src/core/task/tools/autoApprove.ts, src/core/permissions/CommandPermissionController.tscore/src/tools/sandboxing.rs, core/src/exec_policy.rs, core/src/config/permissions.rs
項目KilocodeOpenClawOpenCodeRoo Code
承認モデルAutoApprovalHandler + yoloモード + リクエスト数/コスト上限ToolProfile + allow/deny + オーナー専用 + 深度別 + サンドボックス + グループ + プロバイダー (7層パイプライン)PermissionNext (allow/deny/ask 3段階。ルールセット、エージェント別)AutoApprovalHandler + askApproval()
設定形式AutoApprovalSettings.actions (Cline互換) + CommandPermissionController (env CLINE_COMMAND_PERMISSIONS)config.agents.list[].tools.allow/deny (グループ名 “group:fs” 等も使用可)PermissionNext.Rule { permission(ツール名glob), pattern(引数glob), action }Auto-Approve設定 (allowedMaxRequests, allowedMaxCost)
評価順序サブエージェント深度 → サンドボックス → エージェント → グループ → ToolProfile → オーナー → プロバイダfindLast (後勝ち) でルールセット評価。デフォルト ask
バイパスモードyoloMode: 全承認スキップ (ask_followup_question も無効化)config.permission でグローバル "allow" 設定可能
Doom Loop検出✓ (同一ツール+同一入力が3回連続 → doom_loop パーミッション要求)
exec承認CommandPermissionController: CLINE_COMMAND_PERMISSIONS 環境変数でallow/deny globパターン。&&, ||, |, ; セグメント分割、バックティック禁止bash-tools.exec-approval-request.ts で実行前承認フロー
実装ファイルsrc/core/auto-approval/AutoApprovalHandler.tssrc/agents/tool-policy.ts, pi-tools.policy.ts, tool-policy-pipeline.tspackages/opencode/src/permission/next.tssrc/core/auto-approval/AutoApprovalHandler.ts

Tool Permissionはセキュリティ上最も重要な機能の一つである。 Claude Codeのallow/ask/deny 3段階ルールとワイルドカードパターン、 Codex CLIのStarlark DSLによるポリシー定義、OpenClawの7層パイプラインなど、 承認モデルの粒度と柔軟性に大きな差がある。サンドボックス対応もセキュリティ面で重要な差別化要因である。

項目Claude CodeClineCodebuffCodex CLI
Hookイベント数5 (PreToolUse, PostToolUse, UserPromptSubmit, Stop, PreCompact)8 (PreToolUse, PostToolUse, UserPromptSubmit, TaskStart, TaskResume, TaskCancel, TaskComplete, PreCompact)
定義場所settings.json 内hooks設定.clinerules/hooks/<HookName> or ~/Documents/Cline/Hooks/<HookName>
実行方式シェルコマンド実行可能ファイル → JSON stdin → JSON stdout
制御フィードバックをユーザーからの入力として扱うcancel: true でブロック、contextModification でコンテキスト注入。30秒タイムアウト、1MB出力制限
Plugin対応Plugin hookで配布可能
項目KilocodeOpenClawOpenCodeRoo Code
Hookイベント数applyBootstrapHookOverrides() (ブートストラップフック)Plugin.trigger() (実験的)
定義場所src/agents/bootstrap-hooks.tsPlugin定義内
実行方式プラグインがブートストラップファイルを書き換え"experimental.chat.system.transform", "tool.execute.before/after"

この章ではセッションを跨いで知識を保持する「長期記憶」の実装を比較する。 実装パターンは大きく分けて、ファイルベース(C型)、パイプライン型(B+C型)、ベクトル検索型(独自)、未実装(F型)がある。 2026年2月時点で本格的な長期記憶を実装しているのはClaude Code、Codex CLI、OpenClawの3ツールのみであり、 Cline、Kilocode、Roo Codeは未実装である。

ツールパターン自動抽出検索方式格納形式
Claude CodeC (ファイルベース)✓ Auto Memory全文注入 (MEMORY.md先頭200行) + Read/Grep/GlobツールでオンデマンドMarkdown (~/.claude/projects/<project>/memory/MEMORY.md + *.md)
ClineF (未実装)
CodebuffC (ファイルベース)△ (AI判断write)全文注入 ({CODEBUFF_KNOWLEDGE_FILES_CONTENTS})Markdown (knowledge.md, AGENTS.md, CLAUDE.md)
Codex CLIB+C (パイプライン + ファイル)✓ 2フェーズ自動全文注入 (memory_summary.md, 上限5,000トークン) + grepベースキーワード検索Markdown + SQLite ($CODEX_HOME/memories/ + StateDB)
KilocodeF (未実装)
OpenClaw独自 (C + ベクトル検索)△ (ファイル監視→再インデックス)ハイブリッド (ベクトル0.7 + BM25 0.3 + MMR + 時間減衰)SQLite (sqlite-vec + FTS5) (~/.openclaw/state/memory/{agentId}.sqlite)
OpenCodeF (未実装) / 部分的C
Roo CodeF (未実装)
項目詳細
格納先~/.claude/projects/<project-hash>/memory/MEMORY.md (インデックス) + *.md (トピックファイル)
プロンプト注入MEMORY.md先頭200行をシステムプロンプトに自動注入。トピックファイルはRead/Grep/Globでオンデマンド
書き込みトリガー自動 (Auto Memory: LLMが有用コンテキストを自動判断) + 明示 (ユーザー指示 “remember that…”) + /memory コマンド
書き込み方法LLMがWrite/Editツールで memory/MEMORY.mdmemory/*.md に直接書き込み
更新指示“Update or remove memories that turn out to be wrong or outdated” (システムプロンプト内)
サイズ制限MEMORY.md 200行。超過時はトピックファイルへ移動する指示あり
SubAgent永続メモリmemory フィールド (user/project/local) で有効化。パス: ~/.claude/agent-memory/<name>/, .claude/agent-memory/<name>/, .claude/agent-memory-local/<name>/
無効化autoMemoryEnabled: false (settings.json) / CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 環境変数

Claude CodeのAuto Memoryは、LLMが自律的に有用な情報を判断してMEMORY.mdに書き込む方式である。 シンプルだが実用的で、先頭200行がシステムプロンプトに自動注入される。 SubAgent永続メモリ(user/project/local)により、サブエージェントも独自の記憶領域を持てる点が特徴的である。

項目Phase 1 (抽出)Phase 2 (統合)
トリガーstart_memories_startup_task() (root session開始時、非SubAgent、非ephemeral、Feature::MemoryTool有効時)Phase 1完了後自動
実行モデルgpt-5.1-codex-mini, reasoning_effort=Lowgpt-5.3-codex, reasoning_effort=Medium
並列度最大8件グローバルロック排他 (1件)
入力過去ロールアウト (会話ログ) → serialize_filtered_rollout() (70%コンテキスト切り詰め)Stage1Output (selected + removed + retained)
出力raw_memory (タスク別), rollout_summary (要約), rollout_slugMEMORY.md (統合ハンドブック), memory_summary.md (索引), skills/<name>/SKILL.md
プロンプトsystem: stage_one_system.md, user: stage_one_input.md templateconsolidation.md template
後処理redact_secrets()StateDB.mark_stage1_job_succeeded()SubAgent (SessionSource::SubAgent(MemoryConsolidation)) として spawn
実装ファイルcore/src/memories/phase1.rscore/src/memories/phase2.rs

読み取りパス:

項目詳細
全文注入memory_summary.md → developer instructions注入 (read_path.md テンプレート経由、上限5,000トークン)
キーワード検索MEMORY.md をgrepで検索。memory_summary.mdの “What’s in Memory” セクションがルーティングガイド
選択的参照rollout_summaries/*.md からMEMORY.md参照ポインタで1-2件選択
矛盾解決updated_at タイムスタンプ + 検証強度 (ユーザーフィードバック > テスト結果 > アシスタント自己申告)
プルーニングmax_raw_memories_for_global, max_unused_days 設定。retained_memories() で上限超過分を切り捨て。prune_rollout_summaries() で物理ファイル同期削除
実装ファイルcore/src/memories/prompts.rs:158 (build_memory_tool_developer_instructions()), core/src/memories/storage.rs

Codex CLIの2フェーズメモリは8ツール中最も高度な記憶システムである。
Phase 1でgpt-5.1-codex-miniが過去の会話ログから記憶を抽出し、
Phase 2でgpt-5.3-codexが統合ハンドブック(MEMORY.md)と索引(memory_summary.md)を生成する。
秘密情報の自動削除(redact_secrets)やプルーニング(未使用日数超過で自動削除)も備える。

項目詳細
記憶ソースMEMORY.md, memory/*.md (ユーザー/LLMが直接編集) + セッションtranscript (experimental: experimental.sessionMemory: true)
インデックスDBSQLite (sqlite-vec + FTS5) — ~/.openclaw/state/memory/{agentId}.sqlite
埋め込みプロバイダOpenAI text-embedding-3-small / Gemini gemini-embedding-001 / Voyage voyage-4-large / Mistral mistral-embed / ローカル (node-llama)
ベクトル検索sqlite-vec拡張。デフォルト重み: 0.7
全文検索SQLite FTS5 (BM25)。buildFtsQuery() でクエリ変換。デフォルト重み: 0.3
マージmergeHybridResults() でベクトルスコアとBM25スコアを重み付き加算
MMRオプション。lambda=0.7 で多様性確保
時間減衰オプション。halfLifeDays=30 で古い記憶のスコアを減衰
ファイル監視chokidar watcherがメモリファイル変更を検知 → watchDebounceMs=1500 後に再チャンク化 → 埋め込み再計算 → SQLiteインデックス更新
ツールmemory_search (セマンティック検索), memory_get (ファイル読み取り)
全文注入MEMORY.md自体はブートストラップファイルとしてProject Contextセクションに全文注入 (resolveBootstrapMaxChars() で制御)
サブエージェントSUBAGENT_TOOL_DENY_ALWAYS に memory_search/memory_get 含まれるため利用不可
実装ファイルsrc/memory/manager.ts (MemoryIndexManager), src/memory/hybrid.ts, src/memory/embeddings.ts, src/memory/sqlite-vec.ts, src/memory/mmr.ts, src/memory/temporal-decay.ts, src/agents/tools/memory-tool.ts
項目詳細
格納先プロジェクトルートの knowledge.md, AGENTS.md, CLAUDE.md + ~/.knowledge.md
注入方式{CODEBUFF_KNOWLEDGE_FILES_CONTENTS} プレースホルダ経由でシステムプロンプトに全文注入
書き込みLLMが write_file/str_replace で直接更新。knowledgeFilesPrompt が「いつ更新すべきか」をプロンプトで指示
初期化/init コマンド → README/package.json等を読み取り → knowledge.md生成
矛盾解決なし (AIが既存内容を読み取りマージ判断)
実装ファイルpackages/agent-runtime/src/system-prompt/prompts.ts (knowledgeFilesPrompt, additionalSystemPrompts['/init']), templates/strings.ts (formatPrompt())

この章ではユーザーが各ツールの動作をどこまでカスタマイズできるかを比較する。 カスタムエージェント/モード定義、スラッシュコマンド、カスタムツール定義、 およびカスタムプロンプト使用時に何が失われ何が残るかを詳細に整理している。 拡張性の高さはツール選定時の重要な判断基準となる。

ツール定義形式配置パス上書き方式優先順位実装ファイル
Claude CodeMarkdownファイル (YAMLフロントマター + マークダウン本文=システムプロンプト).claude/agents/<name>.md (project), ~/.claude/agents/<name>.md (user)同名で優先置換 (CLIフラグ > project > user > Plugin)1. --agents CLI 2. .claude/agents/ 3. ~/.claude/agents/ 4. Plugin agents— (非公開)
Clineなし (名前付きAgent定義の仕組みなし)
CodebuffTypeScript (AgentDefinition インターフェース).agents/ ディレクトリlocalAgentTemplates が最優先 (getAgentTemplate())1. localAgentTemplates 2. DBキャッシュ 3. DBクエリagents/types/agent-definition.ts, packages/agent-runtime/src/templates/agent-registry.ts
Codex CLITOMLファイル (Agent Role overlay)codex-rs/core/src/agent/builtins/*.toml, $CODEX_HOME/prompts/*.mdapply_role_to_config() でConfigにTOMLレイヤーマージConfig上書きcore/src/agent/role.rs, custom_prompts.rs
KilocodeModeConfig (VSCode globalState or .kilocode/)VSCode globalState "customModes" / .kilocode/同一slug上書き (getAllModes() でindex上書き)カスタム > 組み込み。customModePrompts > カスタムモード > 組み込みpackages/types/src/mode.ts, src/shared/modes.ts
OpenClawYAML/JSON設定ファイル (config.agents.list[])設定ファイル内エージェント設定で完全定義src/agents/agent-scope.ts
OpenCodeMarkdownファイル (frontmatter + body).opencode/agent/ or .opencode/agents/Config.Agent スキーマでパース → マージ。agent.disable: true で無効化1. リモート 2. グローバル 3. OPENCODE_CONFIG 4. プロジェクト 5. OPENCODE_CONFIG_CONTENTpackages/opencode/src/config/config.ts (loadAgent())
Roo CodeModeConfig[] (VSCode拡張状態 or .roomodes)VSCode customModes / .roomodes同一slug上書きカスタム > 組み込み。customModePrompts > カスタム > 組み込みpackages/types/src/mode.ts, src/shared/modes.ts
フィールドClaude CodeCodebuffCodex CLIOpenCode
name
descriptiondescription (YAML)
toolstoolNames
disallowedTools
model✓ (TOML)
permissionModepermission (Ruleset)
maxTurnssteps
skillsspawnableAgents
mcpServers
hooks
memory✓ (user/project/local)
background
isolation✓ (worktree)
prompt (system)— (markdown本文がプロンプト)systemPromptbase_instructionsprompt
inheritParentinheritParentSystemPrompt
includeHistoryincludeMessageHistoryfork_context
ツール定義パス形式テンプレート変数実装ファイル
Claude Code.claude/skills/<name>/SKILL.md (user-invocable: true)YAML frontmatter + Markdown$ARGUMENTS, $ARGUMENTS[N], $N, ${CLAUDE_SESSION_ID}, !`command` (動的出力)— (非公開)
Cline.clinerules/workflows/ or ~/Documents/Cline/Workflows/Markdownファイルsrc/core/slash-commands/index.ts
Codebuff— (組み込みのみ: /init, /export, /compact)SLASH_COMMANDS 配列 + additionalSystemPromptscli/src/data/slash-commands.ts, system-prompt/prompts.ts
Codex CLI$CODEX_HOME/prompts/*.mdYAML frontmatter (description, argument-hint) + Markdowncore/src/custom_prompts.rs
Kilocode.kilocode/ (実験的: runSlashCommand フラグ)src/core/prompts/tools/run-slash-command.ts
OpenClawSkill frontmatterの commands (SkillCommandSpec)SkillCommandSpec { name, skillName, description, dispatch? }src/agents/skills/types.ts
OpenCode.opencode/command/ or .opencode/commands/ + MCP promptsMarkdown (frontmatter + body)$1, $2, $ARGUMENTSpackages/opencode/src/command/index.ts
Roo Code.roo/commands/{name}.mdMarkdown (frontmatter: description, argument-hint, mode)src/services/command/commands.ts
ツール対応定義方式ファイル
Claude Code✓ (MCP)MCP サーバー経由 (.mcp.json)
Cline✓ (MCP)MCPサーバー (McpHub.ts) 経由で動的取得src/services/mcp/McpHub.ts
CodebufffileContext.customToolDefinitions + MCP
Codex CLI✓ (MCP)mcp_connection_manager.rs 経由tools/handlers/mcp.rs
Kilocode✓ (実験)customToolRegistry (実験フラグ customTools) + MCP
OpenClawプラグインツール (src/plugins/tools.ts)src/plugins/tools.ts
OpenCode.opencode/{tool,tools}/*.{js,ts} (@opencode-ai/plugin ToolDefinition形式) + Plugin + MCPpackages/opencode/src/plugin/index.ts
Roo Code✓ (MCP)MCPサーバー経由src/services/mcp/McpHub.ts
ツールカスタム時に失われるものカスタム時に残るもの
Claude CodeSubAgent: メインClaude Codeシステムプロンプトを受け取らないCLAUDE.mdはSubAgentにも読み込まれる。ツール定義は指定ツールに応じて含まれる
Clineなし (.clinerules等はUSER_INSTRUCTIONS_SECTIONに追加)ツール定義・ACT/PLANモード・RULES等の全組み込みセクション
Codebuffカスタム systemPrompt 設定時: Buffyデフォルトプロンプト全体instructionsPrompt のサブエージェント仕様は自動追記。Knowledge は {CODEBUFF_KNOWLEDGE_FILES_CONTENTS} をsystemPromptに含める場合のみ
Codex CLIconfig.base_instructions 設定時: model_info.base_instructionsCollaborationMode instructions, Memory instructions, Session prefix
Kilocode.kilocode/system-prompt-{mode} 存在時: TOOL USE, MCP, CAPABILITIES, MODES, SKILLS, RULES, SYSTEM INFO, OBJECTIVEroleDefinition + カスタムプロンプト + customInstructions。Nativeプロトコル使用時はtools配列は独立
OpenClawなし (ブートストラップファイルは追加方式)Built-inセクション全て。TOOLS.mdはガイダンスのみ (ツール可視性は制御しない)
OpenCodeagent.prompt 設定時: SystemPrompt.provider() 全体SystemPrompt.environment(), InstructionPrompt.system(), モード遷移リマインダー, ツール定義
Roo Codeなし (roleDefinition 上書きのみ)MARKDOWN RULES, TOOL USE, CAPABILITIES, RULES, SYSTEM INFO, OBJECTIVE全セクション + ツール定義

この章では8ツール間のコードベースの派生関係を示す。 ClineからKilocodeとRoo Codeがフォークしており、共通のアーキテクチャを持つ。 Claude Code(Anthropic公式)とCodex CLI(OpenAI公式)は各社独自の実装である。 Codebuff、OpenClaw、OpenCodeはそれぞれ独立した設計思想を持つ。 フォーク元と派生先の差分を把握することで、各ツールの独自性が明確になる。

Cline (OSS, VSCode拡張)
  ├── fork  Kilocode 5.7.0
       差分: モード6種に拡張、カスタムシステムプロンプト完全差替(.kilocode/system-prompt-{mode})
             XML/Native 2系統ツール定義、.kilocode/独自ディレクトリ体系
  └── fork  Roo Code 3.50.4
        差分: Native tool-calling専用化(XML系除去)、.roo/ディレクトリ体系
              orchestratorモード追加、reviewモード削除

Claude Code 2.1.59  Anthropic公式 (クローズドソース)
  特徴: Auto Memory、Plugin、Managed Settings、Worktree隔離、SubAgent永続メモリ

Codex CLI 0.106.0  OpenAI公式 (Rust実装)
  特徴: 2フェーズメモリパイプライン、ネイティブサンドボックス、Starlark DSL exec policy
        Ghost Commit、Shell Snapshot、AgentRole TOML overlay、CSV batch 64並列

Codebuff 0.10.6  独自 (マルチエージェントオーケストレーター)
  特徴: 毎ステップcontext-pruner自動実行、エージェント=ツール設計、3層プロンプト
        inheritParentSystemPrompt、プロンプトキャッシュ最適化

OpenClaw 2026.2.26  独自 (メッセージング統合型パーソナルアシスタント)
  特徴: ベクトル+BM25ハイブリッドメモリ、Discord/WhatsApp等チャネル統合
        Cron/Gateway自動化、sessions_spawn隔離セッション、7層ツールポリシー

OpenCode 1.1.36  独自 (マルチプロバイダCLI)
  特徴: Pluginシステム(system.transform hook)、プロバイダ別4種プロンプト
        Zod + AI SDK統合、Git write-tree Snapshot、Doom Loop検出

本ドキュメントで使用される主要な用語を以下に整理する。

用語説明
システムプロンプトLLMに送信される最初の指示文。エージェントの人格、能力、制約を定義する
セクションシステムプロンプトを構成する個々のパーツ。ロール定義、ツール説明、ルール等
エントリーポイントプロンプト生成処理の起点となる関数
パイプラインセクションを順次組み立てて最終プロンプトを生成する処理の流れ
Variant接続するLLMモデルに応じてプロンプト内容を切り替える仕組み
テンプレート変数{{CWD}}{CODEBUFF_*} のようなプレースホルダ。実行時に実際の値に置換される
ルールファイルCLAUDE.md、.clinerules、AGENTS.md等。プロジェクト固有の指示をエージェントに与えるファイル
スコープルールファイルの適用範囲。組織(マネージド) > グローバル(ユーザー) > プロジェクト > ローカルの階層がある
ツール定義LLMが呼び出せる関数のスキーマ。名前、説明、パラメータ型を含む
ツールフィルタリングモードやコンテキストに応じてLLMに見えるツールを制限する機構
JSON SchemaJSONデータの構造を定義する標準仕様。ツールパラメータの型定義に広く使用される
ZodTypeScript向けのスキーマ検証ライブラリ。JSON Schemaへの変換機能を持つ
TypeBoxJSON Schema互換のTypeScript型ビルダー。OpenClawが採用
Modeエージェントの動作モード。plan(計画)/act(実行)/architect(設計)等
SubAgent親エージェントが起動する子エージェント。タスクの並列処理や委譲に使用する
Skill特定タスク向けの再利用可能なプロンプト+設定のパッケージ。SKILL.mdファイルで定義
Context Compactionコンテキストウィンドウの溢れを防ぐため、古い会話を要約・圧縮する処理
Checkpointファイル変更のスナップショット。問題発生時にロールバック(巻き戻し)できる
Shadow Git本来のGitリポジトリとは別に、チェックポイント用に作成される隠しGitリポジトリ
Ghost CommitCodex CLI独自。通常のgit logに表示されない隠しコミットでスナップショットを保存する
TodoListタスクの進捗管理リスト。pending(未着手)/in_progress(進行中)/completed(完了)の3状態
Plan Modeファイル変更を禁止し、計画立案のみを行うモード
Tool Permissionツール実行前にユーザー承認を求める仕組み。allow(許可)/ask(確認)/deny(拒否)
サンドボックスコマンド実行を隔離環境で行い、ホストシステムへの影響を制限する機構
Hookツール実行の前後に外部スクリプトを呼び出す拡張ポイント
MCP (Model Context Protocol)LLMとツール間の標準プロトコル。外部ツールの動的追加を可能にする
長期記憶セッションを跨いで知識を保持する仕組み。ファイルベース、ベクトル検索等の方式がある
Auto MemoryClaude Code独自。LLMが自律的に有用情報をMEMORY.mdに書き込む機能
ベクトル検索テキストを数値ベクトルに変換し、意味的類似度で検索する方式
BM25全文検索の重み付けアルゴリズム。SQLite FTS5等で使用される
MMR (Maximal Marginal Relevance)検索結果の多様性を確保するアルゴリズム
フォーク既存のOSSリポジトリをコピーして独自開発を進めること