Temporal.io + Claude Agent SDK によるマルチエージェント ワークフローエンジン。
1つのプロンプトから7種の専門エージェントがパイプライン処理し、5段階スコアリング付きの最終回答を生成します。
Prompt
└─ Planner ──► Task Designer
│
▼
┌───────────────┐
│ 並列実行 │
│ Executor₁→Rev₁ │
│ Executor₂→Rev₂ │
│ Executor₃→Rev₃ │
└───────┬───────┘
▼
Integrator ──► Integration Reviewer ──► Final Response
最もシンプルな方法。Temporal, Worker, Web UI を一発で起動します。
コンテナは Claude Code CLI の OAuth セッションをホストから引き継ぎます。 まだ認証していない場合は、ローカルで一度実行してください:
# Claude Code CLI をインストール (まだの場合)
npm install -g @anthropic-ai/claude-code
# 認証 (ブラウザが開きます)
claude auth login
macOS の場合: Claude Code v2.1+ は認証情報を macOS キーチェーンに保存します。 Docker コンテナはキーチェーンにアクセスできないため、起動スクリプトが自動的にキーチェーンからファイルに同期します。
git clone https://github.com/skmtkytr/agentic.git
cd agentic
npm install
# キーチェーン同期 + Docker 起動を一発で
npm run docker:up
または手動で:
# キーチェーンから認証情報を同期 (macOS)
bash scripts/sync-credentials.sh
# Docker 起動
docker compose up --build
| サービス | URL | 説明 |
|---|---|---|
| Web UI | http://localhost:3001 | メインのダッシュボード |
| Temporal UI | http://localhost:8080 | ワークフロー管理コンソール |
docker compose down
デフォルトでは ~/.config/claude をマウントします。別の場所にある場合:
CLAUDE_CONFIG_DIR=/path/to/.claude docker compose up --build
認証エラー (OAuth token has expired)
Claude Code v2.1+ は認証情報を macOS キーチェーンに保存するため、Docker コンテナからは直接参照できません。
# 1. キーチェーンから認証情報を再同期
bash scripts/sync-credentials.sh
# 2. コンテナを再起動
docker compose restart worker server
トークンが完全に失効している場合:
claude auth login
bash scripts/sync-credentials.sh
docker compose restart worker server
Temporal 接続エラー
Temporal の起動に数秒かかります。Worker/Server が先に起動してエラーになる場合は少し待って:
docker compose restart worker server
Docker を使わず、各コンポーネントを個別に起動する方法。
brew install temporal or 公式ドキュメント)git clone https://github.com/skmtkytr/agentic.git
cd agentic
npm install
cd web && npm install && cd ..
# ターミナル 1: Temporal Server
temporal server start-dev
# ターミナル 2: Worker
npm run worker
# ターミナル 3: API Server + Web UI
npm run server
# → http://localhost:3001
# ターミナル 4 (オプション): Vite dev server
npm run web:dev
# → http://localhost:5173 (API は 3001 にプロキシ)
npm start "TypeScriptでRESTful APIを設計してください"
┌─────────────────────────────────────────────────┐
│ Web UI │
│ (Svelte + Vite) │
│ http://localhost:3001 │
└─────────────┬───────────────────────────────────┘
│ SSE / REST API
┌─────────────▼───────────────────────────────────┐
│ Express Server │
│ (src/server/app.ts) │
│ POST /api/run GET /api/status/:id (SSE) │
│ GET /api/workflows GET /api/workflow/:id │
│ GET /api/result/:id GET /api/local-models │
└─────────────┬───────────────────────────────────┘
│ Temporal Client
┌─────────────▼───────────────────────────────────┐
│ Temporal Server │
│ (Workflow Orchestration) │
│ Retry, Timeout, Signal, Query, History │
└─────────────┬───────────────────────────────────┘
│ Activity Execution
┌─────────────▼───────────────────────────────────┐
│ Worker │
│ (src/worker.ts) │
│ │
│ ┌──────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Planner │ │Task Designer │ │ Executor×N │ │
│ │ │ │ │ │ → Reviewer×N │ │
│ └──────────┘ └──────────────┘ └──────────────┘ │
│ ┌──────────────────┐ ┌────────────────────────┐ │
│ │ Integrator │ │ Integration Reviewer │ │
│ └──────────────────┘ └────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────┐ │
│ │ LLM Provider Registry │ │
│ │ Claude Agent SDK │ Anthropic API │ Local │ │
│ └─────────────────────────────────────────────┘ │
└───────────────────────────────────────────────────┘
| エージェント | 役割 | 入力 | 出力 |
|---|---|---|---|
| Planner | プロンプトを DAG タスクに分解 | prompt | TaskPlan (tasks + planSummary + userIntent + qualityGuidelines) |
| Task Designer | DAG 妥当性検証 + タスクごとの実行ガイダンス設計 | plan + originalPrompt | TaskDesignResult (valid/issues/designedPlan with purpose, successCriteria, outputFormat) |
| Executor | 個別タスクを実行 (ツール使用可) | task + context + allowedTools | result + toolUsage |
| Reviewer | タスク結果の品質レビュー | result + toolUsage | passed/notes/revisedResult |
| Integrator | レビュー済みタスクを統合 | reviewedTasks + taskResultFiles | integratedResponse |
| Integration Reviewer | 最終 QA (5段階スコアリング) | integratedResponse + toolEvidence | passed/score/strengths/improvements/revisedResponse |
UI から Executor に許可するツールを選択できます:
| ツール | 説明 |
|---|---|
| Read | ファイル読み取り |
| Write | ファイル書き込み |
| Edit | ファイル編集 |
| Bash | シェルコマンド実行 |
| Glob | ファイルパターン検索 |
| Grep | ファイル内容検索 |
| WebFetch | URL からデータ取得 |
| WebSearch | Web 検索 |
| NotebookEdit | Jupyter ノートブック編集 |
| Task | サブタスク委譲 |
| ToolSearch | 利用可能ツール検索 |
npm test
209 テスト:
| メソッド | パス | 説明 |
|---|---|---|
POST |
/api/run |
ワークフロー起動 (prompt, model, provider, agentConfig, allowedTools, retry 設定) |
GET |
/api/workflows |
履歴一覧 (直近50件、ステータス補完付き) |
GET |
/api/workflow/:id |
ワークフロー詳細 (設定、状態、結果、失敗理由) |
GET |
/api/status/:id |
SSE リアルタイムストリーミング |
GET |
/api/result/:id |
最終結果取得 |
GET |
/api/local-models |
ローカル LLM のモデル一覧 |
| 変数 | デフォルト | 説明 |
|---|---|---|
TEMPORAL_ADDRESS |
localhost:7233 |
Temporal Server のアドレス |
TEMPORAL_NAMESPACE |
default |
Temporal の namespace |
CLAUDE_MODEL |
claude-opus-4-6 |
デフォルトモデル |
PORT |
3001 |
Express サーバーのポート |
CLAUDE_CONFIG_DIR |
~/.config/claude |
Claude Code 認証ディレクトリ (Docker 用) |
ARTIFACT_DIR |
/tmp/agentic |
アーティファクト保存先 (Docker: /data/artifacts) |
DEFAULT_AGENT_CONFIG |
— | エージェント別デフォルト設定 (JSON文字列) |
LOCAL_LLM_BASE_URL |
— | ローカル LLM の API エンドポイント |
LOCAL_LLM_MODEL |
default |
ローカル LLM のモデル名 |
LOCAL_LLM_PROVIDER_NAME |
local-llm |
ローカル LLM のプロバイダー名 |
LOCAL_LLM_API_KEY |
local-llm |
ローカル LLM の API キー |
LOCAL_LLM_FALLBACK_MODEL |
— | ローカル LLM のフォールバックモデル |
ANTHROPIC_API_KEY |
— | Anthropic API 直接利用時のキー |
ANTHROPIC_API_KEYは Claude Agent SDK 使用時は不要です。OAuth セッションを使用します。
MIT