包含从项目创建至今的全部代码首次入库: 核心框架: - TaskQueue(SQLite,6 种状态,原子 dequeue) - Executor(asyncio 并发,semaphore 限流,agent_role 路由) - Scheduler(APScheduler,三队列独立调度) - Watchdog(超时检测 + 优先级防饥饿) - Scanner(项目扫描,README/TODO/CLAUDE.md 提取) Agent 体系(20+ 角色): - 项目交付组:architect/developer/tester/productizer - 基础技术组:base-architect/validator/hw/os/kernel/lowlevel/system-tester - 算法组:algo-antishake/position/nav - 洞察组:planner/vision-analyst/media-producer - 市场组:market-pm/sport/elder/safety - 组织层:boss/group-leader/senior-dev/ops - 平台扩展:nrf-dev/esp32-dev - 三专项调研:rtp-researcher/net-researcher/kernel-analyzer 工具层: - ProjectMemory(goals/facts/history SQLite) - VersionPipeline(并行版本流水线 + 反幻觉门控) - EventBus(Redis Streams,5 consumer groups) - DailyReport(append-only 日报 + Boss 决策视图) - AgentScorer(4 维评分:完成度/质量/自主性/协作) - DeviceAgent(SSH rsync + 板端执行) - EnvCollector(本机+SSH 环境采集) - ArchVersion(快照/优化/promote/rollback) Dashboard(React + Vite + Tailwind): - 看板/项目/配置/洞察/日报/Visual 六标签页 - WebSocket 实时更新 - Markdown 渲染(react-markdown + remark-gfm) 测试:314 passed Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
41 lines
1.5 KiB
YAML
41 lines
1.5 KiB
YAML
version: "3.9"
|
||
|
||
services:
|
||
dashboard:
|
||
build:
|
||
context: .
|
||
dockerfile: Dockerfile.dashboard
|
||
image: nmfs-agents-dashboard:latest
|
||
container_name: agents-dashboard
|
||
ports:
|
||
- "9080:8080"
|
||
volumes:
|
||
- ./data:/app/data # 共享 tasks.db(SQLite WAL 模式并发安全)
|
||
- ./configs:/app/configs # 读取项目配置
|
||
- /data:/data # 宿主机项目目录(用于读写项目 CLAUDE.md/README.md)
|
||
- /home/qiurui/.claude:/home/qiurui/.claude # 全局 CLAUDE.md + OAuth 认证
|
||
- /home/qiurui/.claude.json:/home/qiurui/.claude.json # Claude CLI 配置
|
||
- /home/qiurui/.local:/home/qiurui/.local # claude CLI 二进制
|
||
- /data/company/visual-tester:/app/visual-tester
|
||
environment:
|
||
- DB_PATH=/app/data/tasks.db
|
||
- CONFIG_DIR=/app/configs
|
||
- DASHBOARD_PORT=8080
|
||
- CLAUDE_GLOBAL_DIR=/home/qiurui/.claude
|
||
- HOME=/home/qiurui
|
||
- PATH=/home/qiurui/.local/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin
|
||
- http_proxy=http://172.17.0.1:8889/
|
||
- https_proxy=http://172.17.0.1:8889/
|
||
- HTTP_PROXY=http://172.17.0.1:8889/
|
||
- HTTPS_PROXY=http://172.17.0.1:8889/
|
||
- ALL_PROXY=socks://172.17.0.1:1089/
|
||
- all_proxy=socks://172.17.0.1:1089/
|
||
- NO_PROXY=localhost,127.0.0.1,172.17.0.0/16
|
||
restart: unless-stopped
|
||
healthcheck:
|
||
test: ["CMD", "python", "-c",
|
||
"import urllib.request; urllib.request.urlopen('http://localhost:8080/api/tasks')"]
|
||
interval: 30s
|
||
timeout: 5s
|
||
retries: 3
|