OFFICIAL SOURCE ANALYSIS

Coordinator 编排与架构

Worker 编排系统、远程 Daemon 架构、完整数据流、KAIROS vs OpenClaw 对比、未来展望。

7. Coordinator Mode——Worker 编排系统

Coordinator Mode 是 KAIROS 体系中最复杂的子系统之一。它将 Claude 从一个「独立执行者」转变为一个「项目经理」——不直接写代码,而是编排多个 Worker 并行完成任务,然后综合它们的成果。这是对 AI 编程助手「能力上限」的一次根本性提升。

与 Agent Teams/Swarms 的区别

概念Coordinator ModeAgent Teams (Teammate)Swarms
拓扑 一个 Coordinator + 多个 Worker(星型) 多个对等 Teammate(网状) 自组织群体
控制流 Coordinator 分发任务、综合结果 Teammate 间相互通信 无中心控制
适用场景 复杂工程任务的分治 持续协作的团队 大规模探索
激活方式 环境变量 + Feature Flag KAIROS Team 初始化

激活方式

// coordinatorMode.ts
export function isCoordinatorMode(): boolean {
  if (feature('COORDINATOR_MODE')) {
    return isEnvTruthy(process.env.CLAUDE_CODE_COORDINATOR_MODE)
  }
  return false
}

Coordinator Mode 的激活需要两个条件同时满足:构建时 feature('COORDINATOR_MODE') 为 true,运行时 CLAUDE_CODE_COORDINATOR_MODE=1 环境变量被设置。

Session Mode 持久化

Coordinator Mode 的状态会被持久化到 session storage 中。当用户通过 --resume 恢复一个在 Coordinator Mode 下创建的会话时,系统会自动检测并重新激活 Coordinator Mode:

export function matchSessionMode(
  sessionMode: 'coordinator' | 'normal' | undefined,
): string | undefined {
  if (!sessionMode) return undefined;

  const currentIsCoordinator = isCoordinatorMode();
  const sessionIsCoordinator = sessionMode === 'coordinator';

  if (currentIsCoordinator === sessionIsCoordinator) return undefined;

  // 翻转环境变量,让 isCoordinatorMode() 返回正确的值
  if (sessionIsCoordinator) {
    process.env.CLAUDE_CODE_COORDINATOR_MODE = '1';
  } else {
    delete process.env.CLAUDE_CODE_COORDINATOR_MODE;
  }

  return sessionIsCoordinator
    ? 'Entered coordinator mode to match resumed session.'
    : 'Exited coordinator mode to match resumed session.';
}

超长系统提示的核心内容

Coordinator Mode 有一个极其详细的系统提示(从 getCoordinatorSystemPrompt() 生成),它定义了 Coordinator 的完整行为规范。以下是它的核心章节拆解。

Section 1: Your Role — 角色定义
You are a coordinator. Your job is to:
- Help the user achieve their goal
- Direct workers to research, implement and verify code changes
- Synthesize results and communicate with the user
- Answer questions directly when possible — don't delegate work
  that you can handle without tools

关键约束:「Answer questions directly when possible」——Coordinator 不应该把所有事情都扔给 Worker。简单的问题应该直接回答。只有需要工具操作(读文件、执行命令、修改代码)的任务才应该委派给 Worker。

Section 2: Your Tools — 工具清单

Coordinator 自身只有少数几个工具:

  • Agent — 创建新 Worker
  • SendMessage — 向现有 Worker 发送后续指令
  • TaskStop — 停止一个正在运行的 Worker
  • subscribe_pr_activity / unsubscribe_pr_activity — GitHub PR 订阅(如果可用)

注意 Coordinator 没有 Bash、FileRead、FileWrite 等直接操作工具。它不能直接修改代码——必须通过 Worker 来完成。这是一个刻意的设计选择:强制 Coordinator 聚焦于编排而非执行。

