当 sessionTarget = "isolated" 或 payload.kind = "agentTurn" 时,任务在独立会话中运行 Agent。

执行入口

isolated-agent.ts → isolated-agent/run.ts::runCronIsolatedAgentTurn

执行流程

runCronIsolatedAgentTurn(params)
  1. 加载或创建会话(session.ts)
  2. 解析模型选择(model-selection.ts)
  3. 预检模型可用性(model-preflight.ts)
  4. 构建 Agent 上下文(技能快照、工具过滤)
  5. 执行 Agent(run-executor.ts)
  6. 处理输出交付(delivery-dispatch.ts)
  7. 更新会话状态(run-session-state.ts)

会话管理

会话密钥格式(session-key.ts)

类型格式说明
基础会话cron:<jobId>任务的持久会话
运行会话cron:<jobId>:run:<uuid>单次执行的临时会话

每次执行创建新的运行会话,24 小时后由 session-reaper.ts 清理。

会话解析(session.ts)

根据 sessionTarget 解析目标会话:

  • isolated:使用 cron:<jobId> 基础会话
  • session:xxx:使用指定会话 ID
  • 支持会话继承(从上次运行的上下文继续)

模型选择(model-selection.ts)

优先级(从高到低):

  1. payload.model(任务级覆盖)
  2. Agent 默认模型
  3. 系统默认模型

支持 payload.fallbacks 列表,主模型不可用时自动降级。

模型预检(model-preflight.ts)

执行前验证模型可用性:

  • 检查 Provider 连通性
  • 验证 API Key 有效性
  • 检查模型是否在允许列表中

预检失败时记录诊断信息,不直接报错(best-effort 模式)。

Agent 执行配置

工具过滤(payload.toolsAllow)

payload: {
  kind: "agentTurn",
  message: "...",
  toolsAllow: ["web-search", "code-exec"]  // 只允许这些工具
}

未指定时使用 Agent 默认工具集。

轻量上下文(payload.lightContext)

payload: {
  kind: "agentTurn",
  message: "...",
  lightContext: true  // 不加载完整历史上下文
}

适用于简单任务,减少 token 消耗。

思考模式(payload.thinking)

payload: {
  kind: "agentTurn",
  message: "...",
  thinking: true  // 启用 extended thinking
}

外部内容源(payload.externalContentSource)

payload: {
  kind: "agentTurn",
  message: "...",
  externalContentSource: "url-or-identifier"
}

注入外部内容到 Agent 上下文。

技能快照(skills-snapshot.ts)

执行时捕获当前可用技能列表,确保:

  • 技能版本一致性
  • 避免执行中途技能变更
  • 诊断信息中记录技能状态

子 Agent 跟进(subagent-followup.ts)

Agent 执行完成后,处理子 Agent 的后续操作:

  • 收集子 Agent 输出
  • 合并到主 Agent 结果
  • 触发交付流程

通道输出策略(channel-output-policy.ts)

控制 Agent 输出如何路由到消息渠道:

  • 过滤内部消息(不发送到渠道)
  • 格式化输出(Markdown → 渠道格式)
  • 处理长消息分片

执行状态管理(run-session-state.ts)

记录每次执行的状态:

type RunSessionState = {
  runId: string
  startedAtMs: number
  completedAtMs?: number
  status: "running" | "ok" | "error" | "timeout"
  outputSummary?: string
  diagnostics?: CronRunDiagnostics
}

相关页面