🤖

KAIROS 助手模式

Claude Code 的持久化 AI 助手模式 — 持续运行、主动行动、精简交互、自动做梦

核心架构

KAIROS 概述

Always-on 的持久化 AI 助手

KAIROS 是 Claude Code 的持久化 AI 助手模式。与传统的"请求-响应"式交互不同, KAIROS 以 Always-on 方式持续运行,监控环境变化并主动采取行动。它就像一个始终在线的开发伙伴, 在你编写代码的同时默默守护项目健康。

KAIROS 的核心设计理念包含三个关键特性:持久化会话保持跨终端的状态连续性; 环境监控能力使其能主动发现问题;而 简要模式(Brief Mode) 则通过超简洁响应减少认知负担,让持久上下文中的交互更加高效。

KAIROS 助手架构

管理监控驱动执行监听交互KAIROS AssistantSession ManagerContext MonitorAction EngineProactive ActionsEnvironment WatchUser Interaction

会话管理

跨终端会话的状态持久化

KAIROS 的会话管理是其持久化能力的核心。通过 持久化会话 机制,KAIROS 能够跨越终端会话保持完整的状态信息。即使你关闭了终端窗口, 下次启动时 KAIROS 可以自动恢复之前的上下文,继续未完成的工作。

会话历史记录了完整的交互过程,包括对话消息、文件操作、命令执行等, 使得 KAIROS 能够在任意时间点准确理解项目的当前状态和历史变更。

KAIROS 会话数据结构

KairosSessionid: stringstartedAt: DatelastActiveAt: Datecontext: SessionContexthistory: Message[]

会话生命周期管理

启动终端关闭恢复运行1. 创建会话生成唯一 ID 初始化上下文 持久化存储2. 会话运行更新时间戳 追加消息记录 持续持久化3. 恢复会话获取历史记录 加载上下文 无缝恢复

主动行动

环境监控与智能响应

KAIROS 最强大的特性之一是其主动行动能力。它持续监控开发环境的各种变化, 包括文件修改、Git 状态变更、测试结果等,并在检测到潜在问题时自动提供建议或执行修复。

环境监控

持续追踪文件变化、Git 状态、测试结果等开发环境指标

通过文件系统监听和 Git 钩子,KAIROS 实时感知项目中的每一次变更,构建完整的变更上下文。

主动建议

检测到问题时自动分析并提供建议方案

利用代码分析和模式匹配,KAIROS 在问题扩大前就能发现潜在风险,并主动向开发者报告。

自动修复

在用户授权的情况下自动执行修复操作

对于常见问题(如 lint 错误、格式问题),KAIROS 可以在获得授权后自动修复,减少手动干预。

主动行动引擎流程

数据源捕获送审评估发现问题请求授权应用修复环境监控变更检测变更分析问题判定主动通知用户生成修复建议授权自动修复文件/Git/测试

简要模式 (Brief Mode)

超简洁响应,提升持续交互效率

简要模式是 KAIROS 针对持久化上下文场景专门优化的响应风格。在长时间运行中, 过多的输出会造成信息过载。简要模式通过 精简输出 大幅减少响应长度,只保留最关键的信息,显著提高持续交互的效率。

普通模式

我已经仔细检查了你的代码,发现 src/app.ts 文件第42行有一个未处理的错误。 建议添加 try-catch 块来捕获可能的异常。这里是修复代码...

简要模式

src/app.ts:42 - 缺少 try-catch,建议添加错误处理

简要模式输出更精炼,适合持久上下文中快速获取关键信息

简要模式配置选项

BriefModeConfigenabled: booleanmaxLength: numbershowCodeContext: booleanverbosityminimalcompactnormal

与标准模式的区别

KAIROS 模式 vs 标准模式全方位对比

KAIROS 模式与 Claude Code 的标准模式在多个维度上存在根本性差异。 标准模式适合执行单次任务,而 KAIROS 模式则设计为持续的长期开发伙伴。 以下是两者的详细对比:

特性
标准模式
KAIROS 模式
生命周期
单次会话
持久运行
上下文
当前会话
跨会话持久化
响应风格
详细完整
简洁精炼
主动性
被动等待
主动监控
记忆
会话内
长期记忆 + 做梦整合
适用场景
任务执行
持续开发助手

KAIROS 模式配置总览

kairosConfigpersistentSession: trueenvironmentWatchbriefModelongTermMemoryfileChangesgitStatustestResultsenabled: trueverbosity: compactenabled: truemaxRetention: 30d

KAIROS 状态机

从空闲到做梦的完整生命周期

KAIROS 助手并非始终处于"对话"状态。它有完整的生命周期状态机: 从空闲开始,经过对话离线, 最终进入最关键的做梦阶段。 做梦完成后,整合的记忆写入存储,助手恢复就绪。

KAIROS 状态机 — 空闲 → 对话 → 离线 → 做梦 → 恢复

用户输入终端关闭会话结束时间门控通过扫描完成整合完成写入完成下次启动🟢 空闲💬 对话中🌑 离线💭 做梦中🔄 整合📝 写入记忆⚡ 恢复就绪
🟢
空闲 / 对话

正常交互,用户与助手实时通信

🌑
离线

终端关闭,但会话数据已持久化到磁盘

💭
做梦

后台子代理扫描记忆、整合信号、更新索引

恢复

下次启动时加载整合后的记忆,无缝继续

AutoDream — 自动做梦服务

离线时的记忆整合引擎