Section 3: 四阶段工作流
阶段执行者目的
ResearchWorkers(并行)调查代码库、查找文件、理解问题
SynthesisCoordinator 自己阅读发现、理解问题、编写实现规格
ImplementationWorkers根据规格做具体修改、提交
VerificationWorkers测试变更是否生效
核心原则:「永远不要把理解委派给 Worker」
Synthesis 阶段必须由 Coordinator 自己完成——不能让一个 Worker 去「理解」另一个 Worker 的发现。这是整个 Coordinator Mode 最重要的原则。
Section 4: BAD vs GOOD 的指令对比(完整源码引用)
// Anti-pattern — lazy delegation (bad whether continuing or spawning)
Agent({ prompt: "Based on your findings, fix the auth bug", ... })
Agent({ prompt: "The worker found an issue in the auth module.
                  Please fix it.", ... })

// Good — synthesized spec (works with either continue or spawn)
Agent({ prompt: "Fix the null pointer in src/auth/validate.ts:42.
  The user field on Session (src/auth/types.ts:15) is undefined
  when sessions expire but the token remains cached. Add a null
  check before user.id access — if null, return 401 with
  'Session expired'. Commit and report the hash.", ... })

BAD 模式的关键词是「Based on your findings」和「The worker found an issue」——这些是懒惰委派。Coordinator 没有真正理解 Research Worker 的发现,只是把它原样转给了 Implementation Worker。

GOOD 模式包含具体的文件路径、行号、类型签名、修复方案——这证明 Coordinator 真正阅读并理解了 Research 的结果。

Worker 的工具访问权限

Worker 的工具集由 ASYNC_AGENT_ALLOWED_TOOLS 常量定义:

ASYNC_AGENT_ALLOWED_TOOLS 完整列表
// src/constants/tools.ts
export const ASYNC_AGENT_ALLOWED_TOOLS = new Set([
  FILE_READ_TOOL_NAME,      // Read — 读取文件
  WEB_SEARCH_TOOL_NAME,     // WebSearch — 搜索网页
  TODO_WRITE_TOOL_NAME,     // TodoWrite — 写入待办
  GREP_TOOL_NAME,           // Grep — 内容搜索
  WEB_FETCH_TOOL_NAME,      // WebFetch — 抓取网页
  GLOB_TOOL_NAME,           // Glob — 文件模式匹配
  ...SHELL_TOOL_NAMES,      // Bash, PowerShell — Shell 执行
  FILE_EDIT_TOOL_NAME,      // Edit — 编辑文件
  FILE_WRITE_TOOL_NAME,     // Write — 写入文件
  NOTEBOOK_EDIT_TOOL_NAME,  // NotebookEdit — Jupyter 编辑
  SKILL_TOOL_NAME,          // Skill — 调用技能
  SYNTHETIC_OUTPUT_TOOL_NAME, // SyntheticOutput — 合成输出
  TOOL_SEARCH_TOOL_NAME,    // ToolSearch — 搜索工具
  ENTER_WORKTREE_TOOL_NAME, // EnterWorktree — 进入 Git worktree
  EXIT_WORKTREE_TOOL_NAME,  // ExitWorktree — 退出 Git worktree
])

Worker 被禁止的工具及原因

被禁止的工具原因
AgentWorker 不能再创建子 Worker——防止无限递归
SendMessageWorker 不能向其他 Worker 发消息——跨 Worker 通信由 Coordinator 统一管理
TeamCreate / TeamDeleteWorker 不能创建或删除 Team——这是 Coordinator 的特权
SendUserMessage (Brief)Worker 不能直接向用户发消息——只有 Coordinator 可以
TaskStopWorker 不能停止其他 Worker

但 in-process teammates(非通过 Coordinator Mode 创建的,而是通过 KAIROS Team 初始化的)有额外的工具权限:

export const IN_PROCESS_TEAMMATE_ALLOWED_TOOLS = new Set([
  TASK_CREATE_TOOL_NAME,    // TaskCreate
  TASK_GET_TOOL_NAME,       // TaskGet
  TASK_LIST_TOOL_NAME,      // TaskList
  TASK_UPDATE_TOOL_NAME,    // TaskUpdate
  SEND_MESSAGE_TOOL_NAME,   // SendMessage
  // + Cron 工具(如果 AGENT_TRIGGERS flag 启用)
  CRON_CREATE_TOOL_NAME,
  CRON_DELETE_TOOL_NAME,
  CRON_LIST_TOOL_NAME,
])

Scratchpad 跨 Worker 知识共享

Worker 之间不能直接通信,但它们需要某种方式共享信息。Scratchpad 是解决方案——一个所有 Worker 都可以读写的共享目录,不需要权限提示。它的启用受 tengu_scratch GrowthBook gate 控制。

if (scratchpadDir && isScratchpadGateEnabled()) {
  content += `\n\nScratchpad directory: ${scratchpadDir}
Workers can read and write here without permission prompts.
Use this for durable cross-worker knowledge — structure files
however fits the work.`
}

task-notification XML 格式

Worker 完成时的通知以 XML 格式注入到 Coordinator 的对话上下文中:

task-notification 完整结构
<task-notification>
  <task-id>{agentId}</task-id>
  <status>completed|failed|killed</status>
  <summary>{human-readable status summary}</summary>
  <result>{agent's final text response}</result>        <!-- 可选 -->
  <usage>                                                 <!-- 可选 -->
    <total_tokens>N</total_tokens>
    <tool_uses>N</tool_uses>
    <duration_ms>N</duration_ms>
  </usage>
</task-notification>

关键设计:task-notification 作为 user-role 消息注入——它看起来像用户消息,但不是。Coordinator 通过 <task-notification> 开头标签来区分它和真正的用户输入。

Worker 权限决策链

Worker 请求执行工具 Hooks 检查 Classifier 检查 Interactive 审批(如需)

Worker 的权限模型遵循与普通模式相同的三层决策链:先检查 Hooks(如果有自定义规则),再检查 Classifier(自动分类器),最后在需要时请求用户交互式审批。在 KAIROS Daemon 模式下,交互式审批通过 Bridge 远程桥接到用户的 viewer 客户端。

8. Auto Dream——让 AI 做梦

Auto Dream 是 KAIROS 体系中最诗意的设计。它的灵感来自人类的睡眠记忆整合——在白天积累了大量零散信息后,大脑在夜间通过 REM 睡眠将这些信息整合、归类、存储为长期记忆。Auto Dream 让 Claude 做同样的事。

为什么需要「做梦」

KAIROS 模式下的 Claude 会在长时间运行中积累大量会话上下文。每个会话的 transcript 都包含了工具调用、文件读写、用户对话等海量信息。随着时间推移,这些信息呈指数级膨胀——但 Claude 的上下文窗口是有限的。

传统的解决方案是 Context Compact(上下文压缩)——在上下文接近窗口上限时,通过摘要压缩来释放空间。但 Context Compact 是被动的、即时的——它在压力下丢弃信息。

Auto Dream 是主动的、定期的——它在没有紧迫压力时,从容地审视所有近期会话,将有价值的信息提炼并存入持久记忆。

维度Context CompactAuto Dream
触发条件上下文窗口接近上限距上次整合超过阈值时间且有足够新会话
执行方式在当前会话中内联执行Fork 子进程独立执行
数据来源当前会话上下文所有近期会话 transcripts + 现有记忆文件
输出目标压缩后的上下文(替换原上下文)memdir 中的持久记忆文件
信息保留率较低(压力下丢弃)较高(从容提炼)

触发门控(成本优先排序)

Auto Dream 的触发经过三层门控,按成本从低到高排序(cheapest first):

// Gate order (cheapest first):
//   1. Time: hours since lastConsolidatedAt >= minHours (one stat read)
//   2. Sessions: transcript count with mtime > lastConsolidatedAt >= minSessions
//   3. Lock: no other process mid-consolidation
Gate 1: 时间检查 Gate 2: 会话计数 Gate 3: 锁检查 启动整合
门控默认值GrowthBook Key说明
minHours24 小时tengu_onyx_plover.minHours距上次整合的最小间隔
minSessions5 个tengu_onyx_plover.minSessions需要积累的最少新会话数
Lock文件锁,防止多进程并发整合

还有一个扫描节流机制:当时间门控通过但会话门控未通过时,锁的 mtime 不会更新,导致时间门控在每个 turn 都通过。为了避免频繁扫描,有一个 10 分钟的 SESSION_SCAN_INTERVAL_MS 节流。

整合流程(四阶段)

Auto Dream 的整合工作由一个 forked subagent 执行,遵循以下四阶段流程(定义于 consolidationPrompt.ts):

Phase 1: Orient — 定向
- ls 记忆目录,查看现有内容
- 读取入口文件(entrypoint),理解当前索引
- 浏览现有主题文件,避免创建重复
- 如果存在 logs/ 或 sessions/ 子目录(assistant 模式布局),
  审查近期条目
Phase 2: Gather recent signal — 收集近期信号
按优先级排序的信息来源:
1. Daily logs(logs/YYYY/MM/YYYY-MM-DD.md)— 追加流
2. 已漂移的现有记忆 — 与代码库现状矛盾的旧事实
3. Transcript 搜索 — 用 grep 窄范围搜索 JSONL 文件

关键原则:不要穷举读取 transcripts。只搜索你已经怀疑重要的东西。
Phase 3: Consolidate — 整合
对每个值得记住的事项,写入或更新记忆目录顶层的记忆文件。
聚焦于:
- 将新信号合并到现有主题文件,而非创建近似重复
- 将相对日期("昨天"、"上周")转换为绝对日期
- 删除被推翻的事实 — 如果今天的调查推翻了旧记忆,
  在源头修正它
Phase 4: Prune and index — 修剪与索引
更新入口文件,保持在行数上限和 ~25KB 之内。
它是索引,不是数据库 — 每个条目一行 ~150 字符:
- [Title](file.md) — 一行钩子

操作:
- 移除指向过时/错误/被取代的记忆的指针
- 缩减冗长条目:如果索引行超过 ~200 字符,
  它承载了属于主题文件的内容 — 缩短行,移动细节
- 添加指向新重要记忆的指针
- 解决矛盾 — 如果两个文件不一致,修正错误的那个

启用配置

// config.ts — 轻量配置模块
export function isAutoDreamEnabled(): boolean {
  // 用户设置优先级最高
  const setting = getInitialSettings().autoDreamEnabled;
  if (setting !== undefined) return setting;

  // 否则回退到 GrowthBook gate
  const gb = getFeatureValue_CACHED_MAY_BE_STALE(
    'tengu_onyx_plover', null
  );
  return gb?.enabled === true;
}
与 Auto Memory Extraction 的关系:Auto Dream 和 Auto Memory Extraction 是两个互补的系统。Auto Memory 在每次会话结束时提取即时记忆(「刚才发生了什么」),而 Auto Dream 在多个会话之后进行深度整合(「这段时间以来我学到了什么」)。前者是日志,后者是教科书。

9. Channel Notifications——MCP 推送

Channel Notifications 是 KAIROS 的外部集成接口——它允许 MCP 服务器向 Claude 推送「频道消息」,就像 Slack channel 中的消息一样。这为 Claude 打开了一个全新的输入通道:不只是用户在终端里打字,还可以是外部系统的事件通知。

claude/channel capability

Channel Notifications 通过 MCP 协议的 capability 机制实现。MCP 服务器在初始化时声明 claude/channel capability,然后通过 notifications/claude/channel 方法推送消息。

// 构建时门控
feature('KAIROS') || feature('KAIROS_CHANNELS')

// 运行时门控(GrowthBook)
tengu_harbor gate

消息格式与注入

MCP Channel 消息以 <channel-message> XML 标签包裹,作为 user-role 消息注入到 Claude 的对话上下文中:

<channel-message>
  <channel>plugin:name@marketplace</channel>
  {消息内容}
</channel-message>

Channel 的标识格式是 plugin:name@marketplace——这标识了消息来源于哪个 MCP 插件。Claude 可以根据 channel 标识决定如何处理消息(是否立即响应、是否需要用户确认等)。

企业配置

Channel Notifications 的启用可以在企业级别进行配置。channelsEnabled 配置项允许组织管理员控制哪些 MCP 服务器可以推送 channel 消息、消息的审批流程等。

权限模型

检查点说明
构建时 flagfeature('KAIROS') || feature('KAIROS_CHANNELS')
运行时 gatetengu_harbor GrowthBook gate
企业策略channelsEnabled 配置
MCP 服务器声明服务器必须声明 claude/channel capability

10. 远程会话架构——Daemon 的底层

KAIROS 的所有高级功能(主动心跳、后台工作、断线恢复)都建立在一个核心基础设施之上:远程会话架构。这是 Claude Code 从「本地终端应用」到「可远程连接的 Daemon 服务」的架构跃迁。

Bridge 在 KAIROS 中的角色

Bridge 是连接 Daemon 进程和 Viewer 客户端的通信层。在 KAIROS 模式下:

  +-------------------+         WebSocket        +-------------------+
  |                   |<------------------------->|                   |
  |  Daemon 进程      |    Bridge 通信层          |  Viewer 客户端    |
  |  (agentic loop)   |                          |  (REPL UI)        |
  |                   |  - 消息流转发             |                   |
  |  - API 调用       |  - 权限请求桥接           |  - 显示输出       |
  |  - 工具执行       |  - 状态同步               |  - 接收用户输入   |
  |  - 上下文管理     |  - 会话历史分页           |  - 权限审批       |
  |                   |                          |                   |
  +-------------------+                          +-------------------+
         |                                              |
         | JWT Token                               关闭/重连
         | 刷新调度器                               不影响 Daemon
         |
  +-------------------+
  |  Anthropic API    |
  +-------------------+

WebSocket 订阅机制

Viewer 客户端通过 WebSocket 与 Daemon 建立持久连接。连接建立后,Viewer 订阅 Daemon 的消息流,实时接收以下事件:

Session History 分页 API

当 Viewer 断线重连时,它需要追赶 Daemon 在断线期间产生的输出。Session History API 提供了分页查询机制,允许 Viewer 按时间范围获取历史消息。这确保了即使网络中断后重新连接,用户也能看到完整的执行历史。

viewer-only 模式

在 KAIROS 模式下,REPL 的角色发生了根本变化——它从「驱动者」变为「观察者 + 信使」:

传统 REPL 模式KAIROS Viewer 模式
REPL 直接驱动 agentic loopDaemon 驱动 agentic loop,REPL 只显示结果
用户输入直接进入对话用户输入通过 Bridge 转发给 Daemon
关闭终端 = 停止 Claude关闭终端 ≠ 停止 Daemon,可重新连接
权限审批在本地终端权限审批通过 Bridge 远程桥接

权限请求的远程桥接

当 Daemon 中的 Claude 需要执行一个需要用户审批的操作(如写入敏感文件、执行 destructive 命令)时,权限请求通过 Bridge 发送到 Viewer 客户端。Viewer 在终端中显示审批提示,用户做出决定后,结果通过 Bridge 返回给 Daemon。这个机制确保了即使在远程 Daemon 模式下,用户仍然保持对敏感操作的控制权。

JWT Token 刷新调度器

Daemon 进程是长时间运行的——可能运行数小时甚至数天。它使用的 JWT token 有有效期限制,需要定期刷新。Token 刷新调度器负责在 token 接近过期时自动获取新 token,确保 Daemon 的 API 调用不会因为 token 过期而中断。

11. KAIROS 的完整数据流

以下是从用户启动 KAIROS 到 AI 自主工作的完整数据流图。这是本文最重要的图示之一——它将前面所有章节的内容串联成一个完整的画面。

  用户启动: claude --assistant
  |
  +-- [1] CLI 解析
  |     options.assistant = true
  |
  +-- [2] 构建时检查
  |     feature('KAIROS') == true?
  |     |-- false --> 普通 REPL 模式
  |     |-- true  --> 条件 require assistantModule, kairosGate
  |
  +-- [3] 运行时门控
  |     markAssistantForced() (--assistant 跳过 GB gate)
  |     OR isKairosEnabled() (GB gate: tengu_kairos)
  |     |-- false --> 普通 REPL 模式
  |     |-- true  --> kairosEnabled = true
  |
  +-- [4] Trust Dialog
  |     checkHasTrustDialogAccepted()
  |     |-- false --> 打印警告, 禁用 KAIROS
  |     |-- true  --> 继续
  |
  +-- [5] 初始化链
  |     setKairosActive(true)
  |     options.brief = true (强制 Brief)
  |     initializeAssistantTeam() (预置 in-process team)
  |
  +-- [6] REPL 模式切换
  |     fullRemoteControl = true
  |     Bridge 启动 (WebSocket)
  |     REPL --> Viewer/Messenger 客户端
  |
  +-- [7] Daemon Agentic Loop 启动
        |
        +-- [7a] Proactive Mode 激活
        |     maybeActivateProactive()
        |     TICK_TAG 心跳注入
        |
        +-- [7b] Brief Mode 激活
        |     maybeActivateBrief()
        |     setUserMsgOptIn(true)
        |     系统提示注入 BRIEF_PROACTIVE_SECTION
        |
        +-- [7c] Channel 初始化 (如果启用)
        |     MCP 服务器 channel capability 注册
        |
        +-- [7d] 主循环
              |
              +--[收到用户输入]--+--[处理]--+--[Brief 输出]
              |                              |
              +--[收到 <tick>]---+--[检查环境]--+--[有工作]--> 执行
              |                              |--[无工作]--> Sleep
              |
              +--[收到 task-notification]---+--[综合]--+--[Brief 汇报]
              |
              +--[收到 channel-message]----+--[处理]--+--[Brief 或忽略]
              |
              +--[Auto Dream 门控通过]-----+--[Fork]--> Dream 子进程
              |                                         |
              |                                   [Phase 1-4]
              |                                         |
              |                                   [记忆文件更新]
              |
              +--[PR 事件 (如已订阅)]------+--[处理]--> 自动响应
                                                    |
                                              [Push Notification]
                                              (如果 proactive && 用户离线)
数据流要点:注意主循环中有四种输入来源(用户输入、tick 心跳、task-notification、channel-message),但只有一种面向用户的输出方式(SendUserMessage / Brief)。这是 KAIROS 的架构约束——所有用户可见输出都通过同一个管道,确保一致的消息格式和路由行为。

12. KAIROS vs OpenClaw 对比

KAIROS 和 OpenClaw 是同一愿景的两种实现路径。前者是 Anthropic 官方的、深度集成的方案;后者是社区驱动的、基于逆向工程的开源方案。以下是全面的对比分析。

总体对比

维度KAIROSOpenClaw
定位 Anthropic 官方原生实现。深度集成在 Claude Code 运行时中,与所有子系统(Bridge、Memory、Analytics、Permissions)紧密协作 社区逆向实现。作为 Claude Code 的外部包装层,通过注入 system prompt 和模拟用户输入来实现主动行为
架构 原生 Daemon 模式。Claude Code 进程本身就是 Daemon,通过 Bridge 与 Viewer 通信。所有状态管理、权限控制、工具调用都在同一进程中 外部编排模式。一个独立的编排进程管理 Claude Code 实例的生命周期,通过 stdin/stdout 或 API 接口注入指令
心跳机制 原生 <tick> XML 标签 + SleepTool。系统级别的非阻塞等待,与 Prompt Cache 对齐的 5 分钟间隔 外部定时器。通过 cron 或 setInterval 定期向 Claude Code 注入消息模拟心跳
主动性 Proactive Mode 系统提示 + Brief 工具 + Push Notification 三位一体 通过 system prompt 指令 + 外部消息注入实现
记忆/个性化 Auto Dream 记忆整合 + Auto Memory Extraction + memdir 持久存储 外部记忆文件 + 手动管理
编排能力 原生 Coordinator Mode + Worker 系统 + Scratchpad 共享 通过嵌套 Agent 调用或外部编排器
Skill 生态 内置 Skill 工具 + MCP 插件生态 兼容 Claude Code 的 Skill 系统 + 社区扩展
Token 消耗 Prompt Cache 优化(5 分钟 TTL)+ 构建时 DCE 减少 payload 无法利用内部 cache 优化,消耗通常更高
安全模型 Trust Dialog + Hooks + Classifier + 远程权限桥接 依赖用户自行配置权限规则
可用性 Feature-gated,需要通过 GrowthBook 灰度 开源,直接可用
GitHub 集成 原生 PR 事件订阅(SubscribePRTool) 通过 GitHub API 轮询或 webhook 接收器
断线恢复 Daemon 持续运行 + Session History 分页 API + Viewer 重连 依赖外部进程管理器(如 tmux, screen)

核心取舍

KAIROS 的优势
  • 深度集成:所有子系统紧密协作,没有「胶水层」的性能损失和状态不一致风险
  • 官方支持:随 Claude Code 更新而更新,不会因为内部 API 变化而失效
  • 安全可控:多层门控确保 AI 自主权的渐进式释放
  • 成本优化:利用 Prompt Cache、DCE 等内部优化手段降低 token 消耗
OpenClaw 的优势
  • 即时可用:不需要等待灰度发布,现在就能用
  • 完全透明:开源代码,所有行为都可审计
  • 灵活定制:可以自由修改心跳间隔、主动行为范围等参数
  • 跨模型:理论上可以适配不同的 AI 模型后端

13. 未来展望与思考

后提示词时代的含义

KAIROS 标志着我们正在从「提示词时代」过渡到「后提示词时代」。在提示词时代,人与 AI 的关系是:人说一句话,AI 做一件事。每次交互都是原子性的,AI 没有「记忆」、没有「计划」、没有「主动性」。

在后提示词时代,这个关系变为:人表达一个意图,AI 自主规划和执行。AI 拥有持久记忆(Auto Dream + memdir)、主动行为能力(Proactive Mode + Tick)、多任务编排能力(Coordinator Mode + Workers),以及持续运行的底层架构(Daemon + Bridge)。用户不再需要一步一步地指导 AI——而是表达目标,然后让 AI 自己去实现。

AI 自主权的渐进式释放

KAIROS 的 Feature Flag 体系不仅仅是技术实现的需要——它反映了 Anthropic 对 AI 自主权的渐进式释放策略。每个 flag 控制一个自主权维度:

自主权维度控制 Flag释放程度
持续运行(Daemon)KAIROSAI 可以在后台持续存在
主动沟通(Brief)KAIROS_BRIEFAI 可以主动发送消息
主动行动(Proactive)PROACTIVEAI 可以主动执行任务
多任务编排(Coordinator)COORDINATOR_MODEAI 可以编排多个并行任务
外部集成(Channels)KAIROS_CHANNELSAI 可以接收外部事件
GitHub 集成KAIROS_GITHUB_WEBHOOKSAI 可以响应代码仓库事件
推送通知KAIROS_PUSH_NOTIFICATIONAI 可以在用户不在时联系用户

这种渐进式释放是安全导向的设计——每打开一个 flag,AI 获得一个新的自主权维度,同时也引入新的风险面。Anthropic 通过 GrowthBook 灰度发布来逐步观察每个维度的安全性,在确认安全后才向更多用户开放。

Token 消耗问题的可能解法

KAIROS 的最大技术挑战是 token 消耗。一个持续运行的 Daemon 进程,每 5 分钟一次心跳,每次心跳需要读取完整上下文——这意味着巨大的 API 调用成本。当前的缓解措施包括:

未来可能的进一步优化方向:

从工具到员工的跨越

KAIROS 代表的不仅是一次技术升级,更是一次范式转换。当 AI 拥有了持续存在、主动行动、长期记忆的能力后,它就不再是一个「工具」——它更像是一个「员工」。

工具 vs 员工 的特征对比
特征工具员工KAIROS
存在方式用时启动,用完关闭持续在线Daemon 持续运行
沟通方式你说它做双向沟通Brief + Push Notification
工作方式一次一个任务多任务并行Coordinator + Workers
记忆能力无状态长期记忆Auto Dream + memdir
主动性被动等待指令主动发现和解决问题Proactive Mode + Tick
集成能力单一接口跨系统协作MCP Channels + GitHub Webhooks
离线工作不可能你不在时也能工作Daemon + 断线恢复

这个转变带来了深刻的问题:当 AI 从工具变为员工,我们需要什么样的新管理范式?如何设定 AI 员工的「工作边界」?如何审计它在你不在时做了什么?如何平衡自主性和可控性?

KAIROS 的多层 Feature Flag 体系和渐进式释放策略,正是 Anthropic 对这些问题的初步回答:不要一次性给 AI 全部自主权——而是一个维度一个维度地释放,在每一步都确认安全后再前进。

最后的思考:Kairos 在希腊语中意味着「关键时刻」。对于 AI 编程助手的发展来说,我们确实正处在这样一个关键时刻。KAIROS 系统不只是 Claude Code 的一个功能升级——它是 Anthropic 对「AI 应该如何与人类协作」这个根本问题的技术回答。从被动工具到主动员工的跨越已经开始,而 KAIROS 就是这个跨越的桥梁。
KAIROS Assistant Mode Daemon Proactive Brief Coordinator Auto Dream Feature Flag GrowthBook Bridge SleepTool Tick Worker Channel Push Notification OpenClaw