NexusCore 開発作業 申し送り資料
📋 作業概要
本資料は、NexusCore プロジェクトにおける Orchestrator の再設計と監視セットアップの実装作業について、他のAIエディタへの移管を目的とした申し送り資料です。
🎯 実施した主要作業
1. JobStateMachine と State クラスの実装
目的: ジョブの進行状況を管理するステートマシンの実装
実装内容:
src/nexuscore/core/job_state_machine.pyを作成- State クラス(PendingState, RunningState, CompletedState, FailedState)を実装
- JobStateMachine クラスで状態遷移を管理
- SessionController と RunHistoryLogger との統合
テスト:
tests/core/test_job_state_machine.py- 11個のテスト(すべて成功)- 基本機能、状態遷移、統合テストを含む
2. Celery タスクとの統合
目的: Orchestrator のジョブを非同期で処理するための Celery 統合
実装内容:
src/nexuscore/webapp/celery_app.pyを修正- JobStateMachine を Celery タスク内で使用
- エラーハンドリングと状態管理を実装
テスト:
tests/webapp/test_celery_job_state_machine.py- 9個のテスト(すべて成功)- Celery タスクとの統合、エラーハンドリング、セッション永続化をテスト
3. ログと履歴管理の実装
目的: ジョブの履歴やログを正しく保存し、トラブルシューティングや分析に活用
実装内容:
- RunHistoryLogger と SessionController の連携確認
- ジョブ履歴の JSONL 形式での保存
- セッション状態のチェックポイント保存
テスト:
tests/integration/test_log_history_management.py- 8個のテスト(すべて成功)- 履歴保存、状態遷移記録、エラーハンドリング、セッション管理をテスト
4. Kubernetes ワーカースケーリング設定
目的: システムの負荷に応じて、ワーカーの数を動的に増減させる
実装内容:
k8s/orchestrator-worker-hpa.yaml- HPA (Horizontal Pod Autoscaler) の設定- CPU 70%、メモリ 80% でスケールアウト
- 最小 2、最大 10 レプリカ
ドキュメント:
docs/k8s_worker_scaling_guide.md- 運用ガイド
5. Kubernetes + Celery 監視セットアップ
目的: Prometheus、Grafana、Celery Exporter による監視インフラの構築
実装内容:
k8s/monitoring/celery_exporter_deployment.yaml- Celery Exporter の Deploymentk8s/monitoring/celery_exporter_service.yaml- Celery Exporter の Servicek8s/monitoring/prometheus.yaml- Prometheus の Deployment、Service、ConfigMapk8s/monitoring/grafana.yaml- Grafana の Deployment、Service、ConfigMap、Ingressk8s/monitoring/service_monitor_celery.yaml- ServiceMonitor (Prometheus Operator 用)k8s/monitoring/README.md- 運用ガイド
🖥️ 開発環境
環境情報
- OS: WSL Ubuntu 24.04 (Windows 10)
- ワークスペース:
/home/yn441611/NexusCore - Python 環境:
myenv_linux(仮想環境) - Python バージョン: 3.12.3
- シェル: bash
インストール済みツール
- ✅
kubectl: v1.34.2 - ✅
minikube: v1.37.0 - ❌
Docker: 未インストール(minikube の起動に必要)
仮想環境の有効化
cd /home/yn441611/NexusCore
source myenv_linux/bin/activate
テスト実行方法
# プロジェクトルートで実行
cd /home/yn441611/NexusCore
source myenv_linux/bin/activate
PYTHONPATH=src python -m pytest tests/
📁 重要なファイルとディレクトリ
新規作成されたファイル
コア実装
src/nexuscore/core/job_state_machine.py- JobStateMachine と State クラスsrc/nexuscore/core/session_control.py- SessionController(既存、使用)src/nexuscore/core/run_history.py- RunHistoryLogger(既存、使用)
統合実装
src/nexuscore/webapp/celery_app.py- Celery タスク(修正済み)
テスト
tests/core/test_job_state_machine.py- JobStateMachine のテスト(11個)tests/webapp/test_celery_job_state_machine.py- Celery 統合テスト(9個)tests/integration/test_log_history_management.py- ログ履歴管理テスト(8個)
Kubernetes 設定
k8s/orchestrator-worker-deployment.yaml- ワーカーのデプロイメント(既存)k8s/orchestrator-worker-hpa.yaml- HPA 設定(新規)k8s/monitoring/- 監視セットアップ一式(新規)
ドキュメント
docs/k8s_worker_scaling_guide.md- ワーカースケーリングガイドdocs/log_history_management_verification.md- ログ履歴管理確認ガイドdocs/test_coverage_job_state_machine.md- テスト網羅性レポートdocs/k8s_connection_guide.md- Kubernetes 接続ガイドdocs/k8s_quick_start_guide.md- クイックスタートガイドdocs/k8s_next_steps.md- 次のステップdocs/completion_reports/- 完了レポート一式
⚠️ 重要な注意事項
1. アーキテクチャの制約(超重要)
依存方向の禁止:
- ❌
core/agents → UIは禁止 - ❌
modules/utils → core/agentsは禁止 - ✅
agents → coreは OK - ✅
UI → agents/coreは OK
中核ファイルへの変更禁止:
core/orchestrator.pyllm/llm_router.pynpe/engine.pyapi/server.py
これらは小型PRで段階的に扱う。
2. テスト実行のルール
実行方法:
# プロジェクトルートで実行(禁止: python -m pytest .)
cd /home/yn441611/NexusCore
source myenv_linux/bin/activate
PYTHONPATH=src python -m pytest tests/
禁止事項:
python -m pytest .(プロジェクトルート全体を対象にしない)git reset --hard/git clean -fdxrm -rf
3. 依存関係
インストール済み:
- ✅
flask-sqlalchemy,flask-migrate,flask-cors - ✅
celery,redis - ✅
authlib
未インストール:
- ❌
Docker- minikube の起動に必要
インストール方法:
source myenv_linux/bin/activate
pip install <package-name>
4. テスト結果の自動保存
tests/conftest.py で以下のファイルに自動保存されます:
docs/reports/TEST_RESULTS_{timestamp}.txt- テスト結果docs/reports/TEST_ERRORS_{timestamp}.txt- エラーログ(失敗時のみ)
5. モジュールの条件付きインポート
tests/webapp/test_celery_job_state_machine.py では、webapp モジュールが利用可能かどうかを確認:
try:
from nexuscore.webapp import create_app, db
HAS_WEBAPP = True
except ImportError:
HAS_WEBAPP = False
テストは @pytest.mark.skipif(not HAS_WEBAPP, ...) でスキップされます。
6. Celery アプリの初期化
src/nexuscore/webapp/celery_app.py のモジュールレベル初期化は、依存関係が不足している場合はスキップされます:
if celery is None and os.getenv("SKIP_CELERY_AUTO_INIT") != "1":
try:
celery = init_celery()
except (ImportError, ModuleNotFoundError) as e:
pass
🔧 開発時の重要なポイント
1. コード生成の原則
- Router 経由で LLM を呼ぶ: 新しいLLM呼び出しは Router を使用
- 小さく安全な diff: 50〜150行以内の変更を推奨
- 後方互換性: 既存の挙動を壊さない
- 型ヒントと docstring: 必ずつける
2. テストの原則
- 1テスト = 1責務
- LLM の実呼び出しは禁止(必ずモック)
- 公開APIに対するテスト
- 内部実装に依存しない
3. マルチLLM利用方針
- Primary: gpt-5.1, gpt-5.1-codex
- Secondary: claude-4.5-sonnet, gemini-3.0-pro, deepseek-r1
- Fallback: gpt-5.1-mini, gpt-5-nano
- 単一LLMへの依存禁止
📊 テスト結果
成功しているテスト
- JobStateMachine のテスト: 11個すべて成功
tests/core/test_job_state_machine.py
- Celery タスク統合テスト: 9個すべて成功
tests/webapp/test_celery_job_state_machine.py
- ログ履歴管理テスト: 8個すべて成功
tests/integration/test_log_history_management.py
合計: 28個のテストがすべて成功
🚀 次のステップ(未完了)
1. Docker のインストール
sudo apt-get update
sudo apt-get install -y docker.io
sudo service docker start
sudo usermod -aG docker $USER
newgrp docker
2. minikube の起動
minikube start --driver=docker
kubectl cluster-info
kubectl get nodes
3. 監視セットアップのデプロイ
kubectl create namespace nexuscore
kubectl apply -f k8s/monitoring/
kubectl get pods -n nexuscore
📚 参考ドキュメント
実装完了レポート
docs/completion_reports/WORKER_SCALING_LOG_HISTORY_COMPLETION_REPORT.mddocs/completion_reports/KUBERNETES_CELERY_MONITORING_SETUP_COMPLETION_REPORT.md
運用ガイド
k8s/monitoring/README.md- 監視セットアップの運用ガイドdocs/k8s_worker_scaling_guide.md- ワーカースケーリングガイドdocs/log_history_management_verification.md- ログ履歴管理確認ガイド
クイックスタート
docs/k8s_quick_start_guide.md- Kubernetes クイックスタートdocs/k8s_next_steps.md- 次のステップdocs/k8s_connection_guide.md- Kubernetes 接続ガイド
🎓 重要な概念
JobStateMachine
ジョブの進行状況を管理するステートマシン:
- PendingState: ジョブ待機状態
- RunningState: ジョブ実行中
- CompletedState: ジョブ完了状態
- FailedState: ジョブ失敗状態
状態遷移: Pending → Running → Completed/Failed
SessionController
長時間タスクの中断・再開・状態保存を管理:
- セッション状態を
.nexus/sessions/{session_id}.state.jsonに保存 - チェックポイント機能でフェーズごとに状態を保存
RunHistoryLogger
実行履歴を JSONL 形式で保存:
- 保存先:
.nexus/history/{kind}.log.jsonl - 1行 = 1実行の RunRecord (JSON)
Celery タスク統合
nexuscore.run_orchestratorタスクで JobStateMachine を使用- 状態遷移をデータベースに反映
- エラーハンドリングとログ記録
⚡ よくある問題と解決方法
1. ModuleNotFoundError
原因: 依存関係が不足している
解決方法:
source myenv_linux/bin/activate
pip install <package-name>
2. AttributeError: module ‘nexuscore’ has no attribute ‘webapp’
原因: モジュールのパッチが正しく適用されていない
解決方法: patch.object() を使用し、モジュールを先にインポート
3. kubectl がクラスターに接続できない
原因: kubeconfig が設定されていない、またはクラスターが起動していない
解決方法:
# minikube の場合
minikube start --driver=docker
kubectl cluster-info
4. テストが失敗する
原因: 依存関係が不足している、またはモックが正しく設定されていない
解決方法:
- エラーログを確認:
docs/reports/TEST_ERRORS_{timestamp}.txt - 依存関係をインストール
- モックの設定を確認
🔐 セキュリティと安全性
1. JSON ガード
- LLM 出力は必ず
as_json=Trueを付ける - JSON schema 準拠を enforce
2. NPE (予算ガード)
- 全 LLM 呼び出しは
guarded_llm_call()を通す - トークン見積もり → preflight_check → log_transaction の順序維持
3. ログ記録
必須項目:
- model, provider, task
- correlation_id, retry_count
- cost (prompt/response/detail)
4. 安全設計
- import 時に UI 起動禁止
- subprocess 使用時はログ+エラー捕捉
- diff パッチ適用は patch_applier を必ず使用
📝 コーディング規約
1. 言語
- 会話: 常に日本語
- コード: Python 3.12+
2. フォーマット
- 型ヒントを必ずつける
- docstring を必ずつける
- 明確な関数名を使用
3. テスト
test_で始まる- Arrange / Act / Assert が明確
- assert が最低1つ
- 成功ケース + エラーケース
🎯 プロジェクトの目的
NexusCore は「AIエージェントが AI エージェントを作るための開発基盤」です。
核となる原則:
- ハイブリッド・アーキテクチャ: ローカルLLM と クラウドLLM を厳密に使い分ける
- 継続的なパーソナライズ: ユーザーデータを安全に集約
- エンタープライズ・ガバナンス: 全てのエージェントの行動とコード変更はGitを通じて追跡可能
- セキュリティと分離: テナント間の厳格なデータ分離
📞 移管時の確認事項
必須確認
- すべてのテストが成功しているか
- 依存関係がインストールされているか
- ドキュメントが最新か
- 未完了の作業がないか
推奨確認
- コードレビューが完了しているか
- ドキュメントが分かりやすいか
- エラーハンドリングが適切か
- ログが適切に記録されているか
🎉 完了した作業のまとめ
✅ 実装完了
- JobStateMachine と State クラスの実装
- Celery タスクとの統合
- ログと履歴管理の実装
- Kubernetes ワーカースケーリング設定
- Kubernetes + Celery 監視セットアップ
✅ テスト完了
- 合計 28個のテストがすべて成功
- テスト網羅性レポートを作成
✅ ドキュメント完了
- 運用ガイド
- クイックスタートガイド
- 完了レポート
⏳ 未完了
- Docker のインストール
- minikube の起動
- 監視セットアップのデプロイ
📖 関連ファイルの場所
実装ファイル
src/nexuscore/core/job_state_machine.pysrc/nexuscore/webapp/celery_app.py
テストファイル
tests/core/test_job_state_machine.pytests/webapp/test_celery_job_state_machine.pytests/integration/test_log_history_management.py
Kubernetes 設定
k8s/orchestrator-worker-hpa.yamlk8s/monitoring/ディレクトリ一式
ドキュメント
docs/completion_reports/- 完了レポートdocs/k8s_*.md- Kubernetes 関連ガイドdocs/log_history_management_verification.md- ログ履歴管理ガイド
最終更新: 2025年11月30日 作業者: AI Codex (Auto) 移管先: 次のAIエディタ