AutoDream 是 KAIROS 模式的核心创新之一。当助手离线后,系统会自动触发一个分叉子代理(Forked Agent), 以只读方式扫描记忆目录和会话记录,将新信号整合到持久化记忆中。这个过程就像人类在 睡眠中整理白天的记忆——因此得名"做梦"。

做梦过程由严格的三重门控保护,确保不会在不必要时频繁触发,也不会在另一个进程 正在整合时产生冲突。

🔐 三重门控机制

三重门控流程
typescript
1// 检查启
2isAutoDreamEnabled()
步骤 1/5

检查启

AutoDream 架构

触发检查门控通过探索信号写入获取锁stopHooks (每轮触发)三重门控 时间/会话/锁Forked Agent (只读子代理)扫描记忆目录 + 会话记录整合信号 去重/修正写入记忆文件 更新 MEMORY.md.consolidate-lock (PID + mtime)

📋 DreamTask — 做梦任务状态

字段
类型
说明
示例
status
string
运行状态
running | completed | failed | killed
phase
DreamPhase
当前阶段
starting → updating
sessionsReviewing
number
正在审查的会话数
12
filesTouched
string[]
被修改的文件路径
[project_deadlines.md]
turns
DreamTurn[]
助手回合记录
text + toolUseCount
priorMtime
number
锁的先前 mtime(回滚用)
1712345678901

做梦四阶段

Orient → Gather → Consolidate → Prune

做梦过程分为四个明确的阶段,由 consolidationPrompt 构建的提示词驱动。 子代理以只读权限运行, 限制 Bash 为只读命令(ls、grep、cat 等),但可以自由写入记忆目录。

做梦四阶段
typescript
1# Phase 1 — Orient
2# 读取记忆目录结构和 MEMORY.md 索引
3ls ~/.claude/projects/<slug>/memory/
4cat ~/.claude/projects/<slug>/memory/MEMORY.md
步骤 1/4

定位与索引

记忆系统与整合

四类型记忆 + 自动去重 + 上下文优化

KAIROS 的记忆系统采用封闭的四种类型分类法:user(用户画像)、feedback(行为指导)、project(项目上下文)、reference(外部指针)。 每种记忆都排除可从代码状态推导的信息(架构、Git 历史、文件结构)。

👤 User
私有

用户角色、偏好、知识背景

💬 Feedback
私有/团队

用户纠正与确认的行为指导

📁 Project
私有/团队

项目上下文、目标、决策

🔗 Reference
通常团队

外部系统指针(Linear、Slack等)

📝 记忆文件格式(Frontmatter)

---
name: testing-preferences
description: 用户对测试方式的行为偏好——集成测试优先,禁用 mock
type: feedback
---

**规则**: 集成测试必须连接真实数据库,不使用 mock

**Why**: 上季度 mock 测试通过但生产迁移失败,教训深刻

**How to apply**: 编写测试时选择集成测试套件;审查他人 PR 时
对 mock 使用提出质疑

🔄 记忆整合前后对比

整合前
碎片化的每日日志
整合后
结构化的主题文件
示例
logs/2026/03/2026-03-01.md → project_deadlines.md
整合前
相对日期 "昨天" "上周"
整合后
绝对日期 2026-03-01
示例
时间流逝后仍可解读
整合前
矛盾的记忆条目
整合后
去重合并的单一真相
示例
新调查推翻旧记忆 → 原地修正
整合前
臃肿的 MEMORY.md
整合后
简洁索引 ≤200行
示例
每条 ≤150字符,详情在主题文件中

记忆检索与上下文优化

findRelevantMemories — 智能记忆召回

当用户发起新对话时,系统不会加载全部记忆(可能上百个文件)。 相反,findRelevantMemories 先扫描所有记忆文件的 Frontmatter(标题 + 描述),然后用 Sonnet 模型选择最多 5 条最相关的记忆注入上下文。

每条召回的记忆还附带新鲜度提示: 超过 1 天的记忆会显示"N 天前"警告,提醒模型在引用前验证当前代码状态。

记忆检索流程

触发清单选中读取格式化输入用户查询scanMemoryFiles (读取 Frontmatter)Sonnet 选择器 (≤5 条相关)注入上下文 (含新鲜度提示)memory/ *.md 文件格式化清单 (type + desc + ts)
// findRelevantMemories 核心逻辑
async function findRelevantMemories(query, memoryDir, signal) {
  // 1. 扫描记忆目录,读取每个 .md 的 Frontmatter(≤30行)
  const memories = await scanMemoryFiles(memoryDir, signal);
  
  // 2. 用 Sonnet 从清单中选择 ≤5 条最相关的
  const selected = await selectRelevantMemories(query, memories, signal);
  
  // 3. 返回路径 + mtime(用于新鲜度警告)
  return selected.map(m => ({ path: m.filePath, mtimeMs: m.mtimeMs }));
}

锁机制与容错

.consolidate-lock — 基于 PID + mtime 的分布式锁

做梦过程的锁文件.consolidate-lock 存放在记忆目录内, 其 mtime 就是上次整合的时间戳(lastConsolidatedAt), 文件内容是持有者的 PID。这种巧妙的设计让锁和时间门控共用一个文件。

获取锁

写入 PID → mtime = now,返回先前 mtime(用于回滚)

竞争检测

双重验证:PID 必须匹配 + 持有时间 < 1小时(防 PID 复用)

失败回滚

回滚 mtime 到先前值,下次时间门控重新触发

崩溃恢复

死 PID 自动回收,新进程接管并重新开始整合