Skip to main content

PROACTIVE — 主动模式

Feature Flag: FEATURE_PROACTIVE=1(与 FEATURE_KAIROS=1 共享功能) 实现状态:核心模块全部 Stub,布线完整 引用数:37

一、功能概述

PROACTIVE 实现 Tick 驱动的自主代理。CLI 在用户不输入时也能持续工作:定时唤醒执行任务,配合 SleepTool 控制节奏。适用于长时间运行的后台任务(等待 CI、监控文件变化、定时检查等)。

与 KAIROS 的关系

所有代码检查都是 feature('PROACTIVE') || feature('KAIROS'),即:
  • 单独开 FEATURE_PROACTIVE=1 → 获得 proactive 能力
  • 单独开 FEATURE_KAIROS=1 → 自动获得 proactive 能力
  • 两者都开 → 相同效果(不重复)

二、实现架构

2.1 模块状态

模块文件状态说明
核心逻辑src/proactive/index.tsStubactivateProactive()deactivateProactive()isProactiveActive() => false
SleepTool 提示src/tools/SleepTool/prompt.ts完整工具提示定义(工具名:Sleep
命令注册src/commands.ts:62-65布线动态加载 ./commands/proactive.js
工具注册src/tools.ts:26-28布线SleepTool 动态加载
REPL 集成src/screens/REPL.tsx布线tick 驱动逻辑、占位符、页脚 UI
系统提示src/constants/prompts.ts:860-914完整自主工作行为指令(~55 行详细 prompt)
会话存储src/utils/sessionStorage.ts:4892-4912布线tick 消息注入对话流

2.2 系统提示内容

getProactiveSection() 注入的自主工作指令包含:
章节内容
Tick 驱动<tick_tag> prompt 保持存活,包含用户本地时间
节奏控制SleepTool 控制等待间隔,prompt cache 5 分钟过期
空操作规则无事可做时必须调用 Sleep,禁止输出 “still waiting”
首次唤醒简短问候,等待方向(不主动探索)
后续唤醒寻找有用工作:调查、验证、检查(不 spam 用户)
偏向行动读文件、搜索代码、commit — 不需询问
终端焦点terminalFocus 字段调节自主程度

2.3 数据流

activateProactive() [需要实现]


Tick 调度器启动

      ├── 定时生成 <tick_tag> 消息
      │   ├── 包含用户当前本地时间
      │   └── 注入到对话流(sessionStorage)


模型处理 tick

      ├── 有事可做 → 使用工具执行 → 可能再次 Sleep
      └── 无事可做 → 必须调用 SleepTool


SleepTool 等待 [需要实现]


下一个 tick 到达

三、需要补全的内容

优先级模块工作量说明
1src/proactive/index.tsTick 调度器、activate/deactivate 状态机、pause/resume
2src/tools/SleepTool/SleepTool.ts工具执行(等待指定时间后触发 tick)
3src/commands/proactive.js/proactive 斜杠命令处理器
4src/hooks/useProactive.tsReact hook(REPL 引用但不存在)

四、关键设计决策

  1. Tick 驱动:模型通过 SleepTool 自行控制唤醒频率,不是外部事件推送
  2. 空操作必须 Sleep:防止 “still waiting” 类空消息浪费 turn 和 token
  3. Prompt cache 考量:SleepTool 提示中提到 cache 5 分钟过期,建议平衡等待时间
  4. Terminal Focus 感知:模型根据用户是否在看终端调整自主程度

五、使用方式

# 单独启用 proactive
FEATURE_PROACTIVE=1 bun run dev

# 通过 KAIROS 间接启用
FEATURE_KAIROS=1 bun run dev

# 组合使用
FEATURE_PROACTIVE=1 FEATURE_KAIROS=1 FEATURE_KAIROS_BRIEF=1 bun run dev

六、文件索引

文件职责
src/proactive/index.ts核心逻辑(stub)
src/tools/SleepTool/prompt.tsSleepTool 工具提示
src/constants/prompts.ts:860-914自主工作系统提示
src/screens/REPL.tsxREPL tick 集成
src/utils/sessionStorage.ts:4892-4912Tick 消息注入
src/components/PromptInput/PromptInputFooterLeftSide.tsx页脚 UI 状态