Dev Agent OS は、ローカル環境で動作する汎用 AI 開発エージェント Web アプリケーションです。 目標は、Google Antigravity 級の AI IDE / AI Agent OS 体験をローカル完結で再現することです。 単なるチャットUIではなく、AIがWorkspaceを解析し、MissionからTaskを作り、コードを修正し、実行し、失敗理由を分析する「自律型の開発ループ」を可視化・追跡できるシステムを目指しています。
- OS: Windows
- Backend: Python 3.11+ (FastAPI, SQLModel, SQLite)
- Frontend: React + TypeScript + Vite (Vanilla CSS, Monaco Editor, Zustand)
- AI Models: Ollama (
qwen2.5-coder:latest,DeepSeek-R1:latest,Qwen3-VL:latest)
Phase 1 では、システムの土台となるデータモデルと基本UI(Workspaceの閲覧・編集)を構築しました。
backend/main.py: FastAPIのメインエントリポイントbackend/core/config.py: 設定管理やデータベースのパス定義backend/core/database.py: SQLiteデータベースとSQLModelの接続設定backend/models/domain.py: 永続化する主要データ構造 (Workspace, Mission, Task, RunProfile, Patch, Artifact)backend/api/workspace.py: ファイルツリー取得、ファイル読み書きAPIbackend/api/mission.py: Mission のCRUD操作APIbackend/api/task.py: Task のCRUD操作APIbackend/api/run.py: RunProfile のCRUD操作API
frontend/src/main.tsx,App.tsx: アプリケーションのエントリポイントとルーティング (React Router)frontend/src/api/client.ts: バックエンドと通信するための Axios クライアントfrontend/src/store/workspaceStore.ts: Zustand を用いた Workspace のグローバル状態管理 (アクティブなWorkspace, 選択中ファイル)frontend/src/components/layout/Layout.tsx,Sidebar.tsx: ダークモード基調の全体レイアウトとナビゲーションfrontend/src/components/workspace/WorkspaceView.tsx: Workspace 画面のコンテナWorkspaceSelector.tsx: Workspaceの追加・選択UIFileTree.tsx: 再帰的なディレクトリ構造の描画CodeEditor.tsx: Monaco Editor を用いたコード閲覧・編集
Phase 2 では、AIエージェントの基本接続と各単体ステップ(Planner, Coder, Runner, Verify)の動作・入出力構造を実装しました。
backend/services/llm.py: Ollama APIとの抽象化インターフェース (qwen2.5-coder,DeepSeek-R1,Qwen3-VL対応)backend/services/agents/planner.py: Mission の目標を複数の Task へ分解するエージェント (deepseek-r1:latest)backend/services/agents/coder.py: Task 指示から対象ファイルの修正 Patch を生成するエージェント (qwen2.5-coder:latest)backend/services/agents/verify.py: 最新のログと Artifact から実行の成功/失敗を判定・意思決定するエージェント (deepseek-r1:latest)backend/services/runner.py: サブプロセス実行と結果出力(stdout/stderr・run.json 等)を Artifact として保持する基盤
frontend/src/components/mission/DiffViewer.tsx: 生成された Patch のコード差分を Monaco Diff Editor 上で一覧比較・レビューするためのコンポーネント
Phase 3 では、Coordinator(自動進行ループ制御層) を構築し、「Planner → Coder → 自動適用 → Runner/Verify」までの一連のループを自動進行させる MVP 状態を確立しました。 Mission ごとの自動進行状態をDBで追跡し、リスク評価に基づく自動適用(Low Risk時)などをサポートします。
backend/services/coordinator.py: Mission 単位で Task の進行状況を管理する自律ループエンジン (_step_planning,_step_coding,_step_running,_step_verifyingを内包)backend/models/loop.py:LoopState(アイドル、計画中、コーディング中など) と、現在の試行回数、一時停止理由を管理するDBモデルbackend/api/mission.py:/start_loopエンドポイントでバックグラウンドタスクとしてCoordinatorを起動backend/api/loop.py: リアルタイムポーリング用の現在の LoopState 取得API
frontend/src/components/mission/MissionList.tsx: 作成されたMissionを一覧表示・新規作成するUIfrontend/src/components/mission/MissionDetail.tsx: 選択したMissionの詳細を表示し、Coordinatorループの起動、現在のフェーズ確認(ポーリング)、並びにタスク・エラー・修正内容(DiffViewer)を表示する統合監視UI
■ Phase 3 時点の既知の制限事項
- Runner は現在モック寄りで、本格的な RunProfile 選択は未強化です。
- Patch 適用は現時点ではファイルごとの Full Replace が中心です。
review_required時の手動承認UIは最小構成です(まだ Reject / Accept ボタンとその後段処理はありません)。- Timeout / ワークスペース外変更要求は暫定的なガードのみです。
- 複数 Mission の同時並行実行は未対応です。
Phase 4 では、ブラウザ検証(UI Analysis)自動化と Playwright 連携 に取り組みました。文字ベースのログ解析だけでなく、画面のキャプチャを用いた視覚的検証を Verify ループに組み込みました。
backend/services/browser.py: Playwright を使って指定URLのスクリーンショットを取得するスクリプトbackend/services/agents/analyst.py: 取得した画像をQwen3-VL:latestに渡し、UIエラーを検出する Vision Agentbackend/api/artifact.py: Run ごとに保存された Artifact(画像やログ)をフロントエンドに提供する API
frontend/src/components/mission/RunArtifactViewer.tsx: タスクの Run 履歴ごとに生成されたrun.json、stdout.log、screenshot.png、screenshot.analysis.jsonなどを1クリックで切り替えてプレビューするUI。
■ Phase 4 完了時点(MVP)の既知の制限事項
- Runner: 本格的な RunProfile 最適化は未完了であり、固定コマンドの実行が中心です。
- Patch 適用: 差分適用ではなく、ファイルごとの Full Replace が中心となっています。
- レビュー機能:
review_required発生時の手動承認フローUIは最小構成であり、Accept/Reject ボタンによる再開処理などは未実装です。 - ガード制約: Timeout や ワークスペース外変更要求 は暫定的なチェック処理のみ入っています。
- 並行処理: 複数 Mission の同時並行実行は未対応です。
- Vision解析: 初期版であり、座標ベースのDOM修正提案や精密なピクセル単位UI比較(Visual Regression Test)は未対応です。
ui_issueとartifact_issueの概念は等価として扱われます。 - Playwright:
test_urlなどの特定指定が前提であり、汎用ブラウザ自動探索機能などは未対応です。
Phase 5 では、固定 Workspace 構造から 任意フォルダベースの Workspace Manager へ移行しました。
backend/core/path_utils.py: 新規 —is_safe_workspace_root()(危険パスガード) とresolve_workspace_path()(パストラバーサル防止)backend/models/domain.py:path→root_pathにリネーム、is_trusted,allow_write,allow_run,indexing_status,detected_stack,repo_type追加backend/api/workspace.py: CRUD 操作の完全実装、セキュアパス検証、初回スキャン
WorkspaceSelector.tsx: フォルダ登録・削除・フラグ管理UI、repo_type/detected_stackバッジ表示
Phase 6 では、Research Agent / Context Manager / Search 機能 を導入しました。
backend/services/search.py: ファイル名・コンテンツ・シンボル定義の3種検索エンジンbackend/api/search.py:GET /workspace/{id}/search検索APIbackend/services/context.py: プロジェクト設定・関連ファイル・ツリー構造を収集する Context Managerbackend/services/agents/research.py: LLM を用いたコードベース分析・実装ガイド生成エージェントbackend/services/coordinator.py:planning → researching → coding → running → verifyingのループに拡張
frontend/src/components/workspace/SearchPanel.tsx: コンテンツ/ファイル/シンボル検索UIfrontend/src/components/workspace/WorkspaceView.tsx: Explorer / Search タブ切り替えfrontend/src/components/mission/MissionDetail.tsx: ステップパイプライン可視化
Phase 7 では、IDE 的な Runner / Terminal 実行基盤 を構築しました。
backend/services/process_manager.py: 長時間プロセスのライフサイクル管理(開始・停止・再起動)、stdout/stderr ストリーミング、URL/ポート検出。backend/api/process.py,backend/api/run.py:allow_runガード検証を含むプロセス制御APIの追加。
frontend/src/components/run/RunPanel.tsx: 統合ターミナルUI。コマンドのCRUD、プロセス状態の監視、ライブログの閲覧機能。
Phase 8 では、Patch エンジンと Human-in-the-Loop (レビュー) の強化 を行いました。
backend/services/coordinator.py: パッチ適用前の厳密なリスク評価(危険ファイルアクセスガード、パストラバーサル防止、変更量チェック、失敗ループ検出)。backend/api/loop.py:/resolveエンドポイント拡張。accept,reject,modifyに加え、retry_with_note(メモ付き再試行) とaccept_partial(部分適用) を実装。
frontend/src/components/mission/DiffViewer.tsx: レビューUIを全面刷新。ファイルごとの個別選択適用、再試行時の指示メモ入力、追加/削除行数の統計表示。
Phase 9 では、Playwright を用いた UI 自動操作と Browser Action 基盤 を構築しました。
backend/services/browser_action.py:goto,click,fill, アサーション等を処理するヘッドレスブラウザ操作エンジン。backend/api/browser.py: 実行結果やコンソールエラー、最終スクリーンショットを収集し、Qwen3-VLによる Vision 解析を行う統合API。
frontend/src/components/browser/BrowserPanel.tsx: UI上でブラウザアクション手順を組み立て、実行・結果確認を行える専用パネル。
Phase 10 では、Project Memory (継続利用基盤) を導入し、エージェントが Workspace の文脈を長期記憶できるようにしました。
backend/models/domain.py:ProjectMemoryモデルを追加(プロジェクト概要、コーディング規約、禁止領域、最近の変更等)。backend/services/agents/planner.py,backend/services/agents/research.py: メモリをデータベースから取得し、LLM へのシステムプロンプトにコンテキストとして注入。
frontend/src/components/workspace/SettingsView.tsx: Workspace ごとの Project Memory を閲覧・編集する設定画面。
- Windows
- Python 3.11+
- Node.js / npm
- Ollama
- Playwright
事前に以下のモデルを Pull しておいてください。
qwen2.5-coder:latest(Coder / Research 用)deepseek-r1:latest(Planner / Verifier 用)qwen3-vl:latest(Artifact Analyst 視覚解析用)
cd backend
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
# Playwright 用ブラウザのインストール
pip install playwright
playwright install chromium
# サーバー起動 (Hot Reload)
uvicorn main:app --reload
# -> http://127.0.0.1:8000 で起動cd frontend
npm install
# 開発サーバー起動
npm run dev
# -> http://localhost:5173 で起動- 任意フォルダの Workspace 管理: 任意のフォルダを Workspace として登録・安全に操作。危険パスへのアクセスを自動ブロック。Project Memory でプロジェクトの文脈を永続化。
- コードベース検索と高度な調査: Research Agent がファイル名、コンテンツ grep、シンボル定義検索を駆使して自律的にコードを読み解き、修正計画を策定。
- 半自動コード補修と精密パッチ: Mission を立ち上げ、AI が修正・実行・成否判定を循環。SEARCH/REPLACE ブロックによる安全な部分パッチ適用。
- Human in the Loop レビュー:
リスクの高いパッチを自動停止。ファイル単位の部分適用 (
accept_partial) や、人間からのメモ付き再試行 (retry_with_note) に対応。 - IDE的なターミナル実行: 開発サーバー等の長時間プロセスを管理し、ライブログ(stdout/stderr)と状態をターミナルUIにストリーミング表示。
- 視覚的解析を通じた UI 自動テスト: Playwrightを用いたブラウザ操作手順エディタで自動テストを定義。Qwen3-VL が UI の崩れを自動判定し、結果を Artifact として保存。
このプロジェクトを GitHub 等に公開する際、セキュリティ保護とリポジトリの清潔さを保つため、一部のファイルやディレクトリは意図的に公開対象から除外(.gitignore で設定)されています。
【公開対象外(Pushされない)ファイル・フォルダ】
- 環境変数・APIキー・シークレット (
.envなど)- APIキーやパスワード情報が含まれる
.envファイル等は除外されています。(誤って公開すると不正利用のリスクがあるため、意図的に Git の管理外としています)。 - 代わりに、公開用には空の
.env.exampleなどを別途作成して提供することをおすすめします。
- APIキーやパスワード情報が含まれる
- データベースファイル (
*.db,*.sqlite,backend/dev.dbなど)- 使用した開発履歴、AIとのやりとり(Mission/Task情報の履歴)、ローカルのファイルパスなどの個人データが含まれるため公开されません。
- テスト用ワークスペース (
test_workspace/,workspace/など)- Dev Agent OS が動作テストや実験のために読み書きしたプロジェクトやディレクトリ内のデータは除外されます。
- 生成された成果物・ログ (
backend/artifacts/,logs/,*.log)- エージェントの実行によって自動生成されたスクリーンショット、分析結果 (
run.json)、プロセスの出力ログなどは容量を圧迫するため公開されません。
- エージェントの実行によって自動生成されたスクリーンショット、分析結果 (
- 依存関係パッケージ・ビルド成果物・IDE設定 (
node_modules/,dist/,.venv/,__pycache__/,.vscode/など)- Python の仮想環境群、Node.js パッケージ群などはサイズが大きく各利用者の環境で再構築するべきものなので除外されます。
上記の設定はプロジェクト直下の .gitignore によって一元管理されています。もし独自に除外したいファイル(個人的なメモファイルなど)がある場合は、コミット前に .gitignore に追記してください。