执行人:Atlas🐻 | 日期:2026-03-07 | 状态:COMPLETED
路径:09-虚拟办公区系统/task_router.py
行数:~170行
核心函数:
- recommend_model(task_title, task_type, agent_name) -> str:关键词+精确匹配双通路路由
- get_fallback_models(model_name) -> list:查询模型降级链
- get_budget_info(agent_name) -> dict:预算信息查询(Phase 1 配置读取)
- reload_rules():热重载规则缓存
设计亮点: - 规则从 litellm_config.yaml 懒加载并缓存,重启即刷新,无需手动同步 - 纯函数式,无副作用,可直接单元测试 - Pass 1(task_type 精确匹配)优先于 Pass 2(关键词模糊匹配),减少误判
路径:00-系统配置/agent_budgets.yaml
覆盖:23人(22名数字员工 + Emory外部协作)
分级:
- 顶端级 50K/月:Coco、Nova、Sage
- 标准级 200K/月:Atlas、Pixel、Max、Ryan、Luna、Nathan、Elena、Cipher、Alex、Sophie、Emma、David、Michael、Frida、Vega、Iris、Zoe
- 快速采集级 500K/月:Hunter、Oliver、Emory
- alert_at 均为 monthly_limit 的 80%
位置:在 router_settings 块内,fallbacks 之前
新增内容:router_rules 节,5条规则:
| task_type | 关键词示例 | 推荐模型 | fallback |
|-----------|-----------|---------|---------|
| code_generation | 代码/重构/Flask/python | deepseek-v3 | qwen3-max, glm-5 |
| frontend_ui | HTML/CSS/Canvas/SVG | gemini-3.1-pro | glm-4.6, glm-5 |
| content_writing | 文章/撰稿/报告/脚本 | glm-5 | gemini-3.1-pro, glm-4.6 |
| data_collection | 采集/抓取/格式转换 | glm-4-flash | gemini-2.5-flash, glm-4.5-air |
| strategic_analysis | 战略/架构/投资/风险 | deep-research-pro | gemini-3.1-pro, glm-5 |
兼容性确认:原有 fallbacks 节完整保留,未做任何修改。
修改点:
- 文件顶部:from task_router import recommend_model as _recommend_model,带 try/except 降级保护
- _dispatch_task_inner() 内:任务无指定 model 时调用路由推荐,推荐结果写入 task["model"] 字段
- 向后兼容:task 已有 model 字段时完全不触碰,不破坏现有行为
# 在 09-虚拟办公区系统/ 目录下执行
import sys
sys.path.insert(0, '.')
from task_router import recommend_model, reload_rules
# 强制从磁盘重新加载
reload_rules()
assert recommend_model("实现Flask Blueprint路由") == "deepseek-v3", "代码路由失败"
assert recommend_model("生成HTML Dashboard界面") == "gemini-3.1-pro", "前端路由失败"
assert recommend_model("撰写内容分析报告") == "glm-5", "内容路由失败"
assert recommend_model("采集GitHub热榜数据") == "glm-4-flash", "采集路由失败"
assert recommend_model("战略架构分析评估") == "deep-research-pro", "战略路由失败"
assert recommend_model("随机无匹配任务") == "glm-5", "默认兜底失败"
print("所有路由测试通过")
代码专用模型选择:简报指定 deepseek-coder,但该模型在现有 litellm_config.yaml 中未注册。实际使用 deepseek-v3(DashScope路由,已验证通过2026-03-06),代码能力等效。若后续需要注册专用代码模型,在 model_list 增加 deepseek-coder 条目即可,路由规则无需改动。
Phase 2 记账:get_budget_info() 中 used 字段当前固定为 0。Phase 2 需实现 budget_log.jsonl 写入逻辑,读取当月消耗并更新 remaining。预留字段已在 agent_budgets.yaml 末尾注释中说明。
规则热更新:修改 litellm_config.yaml 的 router_rules 后,调用 task_router.reload_rules() 或重启 Flask 服务即可生效。
Atlas🐻 完成并提交 | 2026-03-07