Claude-Code-Source

KAIROS — 永不关机的 Claude

源码位置:src/assistant/src/proactive/src/services/autoDream/ 编译开关:feature('KAIROS')feature('KAIROS_BRIEF')feature('KAIROS_CHANNELS') 远程开关:GrowthBook tengu_kairos

关掉终端 Claude 还在运行的持久助手模式。KAIROS 是 Claude Code 中最复杂的隐藏功能之一。


核心概念

KAIROS 让 Claude 从”一次性对话工具”变成”持久运行的 AI 助手”:


激活流程

定义在 src/main.tsx(约第 1054-1092 行),需要通过五层检查:

1. feature('KAIROS')          ← 编译时 flag
2. settings.assistant: true   ← .claude/settings.json
3. 目录信任状态检查            ← 防恶意仓库劫持
4. tengu_kairos               ← GrowthBook 远程开关
5. setKairosActive(true)      ← 全局状态激活

--assistant CLI 参数可跳过远程开关检查(用于 Agent SDK daemon 模式)。

全局状态存储在 src/bootstrap/state.ts


跨会话持久运行

会话恢复

src/utils/conversationRecovery.ts 中使用 feature('KAIROS') 条件导入 BriefToolSendUserFileTool。在反序列化会话时识别这些工具的结果为”终端工具结果”,判断 turn 是正常完成还是被中断。

持久 Cron 任务

关键在 .claude/scheduled_tasks.json。标记为 permanent: true 的任务不受 7 天自动过期限制:

会话历史 API

src/assistant/sessionHistory.ts 通过 OAuth API 加载远程会话历史,使用 v1/sessions/{sessionId}/events 端点,支持分页拉取。


做梦机制(Dream)

KAIROS 最精巧的子系统——后台运行的子代理,将分散的会话记忆整合为持久的结构化知识。

触发条件(三层门控,由廉到贵)

定义在 src/services/autoDream/autoDream.ts

1. 时间门控:距上次整合超过 24 小时(minHours)
2. 会话门控:至少 5 个新会话(minSessions)
3. 锁门控:没有其他进程正在整合

阈值通过 GrowthBook tengu_onyx_plover 远程配置动态控制。

四阶段整合流程

定义在 src/services/autoDream/consolidationPrompt.ts

阶段 动作
Orient 列出记忆目录、读取 MEMORY.md 索引、浏览已有主题文件
Gather 从每日日志、已有记忆、JSONL transcript 中搜集新信号
Consolidate 合并新信号到主题文件,转换相对日期为绝对日期,删除过时事实
Prune 更新 MEMORY.md 索引,保持在行数和大小限制内

锁机制

src/services/autoDream/consolidationLock.ts

每日日志

路径由 src/memdir/paths.tsgetAutoMemDailyLogPath() 计算:

<autoMemPath>/logs/YYYY/MM/YYYY-MM-DD.md

UI 呈现


主动模式(Proactive Mode)

没人说话时 Claude 自己找活干。

核心状态

src/proactive/index.ts 维护三个状态:

状态 说明
active 是否激活
paused 是否暂停(用户按 Esc 取消时暂停,下次输入恢复)
contextBlocked API 错误时阻塞 tick,防止 tick-error-tick 死循环

激活方式

系统提示

激活后追加:

# Proactive Mode

You are in proactive mode. Take initiative -- explore, act, and make progress
without waiting for instructions.

Start by briefly greeting the user.

You will receive periodic <tick> prompts. These are check-ins. Do whatever
seems most useful, or call Sleep if there's nothing to do.

SleepTool 集成

设置中的 minSleepDurationMsmaxSleepDurationMs 控制 Sleep 持续时间范围,节流 proactive tick 频率。没活干就 Sleep 等着。


后台任务管理

Cron 调度器

src/utils/cronScheduler.ts

任务类型

类型 说明
一次性(recurring: false 触发后自动删除,支持错过任务检测
循环(recurring: true 触发后重新调度,默认 7 天过期
永久(permanent: true 不受过期限制(KAIROS 专用)
会话级(durable: false 仅内存中,进程退出即消失

Jitter 防雷群机制

src/utils/cronJitterConfig.ts


关键源码文件

文件 职责
src/bootstrap/state.ts KAIROS 全局状态
src/assistant/index.ts 助手模式入口
src/assistant/sessionHistory.ts 远程会话历史 API
src/proactive/index.ts 主动模式状态管理
src/services/autoDream/autoDream.ts Auto-Dream 引擎
src/services/autoDream/consolidationPrompt.ts 整合提示(四阶段)
src/services/autoDream/consolidationLock.ts 整合锁
src/services/autoDream/config.ts Dream 配置
src/tasks/DreamTask/DreamTask.ts Dream 任务定义
src/utils/cronScheduler.ts Cron 调度器
src/utils/cronTasks.ts Cron 任务持久化
src/skills/bundled/dream.ts /dream Skill(存根)