agentic_huge_data_base / wiki
页面 jcode · 14 Overnight 模式·DeepWiki 中文全文译文

14 · Overnight 模式(Overnight Mode)

代理式研究运行时 · 聚焦本章的模块关系、源码依据与实现要点。

项目jcode 章节14 状态全文译文 模块界面与交互、系统架构、工作流与编排、模型调用与提供方适配
源码线索
  • crates/jcode-overnight-core/Cargo.toml
  • crates/jcode-overnight-core/src/helper_tests.rs
  • crates/jcode-overnight-core/src/lib.rs
  • crates/jcode-overnight-core/src/prompts.rs
  • docs/AWS_BEDROCK_PROVIDER.md
  • src/overnight.rs
  • src/provider/bedrock.rs
  • src/subscription_catalog.rs
  • src/tui/app/commands_overnight.rs
  • src/tui/app/inline_interactive.rs
模块标签
  • 界面与交互
  • 系统架构
  • 工作流与编排
  • 模型调用与提供方适配
  • 测试、发布与运维

章节正文

Overnight 模式

过夜模式

相关源文件

以下文件为本维基页面的生成提供了上下文:

  • crates/jcode-overnight-core/Cargo.toml
  • crates/jcode-overnight-core/src/helper_tests.rs
  • crates/jcode-overnight-core/src/lib.rs
  • crates/jcode-overnight-core/src/prompts.rs
  • docs/AWS_BEDROCK_PROVIDER.md
  • src/overnight.rs
  • src/provider/bedrock.rs
  • src/subscription_catalog.rs
  • src/tui/app/commands_overnight.rs
  • src/tui/app/inline_interactive.rs
  • src/tui/app/tests/state_model_poke_03.rs
  • src/tui/app/tests/support_failover/part_01.rs
  • src/tui/app/tests/support_failover/part_02.rs
  • src/tui/ui_inline_interactive.rs

过夜模式是一个长时间运行的自主代理系统,旨在用户离线时执行复杂的多步骤工程任务。它将代理从被动响应的聊天助手转变为主动工作的自主执行者,能够管理自己的子会话、通过结构化的"任务卡片"跟踪进度,并生成一份全面的晨间报告供用户审阅。

核心组件与关系

该系统基于协调器-工作者架构构建。一个中央协调器会话负责管理高层任务,而各个工作者代理则被派发来执行具体任务。

系统架构图
jcode · 系统架构图 · 图 1
jcode · 系统架构图 · 图 1

来源:src/overnight.rs:54-167, src/tui/app/commands_overnight.rs:15-70, crates/jcode-overnight-core/src/lib.rs:47-82

过夜运行生命周期

过夜运行通过 /overnight start 斜杠命令启动。系统会创建一个 OvernightManifest 来跟踪元数据,包括目标唤醒时间和资源限制。

  • 初始化:系统会捕获一个"预检"快照,其中包含 Git 状态、资源使用情况(内存/CPU/电池)以及大语言模型(LLM)使用量预估 crates/jcode-overnight-core/src/lib.rs:168-173
  • 执行:协调器在可见或不可见的会话中运行,将提示链加入队列,引导代理完成任务的识别、执行和验证 src/overnight.rs:150-161
  • 状态机:运行过程会经历 OvernightRunStatus 中定义的状态:Running(运行中)、CancelRequested(已请求取消)、Completed(已完成)或 Failed(失败)crates/jcode-overnight-core/src/lib.rs:26-33
  • 资源采样:系统会每 5 分钟定期采样系统健康状态,以确保代理不会耗尽磁盘空间或电池电量 src/overnight.rs:30-31

有关命令集和状态转换的详细信息,请参阅 过夜运行生命周期

来源:src/overnight.rs:54-127, crates/jcode-overnight-core/src/lib.rs:26-33

进度跟踪与结构化输出

代理使用任务卡片来跟踪其进度。这些是结构化的 JSON 对象,代表各个工作单元,并根据其当前状态进行分类(例如 in_progress(进行中)、validated(已验证)、blocked(受阻))。

实体作用
OvernightTaskCard存储问题描述、变更证据和验证结果 crates/jcode-overnight-core/src/lib.rs:204-225
OvernightEvent重要操作的日志记录条目(例如 task_completed(任务完成)、handoff_requested(请求交接))crates/jcode-overnight-core/src/lib.rs:85-96
OvernightProgressCard针对 UI 优化的运行健康状态和完成百分比摘要 crates/jcode-overnight-core/src/lib.rs:248-264

来源:crates/jcode-overnight-core/src/lib.rs:204-264

TUI 集成与"自动轮询"

由于大语言模型(LLM)提供商在长时间运行的会话中可能会超时或返回空响应,TUI 实现了一种自动轮询机制。

  • OvernightAutoPokeState:跟踪 TUI 在代理停滞时自动提示其继续的次数 src/tui/app/commands_overnight.rs:11-13
  • 停滞检测:如果代理在 target_wake_at 时间之前停止响应,TUI 会发送一个"继续提示"来保持运行 src/tui/app/commands_overnight.rs:11-13
  • 视觉反馈:TUI 会在侧边栏中渲染一个持久的进度卡片,显示当前任务、内存使用情况和预计完成时间 src/tui/app/commands_overnight.rs:49-50

有关报告引擎和轮询限制的详细信息,请参阅 过夜模式 TUI 集成与报告

TUI 交互图
jcode · TUI 交互图 · 图 2
jcode · TUI 交互图 · 图 2

来源:src/tui/app/commands_overnight.rs:11-13, src/overnight.rs:132-147

晨间报告与审阅

在运行完成或到达唤醒时间后,系统会生成一份晨间报告。这是一个基于 HTML 的审阅页面(review.html),提供以下内容:

  1. 执行摘要:任务状态和高级别成果。
  2. 任务画廊:交互式卡片,显示每次变更的"之前"和"之后"快照。
  3. 验证日志:变更已通过测试的证据(例如测试输出、编译器日志)。
  4. 使用审计:最终的 Token 使用量和成本明细。

该报告可通过 /overnight review 命令访问 src/tui/app/commands_overnight.rs:172-180

来源:src/overnight.rs:64-72, crates/jcode-overnight-core/src/lib.rs:25-28