Skip to content

Latest commit

 

History

History
188 lines (149 loc) · 4.5 KB

File metadata and controls

188 lines (149 loc) · 4.5 KB

Phase 1 Quick Reference

✅ 完成状态

所有 7 个 P0 问题已修复

任务 文件 行数 测试 状态
1.1 API 入口 agentManager/api.py 320 15 ✅
1.2 包发现 pyproject.toml 60 -
1.3 DAG 循环检测 agentManager/engine/dag.py 180 13 ✅
1.4 Scheduler 死循环 agentManager/engine/scheduler.py 190 17 ✅
1.5 StateMachine HITL agentManager/engine/state_manager.py 160 12 ✅
1.6 EventBus wildcard agentManager/engine/event_bus.py 130 9 ✅
1.7 Prometheus 配置 monitoring/prometheus.yml 15 -

总计:66 个测试通过(100%)


🚀 快速开始

安装

cd /home/zld/allProject/agentManager
pip install -e .

运行测试

pytest tests/unit/test_dag_engine.py -v
pytest tests/unit/test_state_manager.py -v
pytest tests/unit/test_event_bus.py -v
pytest tests/unit/test_scheduler.py -v
pytest tests/unit/test_api.py -v

启动 API

python -m uvicorn agentManager.api:app --host 127.0.0.1 --port 8000

测试 API

curl http://127.0.0.1:8000/health
curl http://127.0.0.1:8000/status

📚 核心模块 API

DAG 引擎

from agentManager.engine import DAGEngine, DAGNode, TaskStatus

engine = DAGEngine()
node = DAGNode(node_id="task_1", task_type="type1")
engine.add_node(node)
engine.add_edge("task_1", "task_2")  # 自动检测循环
ready = engine.get_ready_nodes()

状态机

from agentManager.engine import StateMachine, TaskState

sm = StateMachine()
sm.initialize("task_1", TaskState.PENDING)
sm.transition("task_1", TaskState.READY)
sm.transition("task_1", TaskState.BLOCKED_HITL)  # 紧急转换

事件总线

from agentManager.engine import EventBus, Event, EventType

bus = EventBus()
bus.subscribe(EventType.TASK_COMPLETED, callback)
bus.subscribe(EventType.TASK_COMPLETED, callback, workflow_id=None)  # 全局
event = Event(event_id="e1", event_type=EventType.TASK_COMPLETED, workflow_id="wf1")
bus.publish(event)

调度器

from agentManager.engine import SchedulerEngine

scheduler = SchedulerEngine(max_concurrent_tasks=10)
scheduler.add_task("task_1", priority=5, dependencies=["task_0"])
scheduler.execute_scheduled_tasks()
scheduler.mark_completed("task_1")

FastAPI

# 创建任务
curl -X POST http://localhost:8000/tasks \
  -H "Content-Type: application/json" \
  -d '{"node_id":"task_1","task_type":"type1"}'

# 获取就绪任务
curl http://localhost:8000/tasks/ready

# 完成任务
curl -X POST http://localhost:8000/tasks/task_1/complete

🔧 关键修复

1. DAG 循环检测

# 修复前:topological_sort() 返回生成器,不消费不检测
# 修复后:
if not nx.is_directed_acyclic_graph(self.graph):
    raise ValueError("Cycle detected")

2. Scheduler 死循环

# 修复前:冲突任务立即重新入队
# 修复后:
deferred = []
for item in deferred:
    heapq.heappush(self.execution_queue, item)

3. StateMachine HITL

# 修复前:只允许 BLOCKED_REPAIR -> BLOCKED_HITL
# 修复后:任何非终态都能进入 BLOCKED_HITL
emergency_transition = (
    new_state in [TaskState.BLOCKED_HITL, TaskState.COMPLETED, TaskState.FAILED]
    and current_state not in [TaskState.COMPLETED, TaskState.BLOCKED_HITL]
)

4. EventBus 全局订阅

# 修复前:只触发精确订阅
# 修复后:同时触发精确和通配符
keys = [
    f"{event.event_type.value}:{event.workflow_id}",
    f"{event.event_type.value}:*",
]

📊 测试覆盖

  • DAG: 节点、边、循环、拓扑排序、就绪发现
  • StateMachine: 初始化、转换、历史、紧急 HITL
  • EventBus: 订阅、发布、过滤、通配符、异常处理
  • Scheduler: 任务、冲突、backoff、并发限制
  • API: 创建、查询、完成、失败、错误处理

🎯 下一步

第二阶段(1 周):文档与代码一致性

  • 更新 README.md
  • 重写 API 文档
  • 删除虚假报告
  • 清理依赖

第三阶段(2-3 周):核心模块补齐

  • EventBus Redis Streams
  • TaskExecutor 执行闭环
  • RecoveryEngine 真实恢复
  • Memory 三层设计
  • DefectRepair 流水线

第四阶段(2-3 周):生产安全

  • Docker 沙箱加固
  • 密钥管理
  • Prometheus metrics
  • GitHub Actions CI/CD

Status: Phase 1 ✅ Complete
Tests: 66/66 ✅
Commit: Phase 1 P0 Core Modules
Date: 2026-05-24