docs: 刷新全量文档;修复 executor 成功/失败状态判断;添加三专项独立项目
文档刷新: - CLAUDE.md/README.md/DEVELOP.md/RELEASE.md 同步 org v2 架构 (Boss/GroupLeader/SeniorDev/Ops 组织层、EventBus/DailyReport/OpsHub/ AgentScorer/VersionPipeline 工具层、nrf-dev/esp32-dev/market-* 新角色) - 清除所有 /data/rockchip 路径引用 → /data/company(源码+测试+前端) - 保留 "Rockchip" 芯片厂商名作为技术描述(hw_engineer/algo_vision 等) - docs/plans/ 历史文档保持原样(反映当时路径状态) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -4,20 +4,20 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
||||
|
||||
## 项目概述
|
||||
|
||||
NMFS Agents:基于 Claude CLI 的 AI 项目自动化维护与调研系统。支持代码修复、板端测试、成熟度评估、架构整合、市场洞察与基础技术调研,运行在 RK3588 NPU 开发平台上。
|
||||
NMFS Agents:基于 Claude CLI 的 AI 多角色自动化系统。通过 30+ Agent 协作完成代码修复、板端测试、成熟度评估、架构整合、市场洞察与基础技术调研,支持 RK3588/RK3566 NPU 开发平台及 nRF54L15/ESP32S3 扩展平台。
|
||||
|
||||
## 目录约定
|
||||
|
||||
```
|
||||
src/ # 包源码(Python 包)
|
||||
tests/ # pytest 单元测试
|
||||
src/ # 包源码(Python 包 nmfs_agents)
|
||||
tests/ # pytest 单元测试(314+)
|
||||
scripts/ # 工具脚本(run.py CLI 入口、start_daemon.sh 等)
|
||||
configs/ # projects.yaml / agents.yaml / devices.yaml
|
||||
configs/ # projects.yaml / agents.yaml / devices.yaml / org.yaml
|
||||
data/ # 运行时数据(tasks.db / insight_tasks.db / base_opt_tasks.db / task_logs/)
|
||||
logs/ # daemon 日志(daemon_*.log, daemon.pid)
|
||||
tmp/ # 临时文件,使用后删除
|
||||
venv/ # Python 虚拟环境(不入仓)
|
||||
dashboard/ # React 前端源码
|
||||
dashboard/ # React 前端源码(Vite + Tailwind)
|
||||
README.md # 快速开始
|
||||
DEVELOP.md # 开发指南
|
||||
RELEASE.md # 发布记录
|
||||
@@ -26,14 +26,14 @@ RELEASE.md # 发布记录
|
||||
## 环境
|
||||
|
||||
```bash
|
||||
# 创建虚拟环境(Python 3.10,兼容 rknn-toolkit2)
|
||||
# 创建虚拟环境(Python 3.10)
|
||||
python3.10 -m venv venv && source venv/bin/activate
|
||||
pip install -e ".[dev]"
|
||||
```
|
||||
|
||||
- **x86 开发机**:rknn-toolkit2 2.3.2(ONNX→RKNN 转换、仿真),Python 3.10
|
||||
- **x86 开发机**:Python 3.10,rknn-toolkit2 2.3.2(ONNX→RKNN 转换)
|
||||
- **rk3566 设备**(算法默认):orangepi@192.168.123.183,OrangePi
|
||||
- **rk3588 设备**(高性能):pi@192.168.123.181,NanoPC-T6
|
||||
- **rk3588 设备**(高性能):pi@192.168.123.137,NanoPC-T6
|
||||
|
||||
## 认证
|
||||
|
||||
@@ -44,27 +44,13 @@ Agent 以子进程调用 `claude --print`,优先使用 CLI OAuth(`claude log
|
||||
## 常用命令
|
||||
|
||||
```bash
|
||||
# 环境激活
|
||||
source venv/bin/activate
|
||||
|
||||
# 运行测试
|
||||
pytest tests/ -q
|
||||
|
||||
# 后台启动调度器
|
||||
bash scripts/start_daemon.sh
|
||||
|
||||
# 监控状态
|
||||
bash scripts/watch_daemon.sh
|
||||
python scripts/run.py status
|
||||
|
||||
# 扫描预览(不执行)
|
||||
python scripts/run.py scan
|
||||
|
||||
# 执行下一个任务(须在普通终端执行)
|
||||
python scripts/run.py run-next
|
||||
|
||||
# 查看任务队列
|
||||
sqlite3 data/tasks.db "SELECT id,project,agent_role,title,status FROM tasks ORDER BY id DESC LIMIT 10;"
|
||||
pytest tests/ -q # 运行测试
|
||||
bash scripts/start_daemon.sh # 后台启动调度器
|
||||
bash scripts/watch_daemon.sh # 监控状态
|
||||
python scripts/run.py status # 查看任务状态
|
||||
python scripts/run.py scan # 扫描预览(不执行)
|
||||
python scripts/run.py run-next # 执行下一个任务(须在普通终端)
|
||||
```
|
||||
|
||||
## 项目结构
|
||||
@@ -78,8 +64,11 @@ src/nmfs_agents/
|
||||
│ ├── productizer.py # Productizer Agent(成熟度评分,规则引擎)
|
||||
│ ├── architect.py # Architect Agent(跨项目分析)
|
||||
│ ├── manager.py # Manager Agent(顶层协调)
|
||||
│ ├── planner.py # Planner Agent(市场洞察规划)
|
||||
│ ├── market_pm.py # MarketPm Agent(市场分析)
|
||||
│ ├── planner.py # Planner Agent(差距分析规划)
|
||||
│ ├── market_pm.py # MarketPm Agent(市场分析基类)
|
||||
│ ├── market_sport.py # MarketSport Agent(运动健康市场)
|
||||
│ ├── market_elder.py # MarketElder Agent(适老辅助市场)
|
||||
│ ├── market_safety.py # MarketSafety Agent(AI安全市场)
|
||||
│ ├── vision_analyst.py # VisionAnalyst Agent(视觉分析)
|
||||
│ ├── media_producer.py # MediaProducer Agent(内容生产)
|
||||
│ ├── rtp_researcher.py # RTP/RTCP 调研
|
||||
@@ -94,12 +83,19 @@ src/nmfs_agents/
|
||||
│ ├── base_validator.py # 基础架构验证
|
||||
│ ├── algo_antishake.py # 防抖算法专项
|
||||
│ ├── algo_position.py # 定位算法专项
|
||||
│ └── algo_nav.py # 导航算法专项
|
||||
│ ├── algo_nav.py # 导航算法专项
|
||||
│ ├── algo_vision.py # 视觉算法组基类
|
||||
│ ├── nrf_dev.py # nRF54L15 平台开发(运动健康)
|
||||
│ ├── esp32_dev.py # ESP32S3 平台开发(适老辅助)
|
||||
│ ├── boss.py # Boss Agent(战略决策)
|
||||
│ ├── group_leader.py # GroupLeader Agent(部门长)
|
||||
│ ├── senior_dev.py # SeniorDev Agent(高级研发)
|
||||
│ └── ops.py # Ops Agent(巡检)+ OpsHub(事件消费)
|
||||
├── core/
|
||||
│ ├── scanner.py # 项目扫描器(README/TODO/CLAUDE.md)
|
||||
│ ├── queue.py # SQLite 任务队列(原子 dequeue,6 种状态)
|
||||
│ ├── executor.py # asyncio 并发调度(semaphore 限流,agent_role 路由)
|
||||
│ ├── scheduler.py # APScheduler 定时入口(多队列)
|
||||
│ ├── scheduler.py # APScheduler 定时入口(多队列 + EventBus)
|
||||
│ └── watchdog.py # 超时检测 + 优先级防饥饿
|
||||
└── tools/
|
||||
├── feishu.py # 飞书通知
|
||||
@@ -110,11 +106,33 @@ src/nmfs_agents/
|
||||
├── arch_version.py # 架构优化版本管理(snapshot/promote/rollback)
|
||||
├── project_discovery.py # 非硬编码项目发现
|
||||
├── project_memory.py # 项目记忆(goals/facts/history SQLite)
|
||||
└── env_collector.py # 板端环境信息采集
|
||||
configs/ # projects.yaml / agents.yaml / devices.yaml
|
||||
data/tasks.db # project_delivery 队列(运行时生成)
|
||||
data/base_opt_tasks.db # base_opt 队列
|
||||
data/insight_tasks.db # insight 队列
|
||||
├── env_collector.py # 板端环境信息采集
|
||||
├── event_bus.py # Redis Streams 事件总线(5 consumer groups)
|
||||
├── daily_report.py # 日报系统(append-only SQLite + Boss 决策视图)
|
||||
├── agent_score.py # Agent 评分系统(4 维度:完成/质量/自主/协作)
|
||||
├── version_pipeline.py # 并行版本流水线(反幻觉门控)
|
||||
└── knowledge_base.py # 知识库(组织架构 + 项目 facts 聚合)
|
||||
```
|
||||
|
||||
## 组织架构(org v2)
|
||||
|
||||
```
|
||||
Boss(战略决策,周报)
|
||||
├── 基础技术部(os-base-leader)
|
||||
│ ├── base-architect / base-validator / hw-engineer
|
||||
│ ├── os-engineer / dev-kernel / dev-lowlevel / system-tester
|
||||
│ ├── 算法组:algo-antishake / algo-position / algo-nav
|
||||
│ ├── 调研组:rtp-researcher / net-researcher / kernel-analyzer
|
||||
│ └── 平台扩展:nrf-dev / esp32-dev
|
||||
├── 市场洞察部(market-leader)
|
||||
│ ├── market-pm(通用)
|
||||
│ └── market-sport / market-elder / market-safety(专项)
|
||||
├── 项目交付部
|
||||
│ ├── architect / developer / tester
|
||||
│ └── planner / productizer / vision-analyst / media-producer
|
||||
└── Ops(独立运营,星形枢纽)
|
||||
├── OpsAgent:每日巡检(AI 推理)
|
||||
└── OpsHub:事件消费 → 日报写入(纯逻辑,快)
|
||||
```
|
||||
|
||||
## Agent 角色路由
|
||||
@@ -136,15 +154,20 @@ data/insight_tasks.db # insight 队列
|
||||
| `algo-position` | AlgoPositionAgent | R | W | 定位算法专项 |
|
||||
| `algo-nav` | AlgoNavAgent | R | W | 导航算法专项 |
|
||||
|
||||
### 基础技术组补充(project_delivery 队列,技术专项)
|
||||
### 调研专项(project_delivery 队列,`__research__.*` 记忆域)
|
||||
|
||||
> 属于基础技术组的架构师/高级研发,有独立的专项记忆域(`__research__.*`)
|
||||
| agent_role | Agent 类 | 记忆域 | 用途 |
|
||||
|-----------|---------|------|------|
|
||||
| `rtp-researcher` | RtpResearcherAgent | `__research__.rtp.*` | RTP/RTCP 协议调研 |
|
||||
| `net-researcher` | NetResearcherAgent | `__research__.net.*` | 网络栈优化调研 |
|
||||
| `kernel-analyzer` | KernelAnalyzerAgent | `__research__.kernel.*` | 内核调度分析 |
|
||||
|
||||
| agent_role | Agent 类 | goals | facts | 记忆域 | 用途 |
|
||||
|-----------|---------|:---:|:---:|------|------|
|
||||
| `rtp-researcher` | RtpResearcherAgent | R | W | `__research__.rtp.*` | RTP/RTCP 协议调研 |
|
||||
| `net-researcher` | NetResearcherAgent | R | W | `__research__.net.*` | 网络栈优化调研 |
|
||||
| `kernel-analyzer` | KernelAnalyzerAgent | R | W | `__research__.kernel.*` | 内核调度分析 |
|
||||
### 平台扩展(project_delivery 队列)
|
||||
|
||||
| agent_role | Agent 类 | 用途 |
|
||||
|-----------|---------|------|
|
||||
| `nrf-dev` | NrfDevAgent | nRF54L15 / BLE 5.4 / Zephyr(运动健康) |
|
||||
| `esp32-dev` | Esp32DevAgent | ESP32S3 / mmWave(适老辅助) |
|
||||
|
||||
### 项目交付组(project_delivery 队列)
|
||||
|
||||
@@ -152,22 +175,47 @@ data/insight_tasks.db # insight 队列
|
||||
|-----------|---------|:---:|:---:|------|
|
||||
| `architect` | ArchitectAgent | W | W | 跨项目架构分析 |
|
||||
| `developer` | DeveloperAgent | R | R | 代码修复/重构(默认) |
|
||||
| `dev-refactor` | DeveloperAgent | R | R | 重构专项 |
|
||||
| `dev-embedded` | DeveloperAgent | R | R | 嵌入式固件 |
|
||||
| `tester` | TesterAgent | R | R | 本地+板端测试 |
|
||||
| `market-pm` | MarketPmAgent | R | W | 市场分析(兼 insight)|
|
||||
|
||||
### 产品洞察组(insight 队列)
|
||||
|
||||
| agent_role | Agent 类 | goals | facts | 用途 |
|
||||
|-----------|---------|:---:|:---:|------|
|
||||
| `planner` | PlannerAgent | R | W | 差距分析,洞察任务规划 |
|
||||
| `productizer` | ProductizerAgent | W | W | 成熟度评估(100分制) |
|
||||
| `vision-analyst` | VisionAnalystAgent | R | W | 视觉效果分析 |
|
||||
| `media-producer` | MediaProducerAgent | R | R | 技术内容生产 |
|
||||
| agent_role | Agent 类 | 用途 |
|
||||
|-----------|---------|------|
|
||||
| `planner` | PlannerAgent | 差距分析,洞察任务规划 |
|
||||
| `productizer` | ProductizerAgent | 成熟度评估(100分制) |
|
||||
| `vision-analyst` | VisionAnalystAgent | 视觉效果分析 |
|
||||
| `media-producer` | MediaProducerAgent | 技术内容生产 |
|
||||
|
||||
### 市场专项(insight 队列)
|
||||
|
||||
| agent_role | Agent 类 | 记忆域 | 用途 |
|
||||
|-----------|---------|------|------|
|
||||
| `market-pm` | MarketPmAgent | `__market__.*` | 市场分析(通用) |
|
||||
| `market-sport` | MarketSportAgent | `__market__.sport.*` | 运动健康市场 |
|
||||
| `market-elder` | MarketElderAgent | `__market__.elder.*` | 适老辅助市场 |
|
||||
| `market-safety` | MarketSafetyAgent | `__market__.safety.*` | AI 安全市场 |
|
||||
|
||||
### 组织管理层
|
||||
|
||||
| agent_role | Agent 类 | 用途 |
|
||||
|-----------|---------|------|
|
||||
| `boss` | BossAgent | 战略决策,周报 |
|
||||
| `os-base-leader` | GroupLeaderAgent | 基础技术部部门长 |
|
||||
| `vision-algo-leader` | GroupLeaderAgent | 视觉算法组组长 |
|
||||
| `senior-dev` | SeniorDevAgent | 高级研发(跨组支援) |
|
||||
| `ops` | OpsAgent | 项目健康巡检 + 文档维护 |
|
||||
|
||||
> W=可写 R=只读 | goals/facts 写权限受 `WRITE_ROLES` 常量约束(project_memory.py)
|
||||
|
||||
## 事件总线与日报
|
||||
|
||||
- **EventBus**(`tools/event_bus.py`):Redis Streams,executor 任务完成/失败自动发布事件
|
||||
- **Consumer Groups**:ops-hub / leader-os-base / leader-vision-algo / leader-market / boss
|
||||
- **OpsHub**(`agents/ops.py`):消费事件 → 写入 DailyReport,重大事件广播 leader
|
||||
- **DailyReport**(`tools/daily_report.py`):append-only SQLite,时间线 + Boss 决策视图
|
||||
- **AgentScorer**(`tools/agent_score.py`):4 维评分(完成度 40% + 质量 30% + 自主性 20% + 协作 10%)
|
||||
- **VersionPipeline**(`tools/version_pipeline.py`):反幻觉门控,dev agent 只能 start_testing,tester 才能 mark_done/mark_failed
|
||||
|
||||
## 编码规范
|
||||
|
||||
- `from __future__ import annotations`(保持跨版本兼容)
|
||||
@@ -175,10 +223,3 @@ data/insight_tasks.db # insight 队列
|
||||
- 日志使用 `logging` 模块,不使用 `print`
|
||||
- 命名:类 `PascalCase`,函数/变量 `snake_case`,常量 `UPPER_CASE`
|
||||
- 测试放 `tests/`,调试 demo 放 `tmp/` 并确认后删除
|
||||
|
||||
## RK3588 关键技术
|
||||
|
||||
- NPU 三核并行:`core_mask=RKNNLite.NPU_CORE_ALL`(可提升 1.3~1.9x)
|
||||
- RKNN INT8 量化:rknn-toolkit2 对 onnx 版本有限制(需 < 1.17),安装顺序先 rknn-toolkit2 再 onnx
|
||||
- 平台检测:通过 CPU 架构和设备树自动判断,推理引擎据此选 Toolkit2 或 Lite2
|
||||
- 可复用推理模块:`/data/rockchip/yolo`(目标检测)、`/data/rockchip/mediapipe`(关键点)、`/data/rockchip/embedding`(向量检索)
|
||||
|
||||
+83
-138
@@ -36,29 +36,25 @@ DeveloperAgent.run(task)
|
||||
"<任务描述>"
|
||||
],
|
||||
cwd="<项目路径>",
|
||||
env={CLAUDECODE 已清除}, # 允许在 Claude Code 会话中嵌套运行
|
||||
env={CLAUDECODE 已清除},
|
||||
)
|
||||
```
|
||||
|
||||
**confirm 模式审批机制**:通过 claude-wx hook 基础设施实现,每个 Write/Edit/Bash 工具调用前均发飞书卡片请求审批,而非任务级一次性审批。环境变量 `CLAUDE_WX_AGENT_MODE=default` 触发此行为。
|
||||
|
||||
### 任务队列状态机
|
||||
|
||||
```
|
||||
pending → running → done
|
||||
→ failed
|
||||
→ waiting_approval → done(审批通过后 callback 触发)
|
||||
→ failed(审批拒绝)
|
||||
→ vetoed → pending(否决后重入队,带否决原因)
|
||||
→ waiting_approval → done / failed / vetoed → pending
|
||||
```
|
||||
|
||||
### 多队列架构
|
||||
|
||||
```
|
||||
scheduler.py
|
||||
├─> project_delivery 队列(tasks.db) ─> 项目开发/研究类任务
|
||||
├─> project_delivery 队列(tasks.db) ─> 项目开发/研究/管理类任务
|
||||
├─> base_opt 队列(base_opt_tasks.db) ─> 算法/硬件优化类任务
|
||||
└─> insight 队列(insight_tasks.db) ─> 洞察/分析类任务
|
||||
└─> insight 队列(insight_tasks.db) ─> 洞察/分析/市场类任务
|
||||
```
|
||||
|
||||
每个队列独立的 `role_filter` 确保任务只被有资格的 Agent 执行。
|
||||
@@ -70,9 +66,30 @@ Scanner.scan_all() # 扫描 README/TODO/CLAUDE.md
|
||||
└─> TaskQueue.enqueue() # SQLite,BEGIN EXCLUSIVE 原子操作,去重
|
||||
└─> Executor.run_all_pending() # asyncio Semaphore 限流并发
|
||||
├─> _make_agent(role) # 按 agent_role 路由到对应 Agent
|
||||
├─> EventBus.publish_task_done/failed() # Redis Streams 事件广播
|
||||
└─> FeishuNotifier.send_task_result()
|
||||
```
|
||||
|
||||
### EventBus 事件流
|
||||
|
||||
```
|
||||
Executor 任务完成/失败
|
||||
└─> EventBus.publish() → Redis Stream "nmfs:events"
|
||||
├─> ops-hub → OpsHub → DailyReport 写入
|
||||
├─> leader-os-base → 基础技术部部门长
|
||||
├─> leader-vision-algo → 视觉算法组组长
|
||||
├─> leader-market → 市场洞察部
|
||||
└─> boss → Boss 战略决策
|
||||
```
|
||||
|
||||
### 反幻觉门控(VersionPipeline)
|
||||
|
||||
```
|
||||
Dev Agent 开发完毕 → vp.start_testing() ← Dev 只能到这一步
|
||||
TesterAgent 测试 → vp.mark_done() ← 只有 Tester 能标记完成
|
||||
→ vp.mark_failed() ← 只有 Tester 能标记失败
|
||||
```
|
||||
|
||||
## Web Dashboard
|
||||
|
||||
Dashboard 是首选操作入口,访问地址:`http://localhost:9080`(Docker 环境同端口)。
|
||||
@@ -81,50 +98,21 @@ Dashboard 是首选操作入口,访问地址:`http://localhost:9080`(Docke
|
||||
|
||||
| 标签页 | 功能 |
|
||||
|--------|------|
|
||||
| 看板(Kanban) | 按项目查看任务状态(待处理/运行中/完成/失败),可拖拽调整优先级 |
|
||||
| 洞察(Insight) | 市场目标卡片(运动/适老/AI安全)+ 基础技术调研展示 + 历史记录 |
|
||||
| 配置(Config) | 查看/编辑全局和项目级 CLAUDE.md / README.md,触发 CLAUDE.md 刷新 |
|
||||
|
||||
### 常见操作
|
||||
|
||||
**提交开发需求**(点击右上角「提交需求」):
|
||||
- 选择项目 → 选择类型(修复问题/新功能/代码审查等)→ 填写描述 → 提交
|
||||
- 提交后自动路由到 `project_delivery` 队列
|
||||
|
||||
**发起技术攻关**:
|
||||
- 需求类型选「技术攻关」→ 选择角色(RTP/网络栈/内核调度/OS/硬件)→ 填写描述 → 提交
|
||||
- 自动路由到 `base_opt` 队列;调研结论写入 `__research__.*`,洞察页自动展示
|
||||
|
||||
**触发市场洞察**(洞察页):
|
||||
- 点击目标卡片的「触发洞察」按钮 → insight 队列入队 → market-pm 执行
|
||||
- 调研结论写入 `__market__.{goal}.*`,目标卡片下次刷新时自动更新
|
||||
|
||||
**刷新项目指导**(配置页,选中项目后可见):
|
||||
- 点击「🔄 刷新项目指导」→ 创建 `architect` 任务 → Agent 综合调研结论自动重写 CLAUDE.md
|
||||
| 看板(Kanban) | 按项目查看任务状态,可拖拽调整优先级 |
|
||||
| 洞察(Insight) | 市场目标卡片(运动/适老/AI安全)+ 基础技术调研 |
|
||||
| 日报(Daily) | 时间线视图(全部事件)+ Boss 决策视图(组织健康 + 待决策) |
|
||||
| 配置(Config) | 查看/编辑 CLAUDE.md / README.md,触发 CLAUDE.md 刷新 |
|
||||
|
||||
## 常用命令
|
||||
|
||||
```bash
|
||||
# 查看任务状态(多队列)
|
||||
python scripts/run.py status
|
||||
|
||||
# 后台启动调度器
|
||||
bash scripts/start_daemon.sh
|
||||
|
||||
# 监控日志
|
||||
bash scripts/watch_daemon.sh
|
||||
|
||||
# 预览扫描结果(只打印,不入队)
|
||||
python scripts/run.py scan
|
||||
|
||||
# 执行队列中下一个任务(须在普通终端执行)
|
||||
python scripts/run.py run-next
|
||||
|
||||
# 入队三专项调研任务(须在普通终端执行)
|
||||
python scripts/run.py research
|
||||
|
||||
# 全量测试
|
||||
pytest tests/ -q
|
||||
python scripts/run.py status # 查看任务状态(多队列)
|
||||
bash scripts/start_daemon.sh # 后台启动调度器
|
||||
bash scripts/watch_daemon.sh # 监控日志
|
||||
python scripts/run.py scan # 预览扫描结果
|
||||
python scripts/run.py run-next # 执行下一个任务(须在普通终端)
|
||||
python scripts/run.py research # 入队三专项调研(须在普通终端)
|
||||
pytest tests/ -q # 全量测试
|
||||
```
|
||||
|
||||
## 调试
|
||||
@@ -132,13 +120,8 @@ pytest tests/ -q
|
||||
### 查看任务队列
|
||||
|
||||
```bash
|
||||
# project_delivery 队列
|
||||
sqlite3 data/tasks.db "SELECT id,project,agent_role,title,status FROM tasks ORDER BY id DESC LIMIT 20;"
|
||||
|
||||
# base_opt 队列
|
||||
sqlite3 data/base_opt_tasks.db "SELECT id,project,agent_role,title,status FROM tasks ORDER BY id DESC LIMIT 10;"
|
||||
|
||||
# insight 队列
|
||||
sqlite3 data/insight_tasks.db "SELECT id,project,agent_role,title,status FROM tasks ORDER BY id DESC LIMIT 10;"
|
||||
```
|
||||
|
||||
@@ -169,27 +152,19 @@ EOF
|
||||
|------|---------|--------|
|
||||
| `README.md` 的 `## 已知问题` | 每一行问题 → `fix_bug` 任务 | 2 |
|
||||
| `.py` 文件中的 `TODO/FIXME/HACK` | 注释 → `code_review` 任务 | 4 |
|
||||
| `CLAUDE.md` 含 ❌/⚠ 的行 | 约束违反 → `fix_bug` 任务 | 2 |
|
||||
| `projects.yaml` description 关键词 | 待修复/零检出 → `fix_bug`;FPS偏低 → `improve_perf` | 2/3 |
|
||||
| `CLAUDE.md` 含 `❌/⚠` 的行 | 约束违反 → `fix_bug` 任务 | 2 |
|
||||
| 兜底 | 每个项目固定生成定期代码巡检 | 5 |
|
||||
|
||||
自动跳过:`venv`, `.venv`, `.git`, `__pycache__`, `node_modules`, `build`, `dist`
|
||||
|
||||
### 架构优化版本管理
|
||||
|
||||
```
|
||||
arch_optimize 任务入队
|
||||
└─> ArchitectAgent._optimize()
|
||||
├─ ArchVersion.snapshot() # 备份当前 .py 文件
|
||||
├─ claude --dangerously-skip-permissions # 应用架构改动
|
||||
├─ pytest tests/ -q # 验证测试
|
||||
├─ 通过 → ArchVersion.promote() # 晋升
|
||||
└─ 失败 → ArchVersion.rollback() # 恢复备份
|
||||
```
|
||||
|
||||
```bash
|
||||
python scripts/run.py arch-versions yolo # 查看版本历史
|
||||
python scripts/run.py arch-restore yolo v001 # 手动恢复
|
||||
├─ ArchVersion.snapshot()
|
||||
├─ claude --dangerously-skip-permissions
|
||||
├─ pytest tests/ -q
|
||||
├─ 通过 → ArchVersion.promote()
|
||||
└─ 失败 → ArchVersion.rollback()
|
||||
```
|
||||
|
||||
## 添加新项目
|
||||
@@ -201,7 +176,6 @@ projects:
|
||||
my-project:
|
||||
path: /data/company/my-project # 省略则从 scan_dirs 自动发现
|
||||
mode: auto # auto | confirm | report
|
||||
description: "项目描述,含待修复/FPS偏低等关键词可自动生成任务"
|
||||
```
|
||||
|
||||
## 添加新 Agent
|
||||
@@ -216,52 +190,53 @@ projects:
|
||||
### configs/projects.yaml
|
||||
|
||||
```yaml
|
||||
scan_dirs: # 自动扫描目录(发现项目)
|
||||
scan_dirs:
|
||||
- /data/company
|
||||
exclude_projects: # 跳过的目录名(防止噪音)
|
||||
- /data/company/algo-base
|
||||
exclude_projects:
|
||||
- rknn-toolkit2
|
||||
projects: # 显式配置(可覆盖自动发现的项目)
|
||||
- agents
|
||||
projects:
|
||||
my-project:
|
||||
path: /data/company/my-project
|
||||
mode: confirm
|
||||
description: "项目描述"
|
||||
```
|
||||
|
||||
### configs/agents.yaml
|
||||
|
||||
```yaml
|
||||
scheduler:
|
||||
interval_hours: 1 # 扫描间隔
|
||||
max_concurrent: 3 # 全局最大并发
|
||||
interval_hours: 1
|
||||
max_concurrent: 3
|
||||
queues:
|
||||
project_delivery:
|
||||
db: data/tasks.db
|
||||
max_concurrent: 3
|
||||
scan_interval_hours: 1
|
||||
roles: # 仅执行此列表中角色的任务
|
||||
- developer
|
||||
- architect
|
||||
roles: [developer, architect, tester, rtp-researcher, ...]
|
||||
base_opt:
|
||||
db: data/base_opt_tasks.db
|
||||
max_concurrent: 2
|
||||
roles: [algo-antishake, algo-position, ...]
|
||||
insight:
|
||||
db: data/insight_tasks.db
|
||||
max_concurrent: 2
|
||||
roles: [planner, productizer, market-pm, ...]
|
||||
```
|
||||
|
||||
### configs/devices.yaml
|
||||
|
||||
```yaml
|
||||
devices:
|
||||
rk3566: # 算法默认验证设备
|
||||
type: linux
|
||||
connect: ssh
|
||||
rk3566:
|
||||
host: 192.168.123.183
|
||||
user: orangepi
|
||||
password: "orangepi"
|
||||
workspace: /home/orangepi/Desktop
|
||||
rk3588: # 高性能验证设备
|
||||
type: linux
|
||||
connect: ssh
|
||||
host: 192.168.123.181
|
||||
rk3588:
|
||||
host: 192.168.123.137
|
||||
user: pi
|
||||
password: "123123"
|
||||
password: "pi"
|
||||
workspace: /home/pi/Desktop
|
||||
pre_cmd: "clashon && clashproxy on"
|
||||
```
|
||||
|
||||
## 环境变量
|
||||
@@ -270,48 +245,34 @@ devices:
|
||||
|------|------|------|
|
||||
| `ANTHROPIC_API_KEY` | Claude API 密钥(已 `claude login` 则不需要) | 否 |
|
||||
| `FEISHU_WEBHOOK_URL` | 飞书 Webhook,任务结果通知 | 否 |
|
||||
| `FEISHU_BOT_TOKEN` | 飞书 Bot Token,confirm 模式 hook 审批需要 | 否 |
|
||||
| `DB_PATH` | 任务数据库路径(默认 `data/tasks.db`) | 否 |
|
||||
| `DASHBOARD_PORT` | Dashboard 端口(默认 8080) | 否 |
|
||||
|
||||
## API 端点参考
|
||||
|
||||
Dashboard 后端 FastAPI,主要端点:
|
||||
|
||||
| 方法 | 路径 | 说明 |
|
||||
|------|------|------|
|
||||
| GET | `/api/tasks` | 获取任务列表(支持 `?project=` 过滤) |
|
||||
| POST | `/api/tasks` | 创建任务(`queue` 字段路由到不同数据库) |
|
||||
| GET | `/api/tasks` | 获取任务列表 |
|
||||
| POST | `/api/tasks` | 创建任务(`queue` 字段路由) |
|
||||
| PATCH | `/api/tasks/{id}` | 更新优先级 |
|
||||
| POST | `/api/tasks/{id}/retry` | 重试失败任务 |
|
||||
| POST | `/api/tasks/{id}/cancel` | 取消任务 |
|
||||
| POST | `/api/tasks/{id}/approve` | 审批 waiting_approval 任务 |
|
||||
| POST | `/api/tasks/{id}/reject` | 拒绝任务(附原因) |
|
||||
| GET | `/api/projects` | 获取项目列表 |
|
||||
| POST | `/api/projects/import` | 导入新项目 |
|
||||
| DELETE | `/api/projects/{name}` | 删除项目 |
|
||||
| GET | `/api/projects/{name}/config` | 获取项目 CLAUDE.md / README.md |
|
||||
| PUT | `/api/projects/{name}/config/{type}` | 保存配置文件(`claude`/`readme`) |
|
||||
| POST | `/api/projects/{name}/refresh-claude-md` | 触发 architect 更新 CLAUDE.md |
|
||||
| GET | `/api/config/global` | 获取全局 CLAUDE.md |
|
||||
| PUT | `/api/config/global` | 保存全局 CLAUDE.md |
|
||||
| GET | `/api/market/facts` | 获取市场洞察 facts(`__market__.*`) |
|
||||
| POST | `/api/market/trigger/{goal}` | 触发市场洞察任务 |
|
||||
| GET | `/api/market/history` | 获取洞察任务历史 |
|
||||
| GET | `/api/research/facts` | 获取三专项调研 facts(`__research__.*`) |
|
||||
| GET | `/api/executor/status` | 执行器状态 |
|
||||
| POST | `/api/executor/start` | 启动执行器 |
|
||||
| POST | `/api/executor/stop` | 停止执行器 |
|
||||
| GET | `/api/market/facts` | 市场洞察 facts |
|
||||
| POST | `/api/market/trigger/{goal}` | 触发市场洞察 |
|
||||
| GET | `/api/research/facts` | 三专项调研 facts |
|
||||
| GET | `/api/daily/timeline` | 日报时间线 |
|
||||
| GET | `/api/daily/boss` | Boss 决策视图 |
|
||||
| GET | `/api/daily/dates` | 可用日期列表 |
|
||||
| GET | `/api/daily/scores` | Agent 评分 |
|
||||
|
||||
### 队列路由规则
|
||||
|
||||
`POST /api/tasks` 的 `queue` 字段:
|
||||
### 队列路由
|
||||
|
||||
| queue 值 | 路由到 | 典型 agent_role |
|
||||
|----------|--------|-----------------|
|
||||
| `project_delivery`(默认)| `data/tasks.db` | developer / architect |
|
||||
| `base_opt` | `data/base_opt_tasks.db` | rtp-researcher / kernel-analyzer / hw-engineer |
|
||||
| `insight` | `data/insight_tasks.db` | market-pm / planner / productizer |
|
||||
| `project_delivery`(默认)| `data/tasks.db` | developer / architect / boss / ops |
|
||||
| `base_opt` | `data/base_opt_tasks.db` | algo-* / hw-engineer / os-engineer |
|
||||
| `insight` | `data/insight_tasks.db` | market-* / planner / productizer |
|
||||
|
||||
## 项目记忆系统
|
||||
|
||||
@@ -320,34 +281,18 @@ Dashboard 后端 FastAPI,主要端点:
|
||||
| 层 | 读写规则 |
|
||||
|----|---------|
|
||||
| goals(目标) | 仅 productizer/architect 可写 |
|
||||
| facts(事实) | 任意 agent;architect 通过 `[记忆]` 标签写入 |
|
||||
| facts(事实) | 任意 agent;通过 `[记忆]` 标签写入 |
|
||||
| history(历史) | executor 每次任务完成/失败后自动写入 |
|
||||
|
||||
### 特殊 facts 命名约定
|
||||
|
||||
| key 前缀 | 写入者 | 用途 | Dashboard 展示位置 |
|
||||
|----------|--------|------|-------------------|
|
||||
| `__research__.rtp.*` | rtp-researcher | RTP/RTCP 调研结论 | 洞察页"基础技术调研" |
|
||||
| `__research__.net.*` | net-researcher | 网络栈调优结论 | 洞察页"基础技术调研" |
|
||||
| `__research__.kernel.*` | kernel-analyzer | 内核调度分析结论 | 洞察页"基础技术调研" |
|
||||
| `__market__.{goal}.*` | market-pm | 市场洞察结论(goal=运动/适老/AI安全) | 洞察页目标卡片 |
|
||||
| `__env__.*` | env-collector | 板端硬件/软件环境信息 | Agent 系统提示 |
|
||||
|
||||
```bash
|
||||
python scripts/run.py goals # 查看项目长期目标
|
||||
python scripts/run.py facts # 查看项目知识事实
|
||||
python scripts/run.py set-fact embedding api_port "8000"
|
||||
```
|
||||
|
||||
## Claude-WX 集成
|
||||
|
||||
| Agent 模式 | CLAUDE_WX_AGENT_MODE | 飞书行为 |
|
||||
|-----------|---------------------|---------|
|
||||
| `auto` | `trust` | 工具执行通知,不阻塞 |
|
||||
| `confirm` | `default` | 每个 Write/Edit/Bash 需飞书逐一审批 |
|
||||
| `report` | `silent` | 静默,只读工具无需通知 |
|
||||
|
||||
配置 `agents.yaml` 中的 `claude_wx_url` 后,Executor 在任务开始/结束时调用 `/agent/task-start` 和 `/agent/task-end` 更新飞书调度中心。
|
||||
| key 前缀 | 写入者 | Dashboard 展示 |
|
||||
|----------|--------|---------------|
|
||||
| `__research__.rtp.*` | rtp-researcher | 洞察页"基础技术调研" |
|
||||
| `__research__.net.*` | net-researcher | 洞察页"基础技术调研" |
|
||||
| `__research__.kernel.*` | kernel-analyzer | 洞察页"基础技术调研" |
|
||||
| `__market__.{goal}.*` | market-* | 洞察页目标卡片 |
|
||||
| `__env__.*` | env-collector | Agent 系统提示 |
|
||||
|
||||
## Watchdog
|
||||
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
# NMFS Agents
|
||||
|
||||
基于 Claude CLI 的 AI 项目自动化维护与调研系统,运行在 RK3588 NPU 开发平台上。
|
||||
支持代码修复、板端测试、成熟度评估、架构整合、市场洞察与基础技术调研。
|
||||
基于 Claude CLI 的 AI 多角色自动化系统。30+ Agent 协作完成代码修复、板端测试、
|
||||
成熟度评估、架构整合、市场洞察与基础技术调研。
|
||||
|
||||
## 组织架构
|
||||
|
||||
```
|
||||
AI 自动化平台
|
||||
Boss(战略决策,周报)
|
||||
│
|
||||
├── 基础技术组(base_opt + project_delivery 队列)
|
||||
├── 基础技术部(os-base-leader)
|
||||
│ ├── 架构设计 base-architect — 平台架构整合,跨组技术决策
|
||||
│ ├── 架构验证 base-validator — 基准测试,架构方案验证
|
||||
│ ├── 硬件工程 hw-engineer — 硬件选型,功耗/算力权衡
|
||||
@@ -18,68 +18,72 @@ AI 自动化平台
|
||||
│ ├── 系统测试 system-tester — 集成测试,端到端验证
|
||||
│ ├── 算法专项
|
||||
│ │ ├── algo-antishake 防抖算法(IMU/滤波/卡尔曼)
|
||||
│ │ ├── algo-position 定位算法(GNSS/视觉里程计)
|
||||
│ │ ├── algo-position 定位算法(UWB/BLE/视觉)
|
||||
│ │ └── algo-nav 导航算法(路径规划/避障)
|
||||
│ └── 技术专项(架构师/高级研发,有独立专项记忆)
|
||||
│ ├── rtp-researcher — RTP/RTCP 实时传输协议(__research__.rtp.*)
|
||||
│ ├── net-researcher — 网络栈优化调研(__research__.net.*)
|
||||
│ └── kernel-analyzer — 内核调度分析(__research__.kernel.*)
|
||||
│ ├── 技术调研(有独立专项记忆 __research__.*)
|
||||
│ │ ├── rtp-researcher — RTP/RTCP 实时传输协议
|
||||
│ │ ├── net-researcher — 网络栈优化
|
||||
│ │ └── kernel-analyzer — 内核调度分析
|
||||
│ └── 平台扩展
|
||||
│ ├── nrf-dev — nRF54L15 / BLE 5.4 / Zephyr(运动健康)
|
||||
│ └── esp32-dev — ESP32S3 / mmWave(适老辅助)
|
||||
│
|
||||
├── 项目交付组(project_delivery 队列,1h 扫描)
|
||||
│ ├── architect — 跨项目架构分析,技术债识别
|
||||
│ ├── developer — 代码修复/重构(含 dev-refactor/dev-embedded)
|
||||
│ └── tester — 本地 pytest + 板端 SSH 测试
|
||||
├── 市场洞察部(market-leader)
|
||||
│ ├── market-pm — 市场分析(通用)
|
||||
│ ├── market-sport — 运动健康专项
|
||||
│ ├── market-elder — 适老辅助专项
|
||||
│ └── market-safety — AI 安全专项
|
||||
│
|
||||
└── 产品洞察组(insight 队列,6h 扫描)
|
||||
├── planner — 差距分析,洞察任务规划
|
||||
├── productizer — 成熟度评估(100分制,规则引擎)
|
||||
├── market-pm — 市场分析,竞品调研,众筹追踪
|
||||
├── vision-analyst — 视觉效果分析,截图回归
|
||||
└── media-producer — 技术内容生产
|
||||
├── 项目交付部
|
||||
│ ├── architect — 跨项目架构分析
|
||||
│ ├── developer — 代码修复/重构
|
||||
│ ├── tester — 本地 pytest + 板端 SSH 测试
|
||||
│ ├── planner — 差距分析,洞察任务规划
|
||||
│ ├── productizer — 成熟度评估(100分制)
|
||||
│ ├── vision-analyst — 视觉效果分析
|
||||
│ └── media-producer — 技术内容生产
|
||||
│
|
||||
└── Ops(独立运营,星形枢纽)
|
||||
├── OpsAgent — 每日巡检,项目健康评分
|
||||
└── OpsHub — EventBus 事件消费 → 日报写入
|
||||
```
|
||||
|
||||
## 人员矩阵
|
||||
|
||||
| 角色 | 所属组 | 队列 | memory goals | memory facts | 设备访问 | 主要项目 |
|
||||
|------|--------|------|:---:|:---:|:---:|------|
|
||||
| base-architect | 基础技术 | base_opt | W | W | ─ | 跨平台架构 |
|
||||
| base-validator | 基础技术 | base_opt | R | W | rk3566/rk3588 | 算法验证 |
|
||||
| hw-engineer | 基础技术 | base_opt | R | W | ─ | 硬件设计 |
|
||||
| os-engineer | 基础技术 | base_opt | R | W | rk3566/rk3588 | OS 调优 |
|
||||
| dev-kernel | 基础技术 | base_opt | R | W | rk3566/rk3588 | 内核驱动 |
|
||||
| dev-lowlevel | 基础技术 | base_opt | R | W | rk3566/rk3588 | 嵌入式固件 |
|
||||
| system-tester | 基础技术 | base_opt | R | W | rk3566/rk3588 | 集成测试 |
|
||||
| algo-antishake | 基础技术 | base_opt | R | W | rk3566(默认)| algo-base |
|
||||
| algo-position | 基础技术 | base_opt | R | W | rk3566(默认)| algo-base |
|
||||
| algo-nav | 基础技术 | base_opt | R | W | rk3566(默认)| algo-base |
|
||||
| rtp-researcher | 基础技术 | project_delivery | R | W | ─ | rtp-research |
|
||||
| net-researcher | 基础技术 | project_delivery | R | W | ─ | net-research |
|
||||
| kernel-analyzer | 基础技术 | project_delivery | R | W | ─ | kernel-analysis |
|
||||
| architect | 项目交付 | project_delivery | W | W | ─ | 全项目 |
|
||||
| developer | 项目交付 | project_delivery | R | R | ─ | 全项目 |
|
||||
| tester | 项目交付 | project_delivery | R | R | rk3566/rk3588 | 全项目 |
|
||||
| planner | 产品洞察 | insight | R | W | ─ | insight |
|
||||
| productizer | 产品洞察 | insight | W | W | ─ | 全项目 |
|
||||
| market-pm | 产品洞察 | insight | R | W | ─ | 市场调研 |
|
||||
| vision-analyst | 产品洞察 | insight | R | W | rk3566/rk3588 | 视觉验证 |
|
||||
| media-producer | 产品洞察 | insight | R | R | ─ | 内容输出 |
|
||||
| 角色 | 所属组 | 队列 | memory | 设备 |
|
||||
|------|--------|------|:---:|:---:|
|
||||
| base-architect | 基础技术 | base_opt | W/W | ─ |
|
||||
| base-validator | 基础技术 | base_opt | R/W | rk3566/rk3588 |
|
||||
| hw-engineer | 基础技术 | base_opt | R/W | ─ |
|
||||
| os-engineer | 基础技术 | base_opt | R/W | rk3566/rk3588 |
|
||||
| dev-kernel | 基础技术 | base_opt | R/W | rk3566/rk3588 |
|
||||
| dev-lowlevel | 基础技术 | base_opt | R/W | rk3566/rk3588 |
|
||||
| system-tester | 基础技术 | base_opt | R/W | rk3566/rk3588 |
|
||||
| algo-antishake | 基础技术 | base_opt | R/W | rk3566 |
|
||||
| algo-position | 基础技术 | base_opt | R/W | rk3566 |
|
||||
| algo-nav | 基础技术 | base_opt | R/W | rk3566 |
|
||||
| rtp-researcher | 基础技术 | project_delivery | R/W | ─ |
|
||||
| net-researcher | 基础技术 | project_delivery | R/W | ─ |
|
||||
| kernel-analyzer | 基础技术 | project_delivery | R/W | ─ |
|
||||
| nrf-dev | 基础技术 | project_delivery | R/W | ─ |
|
||||
| esp32-dev | 基础技术 | project_delivery | R/W | ─ |
|
||||
| architect | 项目交付 | project_delivery | W/W | ─ |
|
||||
| developer | 项目交付 | project_delivery | R/R | ─ |
|
||||
| tester | 项目交付 | project_delivery | R/R | rk3566/rk3588 |
|
||||
| planner | 产品洞察 | insight | R/W | ─ |
|
||||
| productizer | 产品洞察 | insight | W/W | ─ |
|
||||
| market-pm | 市场洞察 | insight | R/W | ─ |
|
||||
| market-sport | 市场洞察 | insight | R/W | ─ |
|
||||
| market-elder | 市场洞察 | insight | R/W | ─ |
|
||||
| market-safety | 市场洞察 | insight | R/W | ─ |
|
||||
| vision-analyst | 产品洞察 | insight | R/W | rk3566/rk3588 |
|
||||
| media-producer | 产品洞察 | insight | R/R | ─ |
|
||||
| boss | 管理层 | project_delivery | R/W | ─ |
|
||||
| os-base-leader | 管理层 | project_delivery | R/W | ─ |
|
||||
| senior-dev | 管理层 | project_delivery | R/W | ─ |
|
||||
| ops | 独立运营 | project_delivery | R/W | ─ |
|
||||
|
||||
> W=可写 R=只读 ─=不访问 | 设备栏:rk3566=192.168.123.183,rk3588=192.168.123.181
|
||||
|
||||
## 托管项目
|
||||
|
||||
| 项目 | 路径 | 模式 | 主要负责组 |
|
||||
|------|------|------|-----------|
|
||||
| yolo | /data/company/yolo | confirm | 项目交付 |
|
||||
| mediapipe | /data/company/mediapipe | auto | 项目交付 |
|
||||
| embedding | /data/company/embedding | report | 项目交付 |
|
||||
| info-privacy | /data/company/info-privacy | confirm | 项目交付 |
|
||||
| logodetect-x86 | /data/company/logodetect-x86 | auto | 项目交付 |
|
||||
| rtp-research | /data/company/os-base/rtp-research | auto | 调研 |
|
||||
| net-research | /data/company/os-base/net-research | auto | 调研 |
|
||||
| kernel-analysis | /data/company/os-base/kernel-analysis | auto | 调研 |
|
||||
| claude-wx | /data/company/claude-wx | auto | 项目交付 |
|
||||
| ui-tars | /data/company/ui-tars | auto | 基础技术 |
|
||||
> memory 格式:goals/facts(W=可写 R=只读)| 设备:rk3566=192.168.123.183,rk3588=192.168.123.137
|
||||
|
||||
## 快速开始
|
||||
|
||||
@@ -93,33 +97,28 @@ python scripts/run.py status # 查看任务状态
|
||||
|
||||
## 工作原理
|
||||
|
||||
系统有两条触发路径,均汇入同一个三队列执行引擎:
|
||||
|
||||
```
|
||||
┌─ Web Dashboard(主操作入口,http://localhost:9080)────────────────────────┐
|
||||
│ 提交需求(修复/重构/文档) → project_delivery 队列 → developer/architect│
|
||||
│ 技术攻关(RTP/网络/内核) → base_opt 队列 → 专项研究 Agent │
|
||||
│ 触发市场洞察 → insight 队列 → market-pm/planner │
|
||||
│ 刷新项目指导(CLAUDE.md) → project_delivery 队列 → architect 分析写入 │
|
||||
└────────────────────────────────────────────────────────────────────────────┘
|
||||
┌─ Web Dashboard(http://localhost:9080)──────────────────────────────────┐
|
||||
│ 提交需求 → project_delivery 队列 → developer/architect │
|
||||
│ 技术攻关 → base_opt 队列 → 专项研究 Agent │
|
||||
│ 触发市场洞察 → insight 队列 → market-*/planner │
|
||||
│ 查看日报 → /api/daily/* → 时间线 + Boss 决策视图 │
|
||||
└──────────────────────────────────────────────────────────────────────────┘
|
||||
|
||||
┌─ APScheduler(定时自动)───────────────────────────────────────────────────┐
|
||||
│ Scanner 扫描 README/TODO/CLAUDE.md → 自动入对应队列(1h/6h 间隔) │
|
||||
└────────────────────────────────────────────────────────────────────────────┘
|
||||
┌─ APScheduler(定时自动)────────────────────────────────────────────────┐
|
||||
│ Scanner 扫描 → 自动入对应队列 | Boss 周报 | Ops 巡检 | 调研/算法轮次 │
|
||||
└──────────────────────────────────────────────────────────────────────────┘
|
||||
|
||||
↓ 三队列并发执行
|
||||
↓ 三队列并发执行 + EventBus 事件广播
|
||||
|
||||
project_delivery(tasks.db) ─> developer / architect / tester
|
||||
base_opt(base_opt_tasks.db) ─> 算法专项 / 调研 / 硬件优化 Agent
|
||||
insight(insight_tasks.db) ─> market-pm / planner / productizer
|
||||
project_delivery(tasks.db) ─> developer / architect / tester / boss / ops
|
||||
base_opt(base_opt_tasks.db) ─> 算法 / 调研 / 硬件优化 Agent
|
||||
insight(insight_tasks.db) ─> market-* / planner / productizer
|
||||
|
||||
↓ 调研结论写入 ProjectMemory
|
||||
↓ EventBus(Redis Streams)→ OpsHub → DailyReport
|
||||
|
||||
__research__.rtp.* / __research__.net.* / __research__.kernel.*
|
||||
└─> Dashboard"基础技术调研"区块自动展示
|
||||
|
||||
__market__.{goal}.*(运动 / 适老 / AI安全)
|
||||
└─> Dashboard"市场洞察"目标卡片自动更新
|
||||
任务完成/失败 → publish_task_done/failed → 5 consumer groups 消费
|
||||
Ops 日报自动聚合 → Dashboard 日报 Tab 展示
|
||||
```
|
||||
|
||||
## 执行模式
|
||||
|
||||
+45
-33
@@ -1,52 +1,69 @@
|
||||
# Release Notes
|
||||
|
||||
## v0.6.0(2026-03-10)
|
||||
|
||||
### 新增
|
||||
- **组织架构 v2**:Boss / GroupLeader / SeniorDev / Ops 四层管理,org.yaml 配置
|
||||
- **EventBus**:Redis Streams 事件总线,5 consumer groups(ops-hub/leader-*/boss)
|
||||
- **OpsHub**:事件消费星形枢纽,纯逻辑快速消费 → DailyReport 写入
|
||||
- **DailyReport**:append-only 日报(时间线 + Boss 决策视图),Dashboard 日报 Tab
|
||||
- **AgentScorer**:4 维 Agent 评分(完成度 40% + 质量 30% + 自主性 20% + 协作 10%)
|
||||
- **VersionPipeline 反幻觉门控**:dev agent 只能 start_testing,tester 才能 mark_done/mark_failed
|
||||
- **平台扩展 Agent**:NrfDevAgent(nRF54L15/BLE/Zephyr)、Esp32DevAgent(ESP32S3/mmWave)
|
||||
- **市场专项化**:MarketSportAgent / MarketElderAgent / MarketSafetyAgent 三专项拆分
|
||||
- **Executor EventBus 集成**:任务完成/失败/崩溃自动发布事件
|
||||
- **Scheduler EventBus 注入**:Redis 可用时自动创建 EventBus,不可用时降级
|
||||
- **KnowledgeBase**:组织架构 + 项目 facts 聚合,Boss/Leader 上下文注入
|
||||
- **Dashboard Markdown 渲染修复**:react-markdown + remark-gfm 替代 `<pre>` 标签
|
||||
|
||||
### 修复
|
||||
- Executor 崩溃路径缺少 EventBus 事件发布
|
||||
- OpsHub 类型注解缺失
|
||||
- `import redis` 从函数体移至文件顶部(try/except 保护)
|
||||
|
||||
## v0.5.0(2026-03-09)
|
||||
|
||||
### 新增
|
||||
- **三专项独立项目**:rtp-research / net-research / kernel-analysis 从 os-base 拆分为独立项目,各有独立工作目录
|
||||
- **executor 修复**:agent 返回 `status="failed"` 时正确调用 `mark_failed()`,不再错误标记为完成
|
||||
- **task_logs 权限修复**:chown 解决 daemon 以 qiurui 运行但目录 root 所有导致的 Permission denied
|
||||
- **三专项独立项目**:rtp-research / net-research / kernel-analysis 独立工作目录
|
||||
- **executor 修复**:agent 返回 `status="failed"` 时正确调用 `mark_failed()`
|
||||
- **task_logs 权限修复**:chown 解决 Permission denied
|
||||
|
||||
## v0.4.0(2026-03-09)
|
||||
|
||||
### 新增
|
||||
- **多队列调度**:project_delivery / base_opt / insight 三队列独立 DB、独立并发、独立扫描间隔
|
||||
- **Dashboard Web UI**:FastAPI + React 看板,WebSocket 实时推送,支持 KanbanBoard / InsightView / ConfigView / VisualView
|
||||
- **市场洞察(InsightView)**:planner/productizer/vision-analyst/media-producer 角色,前端触发
|
||||
- **多队列调度**:project_delivery / base_opt / insight 三队列独立 DB
|
||||
- **Dashboard Web UI**:FastAPI + React 看板,WebSocket 实时推送
|
||||
- **市场洞察(InsightView)**:planner/productizer/vision-analyst/media-producer
|
||||
- **三专项 Agent**:RtpResearcherAgent / NetResearcherAgent / KernelAnalyzerAgent
|
||||
- **Dashboard Docker 部署**:`nmfs-agents-dashboard:latest`,端口 9080
|
||||
- **rk3566 设备接入**:算法任务默认用 rk3566(192.168.123.183)验证,rk3588 作为高性能备选
|
||||
- **rk3566 设备接入**:算法任务默认用 rk3566(192.168.123.183)
|
||||
|
||||
### 修复
|
||||
- confirm 模式改为 hook 级审批(claude-wx),移除 task-level 审批卡
|
||||
- visual_tester pip install 后 sys.path 未更新导致 Visual 标签 404
|
||||
- confirm 模式改为 hook 级审批(claude-wx)
|
||||
- visual_tester sys.path 未更新导致 Visual 标签 404
|
||||
|
||||
## v0.3.0(2026-03-07)
|
||||
|
||||
### 新增
|
||||
- **Watchdog**:core/watchdog.py,60s 间隔检查,running 超 2h → failed,pending 超 2h 提升优先级
|
||||
- **Task 字段扩展**:initiator(任务发起人)、discussion(沟通纪要)
|
||||
- **Dashboard 会议纪要风格**:TaskDetail 参与人区 / 沟通纪要区 / 时间线
|
||||
- **TaskCard 重设计**:P1-P5 优先级徽章 + 类型标签 + 发起人→执行者链 + 计时
|
||||
- **claude-wx 集成**:DeveloperAgent 自动注入 CLAUDE_WX_AGENT_MODE / CLAUDE_WX_AGENT,调度中心 task-start/end 事件
|
||||
- **Watchdog**:60s 间隔检查,running 超 2h → failed,pending 超 2h 提升优先级
|
||||
- **Task 字段扩展**:initiator / discussion
|
||||
- **claude-wx 集成**:DeveloperAgent 自动注入 CLAUDE_WX_AGENT_MODE
|
||||
|
||||
### 修复
|
||||
- `queue.py mark_vetoed()`:retry_count 从 SQLite 读取后类型为字符串,修复 int() 转换
|
||||
- `queue.py mark_vetoed()`:retry_count 类型转换修复
|
||||
|
||||
## v0.2.0(2026-03-05)
|
||||
|
||||
### 新增
|
||||
- **ProjectMemory**:SQLite 三层记忆(goals/facts/history),architect 写目标/事实,executor 写历史
|
||||
- **EnvCollector**:SSH 采集板端模型/包/磁盘信息,注入 Agent 上下文
|
||||
- **ArchVersion**:架构优化快照 → 测试 → promote/rollback 循环
|
||||
- **ProjectDiscovery**:非硬编码项目发现,扫描父目录或单项目目录
|
||||
- **os-base 虚拟项目**:基础技术组 RTP/网络/内核调研,任务由调度器直接入队
|
||||
- **exclude_projects**:projects.yaml 支持黑名单,防止大型 SDK 产生噪音
|
||||
- **algo-base 迁移**:算法专项项目迁移至 /data/company/algo-base
|
||||
- **ProjectMemory**:SQLite 三层记忆(goals/facts/history)
|
||||
- **EnvCollector**:SSH 采集板端环境信息
|
||||
- **ArchVersion**:快照 → 测试 → promote/rollback
|
||||
- **ProjectDiscovery**:非硬编码项目发现
|
||||
- **exclude_projects**:projects.yaml 黑名单
|
||||
|
||||
### 修复
|
||||
- paramiko lazy init:`_get_client()` 延迟创建 client,解决 SOCKS 代理不兼容问题
|
||||
- asyncio 兼容:改用 `get_running_loop().run_in_executor()`
|
||||
- paramiko lazy init(SOCKS 代理兼容)
|
||||
- asyncio `get_running_loop().run_in_executor()`
|
||||
|
||||
## v0.1.0(2026-02-27)
|
||||
|
||||
@@ -54,18 +71,13 @@
|
||||
- **多角色 Agent 体系**:Developer / Tester / Productizer / Architect / Manager
|
||||
- **Claude CLI 驱动**:`claude --print` 子进程,CLI OAuth 认证
|
||||
- **三种执行模式**:auto / confirm / report
|
||||
- **SQLite 任务队列**:原子 dequeue(BEGIN EXCLUSIVE),优先级排序,去重
|
||||
- **APScheduler 定时调度**:每小时扫描 + asyncio Semaphore 并发
|
||||
- **飞书集成**:Webhook 通知 + HTTP Callback Server
|
||||
- **SSH Device Agent**:rsync 同步 + 板端 pytest 验证
|
||||
|
||||
### 托管项目(初始)
|
||||
yolo(confirm)、mediapipe(auto)、embedding(report)、info-privacy(confirm)、logodetect-x86(auto)
|
||||
- **SQLite 任务队列**:原子 dequeue,优先级排序,去重
|
||||
- **APScheduler 定时调度**
|
||||
- **飞书集成** + **SSH Device Agent**
|
||||
|
||||
### 发布检查清单
|
||||
|
||||
- [ ] `pytest tests/ -q` 全部通过
|
||||
- [ ] `claude --version` 可用,已通过 `claude login` 认证
|
||||
- [ ] `configs/agents.yaml` model 字段正确
|
||||
- [ ] 设备连通性:`ssh orangepi@192.168.123.183 echo ok` / `ssh pi@192.168.123.181 echo ok`
|
||||
- [ ] 飞书 Webhook 有效(可选)
|
||||
- [ ] 设备连通性:`ssh orangepi@192.168.123.183 echo ok`
|
||||
|
||||
@@ -117,7 +117,7 @@ export function ImportProjectModal({ onClose }: Props) {
|
||||
value={form.path}
|
||||
onChange={e => handlePathChange(e.target.value)}
|
||||
className={inputCls}
|
||||
placeholder="/data/rockchip/my-project"
|
||||
placeholder="/data/company/my-project"
|
||||
/>
|
||||
</Row>
|
||||
<Row label="项目名称">
|
||||
|
||||
+3
-3
@@ -3,8 +3,8 @@
|
||||
24小时项目自动化运行测试 - 基于 Playwright 浏览器自动化
|
||||
|
||||
用法:
|
||||
python scripts/test_24h.py --hours 24 --project /data/rockchip/logodetect-x86
|
||||
python scripts/test_24h.py --hours 1 --project /data/rockchip/logodetect-x86 --dry-run
|
||||
python scripts/test_24h.py --hours 24 --project /data/company/algo-base/logodetect-x86
|
||||
python scripts/test_24h.py --hours 1 --project /data/company/algo-base/logodetect-x86 --dry-run
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
@@ -318,7 +318,7 @@ def generate_report(
|
||||
|
||||
def main() -> None:
|
||||
parser = argparse.ArgumentParser(description="24h 项目自动化运行测试")
|
||||
parser.add_argument("--project", default="/data/rockchip/logodetect-x86",
|
||||
parser.add_argument("--project", default="/data/company/algo-base/logodetect-x86",
|
||||
help="项目目录路径")
|
||||
parser.add_argument("--linked", default="/data/test-platform/logo-collect",
|
||||
help="关联项目路径(用于集成任务)")
|
||||
|
||||
@@ -39,9 +39,9 @@ class ProjectDiscovery:
|
||||
"""Discover Claude-managed projects under a directory tree.
|
||||
|
||||
Supports two usage patterns:
|
||||
- Parent directory (e.g. /data/rockchip): scans subdirectories,
|
||||
- Parent directory (e.g. /data/company): scans subdirectories,
|
||||
returns all subdirs that look like Claude projects.
|
||||
- Single project dir (e.g. /data/rockchip/yolo): returns that project
|
||||
- Single project dir (e.g. /data/company/yolo): returns that project
|
||||
directly, ignoring subdirectories.
|
||||
|
||||
Embedded vs host detection uses keyword heuristics on CLAUDE.md,
|
||||
|
||||
@@ -7,7 +7,7 @@ from nmfs_agents.config import load_config, AgentsConfig
|
||||
|
||||
def _write_base_yamls(tmp_path: Path, projects_extra: str = "") -> None:
|
||||
(tmp_path / "projects.yaml").write_text(
|
||||
"projects:\n yolo:\n path: /data/rockchip/yolo\n mode: confirm\n"
|
||||
"projects:\n yolo:\n path: /data/company/yolo\n mode: confirm\n"
|
||||
+ projects_extra
|
||||
)
|
||||
(tmp_path / "agents.yaml").write_text(
|
||||
@@ -26,7 +26,7 @@ def test_load_config_returns_typed_config(tmp_path):
|
||||
cfg = load_config(tmp_path)
|
||||
assert "yolo" in cfg.projects
|
||||
assert cfg.projects["yolo"].mode == "confirm"
|
||||
assert cfg.projects["yolo"].path == Path("/data/rockchip/yolo")
|
||||
assert cfg.projects["yolo"].path == Path("/data/company/yolo")
|
||||
assert cfg.scheduler.interval_hours == 1
|
||||
assert cfg.claude.model == "claude-sonnet-4-6"
|
||||
assert "rk3588" in cfg.devices
|
||||
|
||||
@@ -10,14 +10,14 @@ from nmfs_agents.tools.project_memory import ProjectMemory
|
||||
def test_collect_local_env_vars(tmp_path):
|
||||
"""collect_local 应收集含 MODEL/RKNN/ONNX 关键词的环境变量。"""
|
||||
env = {
|
||||
"RKNN_MODEL_PATH": "/data/rockchip/models",
|
||||
"RKNN_MODEL_PATH": "/data/company/models",
|
||||
"HOME": "/home/pi",
|
||||
"ONNX_WEIGHT_DIR": "/data/weights",
|
||||
}
|
||||
with patch.dict(os.environ, env, clear=True):
|
||||
col = EnvCollector()
|
||||
facts = col.collect_local(scan_dirs=[])
|
||||
assert facts.get("local.envvar.RKNN_MODEL_PATH") == "/data/rockchip/models"
|
||||
assert facts.get("local.envvar.RKNN_MODEL_PATH") == "/data/company/models"
|
||||
assert facts.get("local.envvar.ONNX_WEIGHT_DIR") == "/data/weights"
|
||||
assert "local.envvar.HOME" not in facts
|
||||
|
||||
|
||||
Reference in New Issue
Block a user