# Services

Services 是产品用例编排层。它不实现底层 tool loop，但决定什么时候进入 Task、什么时候跑通知、什么时候创建 team、什么时候记录用户验收和学习候选。

## 大模块流程

接口调用chat / cron / acceptance / skill admin
->
AgentService路由 simple vs Task
->
Task 编排planner、team、main run、evidence
->
状态落盘session events、task store、run memory、skill learning

## 小模块拆分

### AgentService

核心服务。普通消息先由 MainAgentRouter 分类；simple chat 关闭 skill/tool 装配直接跑；Task 模式创建或复用 TaskRecord，计划 single/team，运行主 agent，记录 evidence，并等待用户验收。

输入 message + session kwargs，创建 provider bundle。
调用 Intent Agent，得到 simple_chat / continue_task / revise_task / new_task / close_task / abandon_task。
Task 模式中调用 TaskExecutionPlanner，必要时先跑 TeamGraphScheduler。
主 AgentLoop 执行后构建 evidence packet；evidence 只记录事实，不判断结果质量。
run 完成后进入 awaiting_acceptance；用户 accept/revise/abandon 决定后续状态。

Prompt 相关：AgentService 组装 Task skill selection context、team execution context、scheduled execution context，详细见 Prompt Atlas。

### CronService

管理定时任务的创建、启停、触发、run history。CronService 负责调度状态；真正生成内容时调用 AgentService 的 scheduled task 或 notification 路径。

保存 CronJob 配置和 payload。
到点创建 CronRunRecord。
调用 AgentService 执行 notification 或 Task。
回写 output/error/task_id/run_id。
核对点：`run_scheduled_task()` 当前末尾引用未定义 `job`/`run`，应改为函数入参。

### TeamService

提供 team graph 的产品级封装。底层执行在 coordinator，Service 层关心的是把执行结果转成 API 友好的结构。

接收 graph / nodes / strategy。
创建 TeamGraphScheduler 和 LocalAgentRunner。
返回 node results、run ids、success/error。

### MemoryService 与 SessionProcessProjector

MemoryService 给每个 run 捕获 frozen curated memory snapshot；SessionProcessProjector 把 session 事件投影成 UI 所需的过程视图。

run 开始前捕获 memory snapshot，避免运行中写入导致 prompt 漂移。
session event 记录完整过程。
projector 从事件流还原步骤、工具、evidence 和用户验收状态。

### SkillHubService

面向产品的 skill 草稿、审核、发布、学习候选接口。底层由 skills/drafts/reviews/publisher/learning 实现。

列出 learning candidates 或 drafts。
触发 draft synthesis / review。
人工确认后发布为 published skill。