Skip to content

jtoxyz/DevAgentOS

Repository files navigation

Dev Agent OS

プロジェクトの目的

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 実装済み機能・ファイル構造 (完了)

Phase 1 では、システムの土台となるデータモデルと基本UI(Workspaceの閲覧・編集)を構築しました。

Backend 主要ファイル群

  • 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: ファイルツリー取得、ファイル読み書きAPI
  • backend/api/mission.py: Mission のCRUD操作API
  • backend/api/task.py: Task のCRUD操作API
  • backend/api/run.py: RunProfile のCRUD操作API

Frontend 主要ファイル群

  • 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の追加・選択UI
    • FileTree.tsx: 再帰的なディレクトリ構造の描画
    • CodeEditor.tsx: Monaco Editor を用いたコード閲覧・編集

Phase 2 実装済み機能・ファイル構造 (完了)

Phase 2 では、AIエージェントの基本接続と各単体ステップ(Planner, Coder, Runner, Verify)の動作・入出力構造を実装しました。

Backend 主要ファイル群 (Phase 2 追加分)

  • 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 主要ファイル群 (Phase 2 追加分)

  • frontend/src/components/mission/DiffViewer.tsx: 生成された Patch のコード差分を Monaco Diff Editor 上で一覧比較・レビューするためのコンポーネント

Phase 3 実装済み機能・ファイル構造 (完了)

Phase 3 では、Coordinator(自動進行ループ制御層) を構築し、「Planner → Coder → 自動適用 → Runner/Verify」までの一連のループを自動進行させる MVP 状態を確立しました。 Mission ごとの自動進行状態をDBで追跡し、リスク評価に基づく自動適用(Low Risk時)などをサポートします。

Backend 主要ファイル群 (Phase 3 追加分)

  • 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 主要ファイル群 (Phase 3 追加分)

  • frontend/src/components/mission/MissionList.tsx: 作成されたMissionを一覧表示・新規作成するUI
  • frontend/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 実装済み機能・ファイル構造 (完了)

Phase 4 では、ブラウザ検証(UI Analysis)自動化と Playwright 連携 に取り組みました。文字ベースのログ解析だけでなく、画面のキャプチャを用いた視覚的検証を Verify ループに組み込みました。

Backend 主要ファイル群 (Phase 4 追加分)

  • backend/services/browser.py: Playwright を使って指定URLのスクリーンショットを取得するスクリプト
  • backend/services/agents/analyst.py: 取得した画像を Qwen3-VL:latest に渡し、UIエラーを検出する Vision Agent
  • backend/api/artifact.py: Run ごとに保存された Artifact(画像やログ)をフロントエンドに提供する API

Frontend 主要ファイル群 (Phase 4 追加分)

  • frontend/src/components/mission/RunArtifactViewer.tsx: タスクの Run 履歴ごとに生成された run.jsonstdout.logscreenshot.pngscreenshot.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_issueartifact_issue の概念は等価として扱われます。
  • Playwright: test_url などの特定指定が前提であり、汎用ブラウザ自動探索機能などは未対応です。

Phase 5 実装済み機能 (完了)

Phase 5 では、固定 Workspace 構造から 任意フォルダベースの Workspace Manager へ移行しました。

Backend 主要変更 (Phase 5)

  • backend/core/path_utils.py: 新規is_safe_workspace_root() (危険パスガード) と resolve_workspace_path() (パストラバーサル防止)
  • backend/models/domain.py: pathroot_path にリネーム、is_trusted, allow_write, allow_run, indexing_status, detected_stack, repo_type 追加
  • backend/api/workspace.py: CRUD 操作の完全実装、セキュアパス検証、初回スキャン

Frontend 主要変更 (Phase 5)

  • WorkspaceSelector.tsx: フォルダ登録・削除・フラグ管理UI、repo_type / detected_stack バッジ表示

Phase 6 実装済み機能 (完了)

Phase 6 では、Research Agent / Context Manager / Search 機能 を導入しました。

Backend 主要ファイル群 (Phase 6 追加分)

  • backend/services/search.py: ファイル名・コンテンツ・シンボル定義の3種検索エンジン
  • backend/api/search.py: GET /workspace/{id}/search 検索API
  • backend/services/context.py: プロジェクト設定・関連ファイル・ツリー構造を収集する Context Manager
  • backend/services/agents/research.py: LLM を用いたコードベース分析・実装ガイド生成エージェント
  • backend/services/coordinator.py: planning → researching → coding → running → verifying のループに拡張

Frontend 主要ファイル群 (Phase 6 追加分)

  • frontend/src/components/workspace/SearchPanel.tsx: コンテンツ/ファイル/シンボル検索UI
  • frontend/src/components/workspace/WorkspaceView.tsx: Explorer / Search タブ切り替え
  • frontend/src/components/mission/MissionDetail.tsx: ステップパイプライン可視化

Phase 7 実装済み機能 (完了)

Phase 7 では、IDE 的な Runner / Terminal 実行基盤 を構築しました。

Backend 主要変更 (Phase 7)

  • backend/services/process_manager.py: 長時間プロセスのライフサイクル管理(開始・停止・再起動)、stdout/stderr ストリーミング、URL/ポート検出。
  • backend/api/process.py, backend/api/run.py: allow_run ガード検証を含むプロセス制御APIの追加。

Frontend 主要変更 (Phase 7)

  • frontend/src/components/run/RunPanel.tsx: 統合ターミナルUI。コマンドのCRUD、プロセス状態の監視、ライブログの閲覧機能。

Phase 8 実装済み機能 (完了)

Phase 8 では、Patch エンジンと Human-in-the-Loop (レビュー) の強化 を行いました。

