Migrate all agent roles from Legacy to EvoAgent architecture: - fundamentals_analyst, technical_analyst, sentiment_analyst, valuation_analyst - risk_manager, portfolio_manager Key changes: - EvoAgent now supports Portfolio Manager compatibility methods (_make_decision, get_decisions, get_portfolio_state, load_portfolio_state, update_portfolio) - Add UnifiedAgentFactory for centralized agent creation - ToolGuard with batch approval API and WebSocket broadcast - Legacy agents marked deprecated (AnalystAgent, RiskAgent, PMAgent) - Remove backend/agents/compat.py migration shim - Add run_id alongside workspace_id for semantic clarity - Complete integration test coverage (13 tests) - All smoke tests passing for 6 agent roles Constraint: Must maintain backward compatibility with existing run configs Constraint: Memory support must work with EvoAgent (no fallback to Legacy) Rejected: Separate PM implementation for EvoAgent | unified approach cleaner Confidence: high Scope-risk: broad Directive: EVO_AGENT_IDS env var still respected but defaults to all roles Not-tested: Kubernetes sandbox mode for skill execution
Frontend Quick Start
cd frontend
npm ci
npm run dev
Default dev URL: http://localhost:5173
The frontend expects the 大时代 gateway WebSocket on ws://localhost:8765 unless overridden.
Recommended Local Backend Stack
Start the split backend services from the project root:
./start-dev.sh
That gives you:
- control plane at
http://localhost:8000/api - trading service at
http://localhost:8001 - news service at
http://localhost:8002 - runtime service at
http://localhost:8003/api/runtime - gateway WebSocket at
ws://localhost:8765
Frontend Environment Variables
You can point the frontend directly at those services with:
VITE_CONTROL_API_BASE_URL=http://localhost:8000/api
VITE_RUNTIME_API_BASE_URL=http://localhost:8003/api/runtime
VITE_NEWS_SERVICE_URL=http://localhost:8002
VITE_TRADING_SERVICE_URL=http://localhost:8001
VITE_WS_URL=ws://localhost:8765
There is also a starter template at frontend/env.template.
For production deployments, prefer:
cd frontend
npm ci
npm run build
This ensures the deployed frontend matches the checked-in package-lock.json.
Direct-Service Coverage
Current direct-call coverage includes:
- runtime panel data loading
- gateway port/runtime discovery
storysimilar daysrange explainnews for datenews categories- selected trading reads such as price history and insider trades
If these variables are not set, the frontend falls back to local defaults and compatibility paths where they still exist.