87 lines
4.6 KiB
Markdown
87 lines
4.6 KiB
Markdown
|
|
# Agent调度器
|
|||
|
|
|
|||
|
|
下一轮指引: 完成后→与GH-API-001对接 · Agent通过API领取工单而非直接查DB
|
|||
|
|
仓库路径: /guanghu-self-hosted/agent-scheduler/
|
|||
|
|
优先级: P0
|
|||
|
|
分支名: feat/gh-agent-scheduler
|
|||
|
|
创建时间: 2026年4月25日 15:30
|
|||
|
|
审核结果: ✅ 审核通过 · 霜砚AG-SY-WEB-001
|
|||
|
|
|
|||
|
|
【审核时间】2026-04-25T15:42 CST
|
|||
|
|
【分支】feat/gh-agent-scheduler @ qinfendebingshuo/guanghulab
|
|||
|
|
【文件】9/9全部存在且语法正确
|
|||
|
|
|
|||
|
|
【逐项检查】
|
|||
|
|
✅ files_exist: 9文件全齐(http://scheduler.py 14048B / boot_http://integration.py 4117B / llm_http://client.py 6875B / git_http://ops.py 6428B / self_http://checker.py 9438B / http://config.py 3134B / test_http://scheduler.py 8305B / requirements.txt 146B / http://README.md 3978B)
|
|||
|
|
✅ python_syntax: http://7个.py文件AST解析通过
|
|||
|
|
✅ asyncio: 全异步架构(asyncio.wait_for超时 / asyncio.create_subprocess_exec / httpx.AsyncClient)
|
|||
|
|
✅ boot_protocol: boot_http://integration.py正确读取L-1层身份 · 优雅降级到默认值
|
|||
|
|
✅ tool_receipt: record_receipt()回执stub就绪 · Phase-0日志输出 · Phase-1+对接API
|
|||
|
|
✅ llm_retry: 3次重试 + 指数退避(2^attempt秒) · 错误兜底LLMResponse
|
|||
|
|
✅ dual_model_stub: route_expression(Kimi) / route_reasoning(DeepSeek) 预留
|
|||
|
|
✅ git_ops: clone/checkout/add/commit/push全异步 · commit格式[{编号}] {标题}
|
|||
|
|
✅ directory_isolation: SelfChecker._check_directory_isolation强制隔离
|
|||
|
|
✅ prefix: GH-SCHED-001贯穿所有文件docstring
|
|||
|
|
✅ timeout: WORK_ORDER_TIMEOUT=1800s(30min) + asyncio.wait_for
|
|||
|
|
✅ logging: 5级层级logger(agent-scheduler / .boot / .llm / .git / .selfcheck)
|
|||
|
|
✅ tests: 10条用例覆盖config/boot/llm/selfcheck核心路径
|
|||
|
|
|
|||
|
|
【轻微建议(不阻塞)】
|
|||
|
|
⚠️ requirements.txt含pydantic/uvicorn但代码未import · 建议下轮清理
|
|||
|
|
|
|||
|
|
【结论】全部约束满足 · 代码质量合格 · 架构清晰 · 准予合体
|
|||
|
|
开发内容: 【目标】Agent调度引擎 · 让半体能在光湖服务器上自主接单开发
|
|||
|
|
|
|||
|
|
【技术栈】Python 3.10+ · asyncio
|
|||
|
|
|
|||
|
|
【核心流程】
|
|||
|
|
1. 启动: 调用Boot Protocol(Phase-0-001/006)加载Agent人格
|
|||
|
|
2. 轮询: 查询work_orders表中status=pending且assigned_agent=自己的工单
|
|||
|
|
3. 领取: 更新status→developing · 写execution_log
|
|||
|
|
4. 执行:
|
|||
|
|
a. 读取工单dev_content+constraints
|
|||
|
|
b. 调用LLM API生成代码(预留双模型接口: Kimi表达/DeepSeek推理)
|
|||
|
|
c. 写入文件到仓库路径
|
|||
|
|
d. Git操作: checkout分支→add→commit→push
|
|||
|
|
5. 自检: 运行约束检查→更新self_check_result→status=self_checking→reviewing
|
|||
|
|
6. 回执: 调用tool-receipt(Phase-0-005)记录操作日志
|
|||
|
|
|
|||
|
|
【LLM集成】
|
|||
|
|
- llm_http://client.py: 统一封装 · 支持OpenAI兼容API
|
|||
|
|
- 环境变量: LLM_API_KEY / LLM_BASE_URL / LLM_MODEL
|
|||
|
|
- 预留双模型路由stub(Phase 2实现L1层时替换)
|
|||
|
|
|
|||
|
|
【Git集成】
|
|||
|
|
- git_http://ops.py: clone/checkout/add/commit/push
|
|||
|
|
- 环境变量: GITHUB_TOKEN / REPO_URL
|
|||
|
|
- commit message格式: [{工单编号}] {描述}
|
|||
|
|
|
|||
|
|
【交付物】
|
|||
|
|
- http://scheduler.py(主循环) / boot_http://integration.py(Boot Protocol对接) / llm_http://client.py(LLM封装) / git_http://ops.py(Git操作) / self_http://checker.py(自检引擎) / http://config.py / requirements.txt / http://README.md
|
|||
|
|
状态: 已完成
|
|||
|
|
约束: Python 3.10+ · asyncio · 依赖boot-protocol+tool-receipt模块(import路径) · 无外部商业依赖 · 日志完整(logging模块) · 超时控制(单工单最长30min) · 重试机制(LLM调用3次) · 目录隔离 · 编号前缀GH-SCHED · 测试: 至少8条用例
|
|||
|
|
编号: GH-SCHED-001
|
|||
|
|
自检结果: ⚡ 自动唤醒确认 · 培园A04 · 2026-04-25T15:46+08:00
|
|||
|
|
|
|||
|
|
□ 检查1 ✅ 触发器正常
|
|||
|
|
□ 检查2 ✅ 工单数据库正常
|
|||
|
|
□ 检查3 ⚠️ GitHub访问正常·/guanghu-self-hosted/在main不存在(预期)
|
|||
|
|
□ 检查4 ✅ 指令页已更新
|
|||
|
|
□ 检查5 ✅ 自动唤醒正常
|
|||
|
|
负责Agent: 培园A04
|
|||
|
|
阶段编号: Phase-NOW-004
|
|||
|
|
|
|||
|
|
<aside>
|
|||
|
|
🏗️
|
|||
|
|
|
|||
|
|
**⚠️ 必读规则 · Agent被唤醒后第一步**
|
|||
|
|
|
|||
|
|
被唤醒后,**必须先读系统架构文档**,理解整个系统,确认工单属于哪一层,理解这一层的WHY,带着WHY再开始工作。
|
|||
|
|
|
|||
|
|
**不是读懂字,是理解系统。从架构出发。**
|
|||
|
|
|
|||
|
|
👉 系统架构:[🏗️ 光湖自研系统架构 · HLDP-ARCH-001 · 人格体自主运行基础设施](../../%F0%9F%8F%97%EF%B8%8F%20%E5%85%89%E6%B9%96%E8%87%AA%E7%A0%94%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84%20%C2%B7%20HLDP-ARCH-001%20%C2%B7%20%E4%BA%BA%E6%A0%BC%E4%BD%93%E8%87%AA%E4%B8%BB%E8%BF%90%E8%A1%8C%E5%9F%BA%E7%A1%80%E8%AE%BE%E6%96%BD%20b84374415ad74f59accfd036524dd189.md)
|
|||
|
|
|
|||
|
|
流程:读架构 → 确认工单属于哪一层 → 理解WHY → 带着WHY开发/审核
|
|||
|
|
|
|||
|
|
</aside>
|