Backend 主要変更 (Phase 8)

  • backend/services/coordinator.py: パッチ適用前の厳密なリスク評価(危険ファイルアクセスガード、パストラバーサル防止、変更量チェック、失敗ループ検出)。
  • backend/api/loop.py: /resolve エンドポイント拡張。accept, reject, modify に加え、retry_with_note (メモ付き再試行) と accept_partial (部分適用) を実装。

Frontend 主要変更 (Phase 8)

  • frontend/src/components/mission/DiffViewer.tsx: レビューUIを全面刷新。ファイルごとの個別選択適用、再試行時の指示メモ入力、追加/削除行数の統計表示。

Phase 9 実装済み機能 (完了)

Phase 9 では、Playwright を用いた UI 自動操作と Browser Action 基盤 を構築しました。

Backend 主要変更 (Phase 9)

  • backend/services/browser_action.py: goto, click, fill, アサーション等を処理するヘッドレスブラウザ操作エンジン。
  • backend/api/browser.py: 実行結果やコンソールエラー、最終スクリーンショットを収集し、Qwen3-VL による Vision 解析を行う統合API。

Frontend 主要変更 (Phase 9)

  • frontend/src/components/browser/BrowserPanel.tsx: UI上でブラウザアクション手順を組み立て、実行・結果確認を行える専用パネル。

Phase 10 実装済み機能 (完了)

Phase 10 では、Project Memory (継続利用基盤) を導入し、エージェントが Workspace の文脈を長期記憶できるようにしました。

Backend 主要変更 (Phase 10)

  • backend/models/domain.py: ProjectMemory モデルを追加(プロジェクト概要、コーディング規約、禁止領域、最近の変更等)。
  • backend/services/agents/planner.py, backend/services/agents/research.py: メモリをデータベースから取得し、LLM へのシステムプロンプトにコンテキストとして注入。

Frontend 主要変更 (Phase 10)

  • frontend/src/components/workspace/SettingsView.tsx: Workspace ごとの Project Memory を閲覧・編集する設定画面。

1. セットアップ

前提環境

  • Windows
  • Python 3.11+
  • Node.js / npm
  • Ollama
  • Playwright

Ollama モデル

事前に以下のモデルを Pull しておいてください。

  • qwen2.5-coder:latest (Coder / Research 用)
  • deepseek-r1:latest (Planner / Verifier 用)
  • qwen3-vl:latest (Artifact Analyst 視覚解析用)

Backend セットアップ

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 で起動

Frontend セットアップ

cd frontend
npm install

# 開発サーバー起動
npm run dev
# -> http://localhost:5173 で起動

2. Dev Agent OS でできること (全10フェーズ完了)

  1. 任意フォルダの Workspace 管理: 任意のフォルダを Workspace として登録・安全に操作。危険パスへのアクセスを自動ブロック。Project Memory でプロジェクトの文脈を永続化。
  2. コードベース検索と高度な調査: Research Agent がファイル名、コンテンツ grep、シンボル定義検索を駆使して自律的にコードを読み解き、修正計画を策定。
  3. 半自動コード補修と精密パッチ: Mission を立ち上げ、AI が修正・実行・成否判定を循環。SEARCH/REPLACE ブロックによる安全な部分パッチ適用。
  4. Human in the Loop レビュー: リスクの高いパッチを自動停止。ファイル単位の部分適用 (accept_partial) や、人間からのメモ付き再試行 (retry_with_note) に対応。
  5. IDE的なターミナル実行: 開発サーバー等の長時間プロセスを管理し、ライブログ(stdout/stderr)と状態をターミナルUIにストリーミング表示。
  6. 視覚的解析を通じた UI 自動テスト: Playwrightを用いたブラウザ操作手順エディタで自動テストを定義。Qwen3-VL が UI の崩れを自動判定し、結果を Artifact として保存。

3. GitHub 等でのリポジトリ公開に関する注意事項 (非公開ファイルについて)

このプロジェクトを GitHub 等に公開する際、セキュリティ保護とリポジトリの清潔さを保つため、一部のファイルやディレクトリは意図的に公開対象から除外(.gitignore で設定)されています。

【公開対象外(Pushされない)ファイル・フォルダ】

  1. 環境変数・APIキー・シークレット (.env など)
    • APIキーやパスワード情報が含まれる .env ファイル等は除外されています。(誤って公開すると不正利用のリスクがあるため、意図的に Git の管理外としています)。
    • 代わりに、公開用には空の .env.example などを別途作成して提供することをおすすめします。
  2. データベースファイル (*.db, *.sqlite, backend/dev.db など)
    • 使用した開発履歴、AIとのやりとり(Mission/Task情報の履歴)、ローカルのファイルパスなどの個人データが含まれるため公开されません。
  3. テスト用ワークスペース (test_workspace/, workspace/ など)
    • Dev Agent OS が動作テストや実験のために読み書きしたプロジェクトやディレクトリ内のデータは除外されます。
  4. 生成された成果物・ログ (backend/artifacts/, logs/, *.log)
    • エージェントの実行によって自動生成されたスクリーンショット、分析結果 (run.json)、プロセスの出力ログなどは容量を圧迫するため公開されません。
  5. 依存関係パッケージ・ビルド成果物・IDE設定 (node_modules/, dist/, .venv/, __pycache__/, .vscode/ など)
    • Python の仮想環境群、Node.js パッケージ群などはサイズが大きく各利用者の環境で再構築するべきものなので除外されます。

上記の設定はプロジェクト直下の .gitignore によって一元管理されています。もし独自に除外したいファイル(個人的なメモファイルなど)がある場合は、コミット前に .gitignore に追記してください。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors