🚀 Task Graph MCP Server
実際に機能するエージェントタスクワークフロー
AIエージェントが複雑なタスクを実行する際には、すぐに問題が発生します。エージェントがコンテキストを失い、ステップをスキップし、調整を忘れることがあります。Task Graphは、構造化されたワークフローによってこれらの問題を解決します。作業をガイドするフェーズ、自動ガイダンスのためのプロンプト、品質を保証するゲート、およびマルチエージェントシナリオのための調整プリミティブを、すべてModel Context Protocolを通じて提供します。
🚀 クイックスタート
インストール
cargo install task-graph-mcp
{
"mcpServers": {
"task-graph": {
"command": "task-graph-mcp"
}
}
}
エージェントワークフロー(worker_idを省略すると自動生成)
connect(workflow="swarm", tags=["code"]) → "bright-lunar-swift-fox"
list_tasks(ready=true, agent="bright-lunar-swift-fox") → 請求可能な作業
claim(worker_id="bright-lunar-swift-fox", task="add-auth") → タスクを取得
update(..., phase="implement") → 実装フェーズに入る
thinking(agent="bright-lunar-swift-fox", thought="Adding JWT...") → 他のエージェントに表示される
update(worker_id="bright-lunar-swift-fox", task="add-auth",
status="completed",
attachments=[{type:"commit", content:"abc123"}]) → 完了
✨ 主な機能
なぜTask Graphを選ぶのか?
問題点:複雑なタスクを構造化された実行方法で処理する必要があります。単一のエージェントがフェーズを経て作業する場合や、複数のエージェントが並行して調整する場合があります。適切なワークフローがないと、エージェントは追跡を失い、ステップをスキップし、一貫性のない結果を生み出します。
得られるもの:
- 構造化されたワークフロー — フェーズ(探索、実装、レビュー、テスト)がエージェントの作業をガイドします。遷移プロンプトは各ステップで自動的なガイダンスを提供します。
- 品質ゲート — 遷移前にテストを通過し、コードをコミットし、またはレビューを完了する必要があります。自動的に標準を強制します。
- すぐに使えるトポロジー — 単独作業、並列スワーム、専門家リレー、または階層的な委任のための事前構築されたワークフローがあります。すぐに開始でき、後でカスタマイズできます。
- 設定可能なワークフロー — 独自の状態、フェーズ、プロンプト、およびゲートを定義できます。あなたのプロセスに合わせることができます。
- マルチエージェント調整 — アドバイザリファイルロック、DAG依存関係、アトミッククレームがあります。競合や重複作業がなくなります。
- トークン効率 — LLMのコンテキスト制限に合わせて設計されています。コンパクトなクエリ、最小限の往復、構造化された出力が可能です。
- 組み込みの会計機能 — タスクごとのトークン、コスト、および時間を追跡します。エージェントがどれだけ費やしているかを正確に把握できます。
- ゼロインフラストラクチャ — WALモードのSQLiteを使用しています。データベースサーバーを実行する必要がありません。単にファイルを指定するだけです。
機能一覧
| 機能 |
説明 |
| タスク階層 |
親子関係による無制限のネスト |
| DAG依存関係 |
循環検出付きの型付きエッジ(ブロック、追従、包含) |
| フェーズ |
作業タイプを分類(探索、実装、レビュー、テスト、デプロイ) |
| ワークフロー |
名前付きのワークフロートポロジー(単独、スワーム、リレー、階層的) |
| 遷移プロンプト |
ステータス/フェーズ変更時の自動エージェントガイダンス |
| ゲート |
ステータス/フェーズ遷移のための退出要件 |
| アトミッククレーム |
制限とタグベースのルーティング付きの厳格なロック |
| ファイル調整 |
理由と変更ポーリング付きのアドバイザリロック |
| コスト追跡 |
タスクごとのトークン使用量とUSDコスト |
| 時間追跡 |
状態遷移からの自動累積 |
| ライブステータス |
他のエージェントに可視のリアルタイムの「現在の思考」 |
| 全文検索 |
タスクと添付ファイルを対象としたFTS5ベースの検索 |
| 添付ファイル |
インラインコンテンツ、ファイル参照、またはメディアストレージ |
| エージェントフィードバック |
カテゴリ付きフィードバックによるエージェント間通信(設定による) |
| 動的オーバーレイ |
オーバーレイツールの追加/削除によるランタイムワークフローのカスタマイズ |
📦 インストール
crates.ioからのインストール(推奨)
cargo install task-graph-mcp
事前ビルド済みバイナリのインストール
GitHub Releasesからあなたのプラットフォーム用の最新リリースをダウンロードします。
| プラットフォーム |
ダウンロード |
| Linux (x64) |
task-graph-mcp-x86_64-unknown-linux-gnu.tar.gz |
| macOS (Intel) |
task-graph-mcp-x86_64-apple-darwin.tar.gz |
| macOS (Apple Silicon) |
task-graph-mcp-aarch64-apple-darwin.tar.gz |
| Windows (x64) |
task-graph-mcp-x86_64-pc-windows-msvc.zip |
バイナリを抽出し、PATHに配置します。
ソースからのインストール
git clone https://github.com/Oortonaut/task-graph-mcp.git
cd task-graph-mcp
cargo build --release
バイナリはtarget/release/task-graph-mcpに配置されます。
💻 使用例
MCPサーバーとしての使用
MCPクライアントの設定に追加します。
{
"mcpServers": {
"task-graph": {
"command": "task-graph-mcp",
"args": []
}
}
}
CLIオプション
task-graph-mcp [OPTIONS]
Options:
-c, --config <FILE> 設定ファイルのパス
-d, --database <FILE> データベースファイルのパス(設定を上書き)
-v, --verbose 詳細なログを有効にする
-h, --help ヘルプを表示
-V, --version バージョンを表示
📚 ドキュメント
設定
完全なリファレンス:ワークフロー、プロンプト、ゲート、ロール、およびタグを含む完全な設定ドキュメントについては、docs/CONFIGURATION.mdを参照してください。
.task-graph/config.yamlを作成します。
server:
db_path: .task-graph/tasks.db
media_dir: .task-graph/media
skills_dir: .task-graph/skills
stale_timeout_seconds: 900
default_format: json
paths:
style: relative
auto_advance:
enabled: false
target_state: ready
状態設定
タスクの状態は設定可能です。デフォルトの状態はpending、working、completed、failed、cancelledです。
自動進行のためのready状態を追加するには:
states:
initial: pending
disconnect_state: pending
blocking_states: [pending, working]
definitions:
pending:
exits: [ready, working, cancelled]
ready:
exits: [working, cancelled]
working:
exits: [completed, failed, pending]
timed: true
completed:
exits: []
failed:
exits: [pending]
cancelled:
exits: []
auto_advance:
enabled: true
target_state: ready
状態定義の完全なドキュメントについては、SCHEMA.mdを参照してください。
依存関係設定
依存関係のタイプは、タスク同士の関係を定義します。デフォルトのタイプはblocks、follows、contains、duplicate、see-also、relates-toです。
dependencies:
definitions:
blocks:
display: horizontal
blocks: start
follows:
display: horizontal
blocks: start
contains:
display: vertical
blocks: completion
duplicate:
display: horizontal
blocks: none
see-also:
display: horizontal
blocks: none
relates-to:
display: horizontal
blocks: none
| プロパティ |
値 |
説明 |
display |
horizontal, vertical |
視覚的な関係(同じレベル vs 親子) |
blocks |
none, start, completion |
依存関係がブロックするもの |
添付ファイル設定
事前構成された添付キーは、デフォルトのMIMEタイプとモードを提供し、一般的なコンテンツタイプを添付する際のボイラープレートを削減します。
attachments:
unknown_key: warn
definitions:
commit:
mime: text/git.hash
mode: append
checkin:
mime: text/p4.changelist
mode: append
meta:
mime: application/json
mode: replace
note:
mime: text/plain
mode: append
| プロパティ |
値 |
説明 |
unknown_key |
allow, warn, reject |
未定義の添付キーに対する動作 |
definitions.<key>.mime |
MIMEタイプ文字列 |
このキーのデフォルトのMIMEタイプ |
definitions.<key>.mode |
append, replace |
デフォルトのモード(appendは既存のものを保持、replaceは上書き) |
組み込みのデフォルト:
| キー |
MIMEタイプ |
モード |
使用例 |
commit |
text/git.hash |
append |
Gitコミットハッシュ |
checkin |
text/p4.changelist |
append |
Perforceチェンジリスト |
changelist |
text/plain |
append |
変更されたファイル |
meta |
application/json |
replace |
構造化されたメタデータ |
note |
text/plain |
append |
一般的なメモ |
log |
text/plain |
append |
ログ出力 |
error |
text/plain |
append |
エラーメッセージ |
output |
text/plain |
append |
コマンド/ツールの出力 |
diff |
text/x-diff |
append |
パッチと差分 |
plan |
text/markdown |
replace |
計画と仕様 |
result |
application/json |
replace |
構造化された結果 |
context |
text/plain |
replace |
現在のコンテキスト/状態 |
使用方法:
# MIMEとモードは設定から自動入力されます。
attach(task="123", name="commit", content="abc1234")
# → mime=text/git.hash, mode=append
attach(task="123", name="meta", content='{"v":1}')
# → mime=application/json, mode=replace (既存のmetaを上書き)
# 明示的な値はデフォルトを上書きします。
attach(task="123", name="commit", mime="text/plain", content="override")
環境変数:
TASK_GRAPH_CONFIG_PATH:設定ファイルのパス(.task-graph/config.yamlより優先)
TASK_GRAPH_DB_PATH:データベースファイルのパス(設定ファイルがない場合のフォールバック)
TASK_GRAPH_MEDIA_DIR:ファイル添付用のメディアディレクトリ(設定ファイルがない場合のフォールバック)
TASK_GRAPH_LOG_DIR:ログディレクトリのパス(設定ファイルがない場合のフォールバック)
MCPツール
ワーカー管理
| ツール |
説明 |
connect(worker_id?, tags?, workflow?, force?, db_path?, media_dir?, log_dir?, config_path?, overlays?: str[]) |
ワーカーを登録します。オプションのworkflowで名前付きのワークフロー(単独、スワーム、リレー、階層的)を選択できます。worker_idとアクティブなpathsを返します。 |
disconnect(worker_id: worker_str, final_status?: status_str = "pending") |
ワーカーを登録解除し、すべてのクレーム/ロックを解放します。 |
list_agents(tags?: str[], file?: filename, task?: task_str, depth?: int, stale_timeout?: int) |
フィルター付きで接続されているワーカーをリストします。 |
cleanup_stale(timeout?: int, final_status?: status_str) |
期限切れのワーカーを削除し、それらのクレームを解放します。 |
add_overlay(worker_id: str, overlay: str) |
接続されているワーカーに動的なワークフローオーバーレイを追加します。 |
remove_overlay(worker_id: str, overlay: str) |
接続されているワーカーからワークフローオーバーレイを削除します。 |
タスクCRUD
| ツール |
説明 |
create(description: str, id?: task_str, parent?: task_str, priority?: int = 5, points?: int, time_estimate_ms?: int, tags?: str[]) |
タスクを作成します。優先度は0-10(数値が高いほど重要)。 |
create_tree(tree, parent?, child_type?, sibling_type?) |
ネストされたタスクツリーを作成します。child_type(デフォルト: "contains")は親から子への依存関係、sibling_typeは兄弟間の依存関係です。 |
get(task: task_str) |
IDでタスクを取得し、添付メタデータとカウントを含みます。 |
list_tasks(status?: status_str[], ready?: bool, blocked?: bool, claimed?: bool, owner?: worker_str, parent?: task_str, recursive?: bool, agent?: worker_str, tags_any?: str[], tags_all?: str[], sort_by?: str, sort_order?: str, limit?: int, offset?: int) |
フィルター付きでタスクをクエリします。ready=trueで請求可能なタスクを取得します。 |
update(worker_id: worker_str, task: task_str, status?: status_str, phase?: str, assignee?: worker_str, title?: str, description?: str, priority?: int, points?: int, tags?: str[], needed_tags?: str[], wanted_tags?: str[], time_estimate_ms?: int, reason?: str, force?: bool, attachments?: object[]) |
タスクを更新します。ステータス/フェーズの変更は自動的に所有権を管理し、プロンプトをトリガーします。attachmentsを含めることで、コミット/チェンジリストを記録できます。 |
delete(worker_id: worker_str, task: task_str, cascade?: bool, reason?: str, obliterate?: bool, force?: bool) |
タスクを削除します。デフォルトではソフトデリート、obliterate=trueで完全削除。 |
scan(task: task_str, before?: int, after?: int, above?: int, below?: int) |
複数の方向でタスクグラフをスキャンします。深さ: 0=なし、N=レベル数、-1=すべて。 |
search(query: str, limit?: int = 20, include_attachments?: bool, status_filter?: status_str) |
FTS5検索。フレーズ、接頭辞*、AND/OR/NOT、title:wordをサポートします。 |
rename(worker_id: worker_str, task: task_str, new_id: task_str) |
すべての参照テーブルでタスクIDをアトミックにリネームします。 |
タスククレーム
| ツール |
説明 |
claim(worker_id: worker_str, task: task_str, force?: bool) |
タスクを請求します。依存関係が満たされていない、制限に達している、またはタグが不足している場合には失敗します。forceを使用して強制的に取得できます。 |
注意:update(status="pending")で解放し、update(status="completed")で完了します。ステータスの変更は自動的に所有権を管理します。
依存関係
| ツール |
説明 |
link(from: task_str|task_str[], to: task_str|task_str[], type?: dep_str = "blocks") |
依存関係を作成します。タイプ: blocks, follows, contains, duplicate, see-also, relates-to。 |
unlink(from: task_str|"*", to: task_str|"*", type?: dep_str) |
依存関係を削除します。*をワイルドカードとして使用できます。 |
relink(prev_from: task_str[], prev_to: task_str[], from: task_str[], to: task_str[], type?: dep_str = "contains") |
依存関係をアトミックに移動します(解除してから作成)。 |
追跡
| ツール |
説明 |
thinking(worker_id: worker_str, thought: str, tasks?: task_str[]) |
ライブステータスをブロードキャストします。他のワーカーに可視です。ハートビートを更新します。 |
task_history(task: task_str, states?: status_str[]) |
時間追跡付きでステータス遷移履歴を取得します。 |
project_history(from?: datetime_str, to?: datetime_str, states?: status_str[], limit?: int = 100) |
日付範囲フィルター付きでプロジェクト全体の履歴を取得します。 |
log_metrics(worker_id: worker_str, task: task_str, cost_usd?: float, values?: int[8]) |
メトリクスをログに記録します(集計)。 |
get_metrics(task: task_str|task_str[]) |
タスクのメトリクスを取得します。 |
give_feedback(message: str, category?: str, sentiment?: str, agent_id?: str, tool_name?: str, task_id?: str) |
ツール、ワークフロー、またはUXに関するフィードバックを記録します。デフォルトで有効、サイズ制限を超える書き込みは拒否されます(デフォルト: 1MB)。 |
list_feedback() |
フィードバックのマークダウンファイルを読み取ります。 |
ファイル調整
| ツール |
説明 |
mark_file(worker_id: worker_str, file: filename|filename[], task?: task_str, reason?: str) |
ファイルをマークして意図を信号します。アドバイザリ、非ブロッキング。 |
unmark_file(worker_id: worker_str, file?: filename|filename[]|"*", task?: task_str, reason?: str) |
マークを削除します。*ですべてを指定できます。 |
list_marks(files?: filename[], worker_id?: worker_str, task?: task_str) |
現在のファイルマークを取得します。 |
mark_updates(worker_id: worker_str) |
前回の呼び出し以降のマークの変更をポーリングします。 |
添付ファイル
| ツール |
説明 |
attach(task: task_str|task_str[], name: str, content?: str, mime?: mime_str, file?: filename, store_as_file?: bool, mode?: str) |
添付ファイルを追加します。fileで参照、store_as_fileでメディアストレージを使用できます。 |
attachments(task: task_str, name?: str, mime?: mime_str) |
添付ファイルのメタデータを取得します。名前にグロブパターンをサポートします。 |
detach(worker_id: worker_str, task: task_str, name: str, delete_file?: bool) |
名前で添付ファイルを削除します。 |
高度な機能
| ツール |
説明 |
check_gates(task: task_str) |
ステータス/フェーズ遷移前にゲート要件をチェックします。パス/警告/失敗ステータス付きの満たされていないゲートを返します。 |
get_advisory(topic?: str, task?: task_str, worker_id?: worker_str) |
ガバナンスアドバイザリガイダンスを取得します。トピックがない場合はすべてのトピックをリストし、トピックがある場合はテンプレート展開付きの完全なアドバイザリコンテンツを返します。 |
query(sql: str, params?: str[], limit?: int = 100, format?: str) |
読み取り専用のSQLを実行します。SELECTのみ。許可が必要です。 |
get_schema(table?: str, include_sql?: bool) |
データベーススキーマを取得します。テーブル名、列、型、および外部キーを返します。 |
get_prompts(status?: str, phase?: str, task?: task_str, worker_id?: worker_str) |
ワークフロープロンプトを取得します。パラメータがない場合はトリガーをリストし、ステータス/フェーズがある場合はその遷移の展開されたプロンプトを返します。 |
list_workflows() |
利用可能なワークフロー設定(単独、スワーム、リレー、階層的など)をリストします。 |
list_skills() |
説明付きで利用可能なバンドルされたスキルをリストします。 |
get_skill(name: str) |
バンドルされたスキルの完全なコンテンツを取得します。 |
MCPリソース
| URI |
説明 |
query://tasks/all |
依存関係付きの完全なタスクグラフ |
query://tasks/ready |
請求可能なタスク |
query://tasks/blocked |
依存関係によってブロックされているタスク |
query://tasks/claimed |
すべての請求されたタスク |
query://tasks/agent/{id} |
エージェントが所有するタスク |
query://tasks/tree/{id} |
すべての子孫を含むタスク |
query://files/marks |
すべてのファイルマーク |
query://agents/all |
登録されたエージェント |
query://stats/summary |
集計統計 |
config://current |
すべての設定を1つのレスポンスで取得 |
config://states |
タスク状態定義 |
config://phases |
フェーズ定義 |
config://dependencies |
依存関係タイプ定義 |
config://tags |
タグ定義 |
docs://index |
利用可能なすべてのドキュメントファイルをリスト |
docs://search/{query} |
ドキュメントを対象とした全文検索 |
docs://skills/list |
利用可能なスキルをリスト |
docs://skills/{name} |
特定のスキルのコンテンツを取得 |
docs://workflows/list |
利用可能なワークフローをリスト |
docs://workflows/{name} |
ワークフローの詳細を取得 |
docs://overlays/list |
利用可能なオーバーレイをリスト |
docs://overlays/{name} |
オーバーレイの詳細を取得 |
docs://{path} |
特定のドキュメントファイルのコンテンツ |
タスクツリー構造
create_treeを使用して階層的なタスクを作成します。
{
"tree": {
"title": "Implement auth",
"children": [
{ "title": "Design schema" },
{ "title": "Write migrations" },
{ "title": "Implement endpoints", "children": [
{ "title": "Login endpoint" },
{ "title": "Logout endpoint" },
{ "title": "Refresh endpoint" }
]},
{ "title": "Write tests" }
]
},
"sibling_type": "follows"
}
ツリーノードフィールド
| フィールド |
説明 |
title |
タスクのタイトル(新しいタスクには必須) |
description |
タスクの説明 |
id |
カスタムタスクID(省略するとUUID7が生成される) |
ref |
IDで既存のタスクを参照(設定された場合、他のフィールドは無視される) |
priority |
優先度0-10(デフォルト5) |
points |
ストーリーポイント/複雑度推定 |
time_estimate_ms |
推定所要時間(ミリ秒) |
tags |
タスクの分類タグ |
needed_tags |
エージェントが請求するにはすべてのタグを持っている必要があります(AND) |
wanted_tags |
エージェントが請求するには少なくとも1つのタグを持っている必要があります(OR) |
children |
ネストされた子ノード |
トップレベルパラメータ
| パラメータ |
デフォルト |
説明 |
tree |
必須 |
タスクツリーのルートノード |
parent |
null |
ツリーのルートを既存の親タスクにアタッチする |
child_type |
"contains" |
親から子への依存関係のタイプ |
sibling_type |
null |
兄弟間の依存関係のタイプ(順次の場合は"follows"、並列の場合はnull) |
既存のタスクを参照する
refを使用して既存のタスクをツリー構造に統合します。
{
"tree": {
"title": "Sprint 5",
"children": [
{ "title": "New feature" },
{ "ref": "existing-task-id" },
{ "title": "Another task" }
]
},
"sibling_type": "follows"
}
タグベースのアフィニティ
ワーカーは接続時にタグを介して機能を宣言します。タスクは特定のタグを要求することで、どのワーカーがタスクを請求できるかを制御できます。
タグカテゴリの例:
- モデル機能:
image-in、audio-out、video-in、code、bulk
- アクセスレベル:
prod-access、admin、external
- 専門分野:
rust、python、frontend、database
注意: コーディネーター/レビューアー/デプロイヤーなどのロールは、フェーズを使用してより適切に表現できます。
タスク要件:
needed_tags (AND):エージェントはすべてのタグを持っている必要があります。
wanted_tags (OR):エージェントは少なくとも1つのタグを持っている必要があります。
{
"title": "Analyze screenshot and generate code",
"needed_tags": ["image-in", "code"],
"wanted_tags": ["bulk"]
}
{
"title": "Deploy to production",
"phase": "deploy",
"needed_tags": ["prod-access"],
"wanted_tags": ["aws", "gcp"]
}
ワークフローとフェーズ
フェーズ
タスクはphaseを持つことで、実行中の作業のタイプを分類できます。
{
"title": "Add authentication",
"phase": "implement"
}
組み込みのフェーズ:explore、implement、review、test、security、deploy、triage、diagnose、design、plan、doc、integrate、monitor、optimize
フェーズによって可能になること:
- 遷移プロンプト — フェーズに入る/出るときの自動ガイダンス
- ゲート — フェーズ遷移前に満たす必要がある要件
- ロールベースのルーティング — リレーワークフローでは、専門家が特定のフェーズを担当
名前付きワークフロー
事前構築されたワークフロートポロジーは、さまざまな調整パターンに最適化されています。
| ワークフロー |
説明 |
最適なシチュエーション |
solo |
単一のエージェント、完全な自律性 |
単純なタスク、プロトタイピング |
swarm |
並列の一般的なエージェント、プルベース |
高スループット、独立したタスク |
relay |
順次の専門家、ハンドオフ |
複雑なタスク、ドメインの専門知識 |
hierarchical |
リード/ワーカーの委任 |
大規模なプロジェクト、チームの調整 |
push |
プッシュベースのタスク配布トポロジー |
集中的な割り当て、負荷分散 |
kanban |
作業中の制限付きのボードスタイルのタスク管理 |
継続的なフロー、視覚的な追跡 |
sprint |
期限付きの反復計画 |
スクラムチーム、固定のサイクル |
接続時にワークフローを選択します。
connect(worker_id="agent-1", workflow="swarm")
各ワークフローは、カスタマイズされたプロンプトと調整ガイダンスを提供します。詳細なパターンについては、WORKFLOW_TOPOLOGIES.mdを参照してください。
遷移プロンプト
エージェントはステータスまたはフェーズが変更されると自動的なガイダンスを受け取ります。
states:
working:
prompts:
enter: |
あなたは現在このタスクに取り組んでいます。
{{current_status}}から{{valid_exits}}に遷移できます。
exit: |
離れる前に:
- [ ] 結果を添付する
- [ ] コストを記録する
プロンプトはテンプレート変数をサポートします:{{current_status}}、{{valid_exits}}、{{current_phase}}、{{valid_phases}}
ゲート
ゲートは、ステータスまたはフェーズ遷移前に満たす必要がある要件です。
gates:
status:working:
- type: gate/tests
enforcement: warn
description: "テストを通過する必要があります"
ゲートを満たすには、証拠を添付します。
attach(task="123", type="gate/tests", content="All tests passing")
エンフォースメントレベル:allow(アドバイザリ)、warn(force=trueでない限りブロック)、reject(ハードブロック)
ファイル調整
エージェントはアドバイザリマークと変更追跡を使用してファイル編集を調整できます。
Worker A: connect() -> "worker-a"
Worker A: mark_file("worker-a", "src/main.rs", "refactoring")
Worker B: connect() -> "worker-b"
Worker B: mark_updates("worker-b") -> worker-aのマークを確認
Worker A: unmark_file("worker-a", "src/main.rs", "ready for review")
Worker B: mark_updates("worker-b") -> 理由付きでマークの削除を確認
Worker B: mark_file("worker-b", "src/main.rs", "adding tests")
アーキテクチャ
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Agent A │ │ Agent B │ │ Agent C │
│ (Claude) │ │ (GPT-4) │ │ (Worker) │
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘
│ stdio │ stdio │ stdio
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ task-graph │ │ task-graph │ │ task-graph │
│ MCP │ │ MCP │ │ MCP │
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘
│ │ │
└───────────────────┼───────────────────┘
▼
┌─────────────────┐
│ SQLite + WAL │
│ .task-graph/ │
│ tasks.db │
└─────────────────┘
- トランスポート:Stdio — 各ワーカーは独自のサーバープロセスを起動します。
- データベース:WALモードのSQLiteを使用して、プロセス間での同時アクセスを可能にします。
- デプロイメント:単一のバイナリ、外部依存関係なし、オフラインでも動作します。
他のソリューションとの比較
|
Task Graph |
線形タスクリスト |
カスタムデータベース |
| ワークフローフェーズ |
✓ プロンプト付きの組み込み |
✗ 手動追跡 |
自作 |
| 品質ゲート |
✓ 設定可能なエンフォースメント |
✗ |
自作 |
| マルチエージェント安全 |
✓ アトミッククレーム、ファイルロック |
✗ 競合状態 |
場合による、自作 |
| 依存関係追跡 |
✓ 循環検出付きのDAG |
✗ 手動の順序付け |
自作 |
| MCPネイティブ |
✓ 一流 |
✗ ラッパーが必要 |
✗ ラッパーが必要 |
| トークン会計 |
✓ 組み込み |
✗ |
自作 |
| セットアップ必要 |
なし |
なし |
データベースサーバー |
ドキュメント一覧
| ドキュメント |
説明 |
| CONFIGURATION.md |
完全な設定リファレンス(config.yaml、ワークフロー、プロンプト、ゲート、タグ) |
| SCHEMA.md |
データベーススキーマと状態マシンのドキュメント |
| DESIGN.md |
アーキテクチャと設計決定 |
| WORKFLOW_TOPOLOGIES.md |
マルチエージェントワークフローパターン(単独、スワーム、リレー、階層的) |
| EXPORT_IMPORT.md |
データのエクスポートとインポート機能 |
| PROCESSES.md |
リリースプロセス、変更履歴の管理 |
| GATES.md |
ワークフローゲートの条件とエンフォースメント |
| METRICS.md |
実験メトリクスの定義とSQLの例 |
📄 ライセンス
Apache 2.0
構造化されたワークフローと信頼性の高い調整が必要なAIエージェント向けに構築されています。