# 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>