未发布功能 · 产品分析报告

KAIROS / PROACTIVE
自主代理系统

让 Claude Code 从"被动响应工具"进化为"主动工作伙伴"——在用户不在时自主运转、感知变化、主动汇报

代码状态 已实现,灰度中
核心功能数 6 个主模块
启用方式 Feature Flag / 环境变量
分析时间 2026-04-02
1
核心产品定位
这个功能究竟在解决什么问题?

从"召之即来"到"时刻在线"

当前 Claude Code 是纯响应式工具——用户输入,模型响应,等待下一次输入。KAIROS/PROACTIVE 系统的目标是打破这一范式:让 Claude 在用户离开后继续工作、监控变化、并在合适时机主动汇报结果,无需用户持续盯守。

定时自主执行

用户创建 cron 任务后,Claude 在后台按计划自动运行,每秒检查调度状态,触发时自动执行对应 prompt。

📨

主动消息通道

专属的 SendUserMessage 工具负责推送结果,区分"回答用户提问"与"主动发起通知"两种不同语义。

🕸️

事件驱动集成

通过 GitHub Webhook 监听 PR 评论、CI 结果等外部事件,事件到来时自动唤醒并处理,无需手动轮询。

2
整体技术架构
六大模块协同构建"主动代理"能力
📡

SendUserMessage 工具(Brief Tool)

tools/BriefTool/BriefTool.ts · prompt.ts

专为主动场景设计的消息发送工具。区别于普通文本输出,所有用户可见的内容必须通过这个工具投递,确保不会因用户未展开详情视图而错过关键信息。

  • status: 'normal' — 回复用户刚才的请求
  • status: 'proactive' — 主动发起(任务完成/遭遇阻塞/需要用户决策)
  • 支持 Markdown 富文本与文件附件
  • 下游路由依赖 status 字段进行差异化处理

Cron 定时任务调度器

utils/cronScheduler.ts · cronTasks.ts

完整的定时任务基础设施,支持一次性与重复性任务,持久化到 .claude/scheduled_tasks.json,跨会话保持生效。

  • 每秒检查一次(CHECK_INTERVAL_MS = 1000)
  • 分布式锁机制防多会话重复触发
  • 5 分钟锁探测,支持 crash 后接管
  • 重复任务 7 天自动过期(可配置)
  • 抖动配置(Jitter)防止整点流量峰值
🧠

Proactive 模式(系统提示注入)

main.tsx:2197–2204

通过修改系统提示,激活模型的主动工作意识。模型将接收周期性的 <tick> 信号,自主判断执行任务还是调用 Sleep 待机。

# 注入的系统提示片段
You are in proactive mode. Take initiative —
explore, act, and make progress without waiting
for instructions.

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

Coordinator 多 Worker 协调器

coordinator/coordinatorMode.ts

专为复杂并行任务设计的编排层。Coordinator 是"总指挥",可同时派发多个 Worker 并行执行,收集结果后综合汇报给用户。

  • Agent 工具:创建新 Worker
  • SendMessage 工具:给现有 Worker 发指令
  • TaskStop 工具:终止 Worker
  • subscribe_pr_activity:订阅 GitHub PR 事件
  • 共享 Scratchpad 目录,跨 Worker 知识传递
🔗

GitHub Webhook 集成(KAIROS_GITHUB_WEBHOOKS)

commands/subscribe-pr.js · coordinatorMode.ts:133

事件驱动的 PR 监听能力。订阅后,GitHub 的 Review 评论、CI 构建结果等事件会以"用户消息"形式到达,Coordinator 自动路由给对应 Worker 处理。

  • subscribe_pr_activity / unsubscribe_pr_activity
  • 支持 review 评论、CI 结果等事件
  • 注意:mergeable_state 变更不走 webhook,需要轮询
  • 事件以 <task-notification> XML 格式投递
💤

Away Summary 离开摘要

hooks/useAwaySummary.ts

用户离开终端 5 分钟后,自动生成一份"在你离开期间发生了什么"的摘要,帮助用户快速恢复上下文,无需翻看全部对话记录。

  • 5 分钟失焦触发(BLUR_DELAY_MS = 300,000ms)
  • 仅在无活跃查询时触发
  • 消息类型:system · subtype: 'away_summary'
  • GB 门控:tengu_sedge_lantern(默认关)
3
典型用户体验路径
从用户视角看完整交互流程

"你创建了一个任务:'每 5 分钟检查部署状态,如果失败立刻通知我'。然后你去开会了。Claude 默默地在后台工作——每 5 分钟检查一次,发现生产环境 auth 服务挂了,主动给你发消息:'部署失败:auth 服务 500 错误,位于 src/auth/validate.ts:42'。你从手机上看到通知,回来直接修复,无需任何轮询。"

— 场景还原(基于代码逻辑推断)
1
初始化
用户启用主动模式
通过 --proactive --brief 标志或 CLAUDE_CODE_PROACTIVE=1 环境变量启动。系统检查三层 Feature Flag,注入 Proactive 系统提示,启动 Brief 工具和 Cron 调度器。
2
任务创建
用户描述需求,Claude 创建定时任务
用户自然语言描述 "每 5 分钟检查一次",Claude 调用 CronCreate 工具创建任务,持久化到 .claude/scheduled_tasks.json
CronCreate({
  cron: "*/5 * * * *",
  prompt: "检查部署状态,失败则通知用户",
  durable: true // 持久化,重启后依然有效
})
3
后台运行
用户离开,调度器接管
调度器每秒轮询。5 分钟后触发,将任务 prompt 注入消息队列(优先级 'later',标记 WORKLOAD_CRON),REPL 在下一个空闲轮次处理。
4
检测异常
Claude 发现问题,主动推送
Claude 执行检查,发现失败,调用 SendUserMessage 工具推送消息,status 标记为 'proactive',确保消息出现在用户的 Brief 视图最显眼位置。
SendUserMessage({
  message: "⚠️ 部署失败:auth 服务 500 错误\n位于 `src/auth/validate.ts:42`",
  status: "proactive", // 主动发起,非回复
  attachments: ["logs/error.log"]
})
5
用户回归
Away Summary 帮助快速恢复上下文
用户重新打开终端,Away Summary 展示离开期间的关键事件摘要,无需滚动查看全部历史。用户直接定位到问题,一键修复。
Coordinator 模式 — 并行工作流
Coordinator
接收任务
分析拆解
并行
Worker A
研究代码库
+
并行
Worker B
分析 PR 评论
+
并行
Worker C
运行测试
Coordinator
综合汇报
SendUserMessage
并行是 Coordinator 的核心超能力——独立任务同时执行,总时间取最长 Worker 而非累加
4
关键设计决策解读
从代码注释和架构选择看产品思路

💡 为什么要 SendUserMessage 而不用普通文本?

"Text outside this tool is visible in the detail view, but most won't open it — the answer lives here."

tools/BriefTool/prompt.ts:6

设计哲学:用户不会主动打开详情视图查看 Claude 的内部思考过程。真正重要的内容必须通过专用工具主动推送,否则就像发了邮件但邮件落在垃圾箱里。

💡 为什么先发"收到"再工作?

"If you need to go look — run a command, read files — ack first in one line ('On it — checking the test output'), then work, then send the result. Without the ack they're staring at a spinner."

tools/BriefTool/prompt.ts:18

用户体验优先:长时间操作必须先发确认,避免用户面对沉默的 loading 状态产生焦虑。设计细节体现了深刻的用户心理洞察。

💡 为什么 status 字段要区分 normal/proactive?

两种消息在用户感知层面截然不同:

  • normal:我在回答你的问题,是"对话"
  • proactive:我发现了什么要告诉你,是"推送通知"

下游系统根据这个字段做路由,未来可以映射到不同的 UI 展示形式(如桌面通知、侧边栏等)。

💡 为什么调度器每秒检查但要设计 Jitter?

两个看似矛盾的设计目标:

  • 精确性:1 秒粒度检查保证任务不晚触发
  • 平稳性:Jitter 防止所有用户在 :00 整点同时请求 API,避免流量峰值

通过 GrowthBook 动态下发 Jitter 配置,可以在不发版的情况下调整延迟参数。

5
多层功能门控体系
三层防护确保灰度发布安全可控
功能门控名称 层级 作用 默认值 刷新 TTL
KAIROS / PROACTIVE 编译时 Flag 整体功能是否编译进产物 关闭
KAIROS_BRIEF 编译时 Flag Brief 工具是否可单独启用 关闭
AGENT_TRIGGERS 编译时 Flag Cron 定时任务系统 关闭
tengu_kairos_brief GrowthBook Brief 工具运行时可用性(kill switch) false 5 分钟
tengu_kairos_cron GrowthBook Cron 调度器运行时开关 true 5 分钟
tengu_kairos_cron_durable GrowthBook 任务是否持久化到文件 true 5 分钟
tengu_kairos_brief_config GrowthBook /brief 命令对用户可见性 false
tengu_sedge_lantern GrowthBook Away Summary 功能 false Stale
CLAUDE_CODE_PROACTIVE 环境变量 强制启用 Proactive 模式(开发用) 关闭
CLAUDE_CODE_DISABLE_CRON 环境变量 紧急关闭 Cron 调度器 不禁用
门控设计含义
三层设计(编译时 → GrowthBook → 环境变量)体现了成熟的灰度策略:编译时 Flag 控制功能是否存在于产物中(无法被用户绕过);GrowthBook 实现动态灰度放量和 kill switch,5 分钟 TTL 允许紧急熔断;环境变量 为内部开发者提供快速测试通道。
6
产品策略解读
站在 PM 视角,这个功能在下什么棋?
01

从工具到代理的范式转移

这是 Claude Code 从"响应式工具"向"自主代理"演进的关键一步。代理不等待指令,它主动感知环境、执行任务、报告结果。KAIROS 是这个战略转型的技术基础设施。

02

异步工作流解锁新使用场景

当前 Claude Code 要求用户全程陪伴。主动模式使"交给 Claude 然后去做其他事"成为可能,解锁 CI/CD 监控、定时代码审查、PR 变化跟踪等高价值长尾场景。

03

多 Worker 并行是差异化竞争力

Coordinator 模式让 Claude 可以并行执行多个子任务,"并行是你的超能力"直接写进了 Coordinator 的系统提示。这在复杂软件工程任务中是极大的时间节省。

04

通知设计先于 UI 设计

status: 'proactive' 字段以及 SendUserMessage 作为专用通道,体现了 Anthropic 在 UI 还未设计好之前就为"主动推送"建立语义模型——这为未来多端通知奠定了架构基础。

05

外部事件集成是护城河

GitHub Webhook 集成让 Claude 成为开发流程的一部分,而非独立工具。当 Claude 能监听 PR 变化并自动响应时,切换成本急剧提高——这是典型的工作流嵌入战略。

06

工作量感知与成本治理

Cron 任务被标记为 WORKLOAD_CRON,Away Summary 和主动任务会区分工作负载类型。这是为差异化计费和配额管理预埋的基础设施——后台任务可能会有独立的计费逻辑。

7
竞品能力对比
KAIROS/PROACTIVE 在市场中的差异化定位
能力维度 Claude Code (KAIROS) GitHub Copilot Cursor Devin
定时自动执行任务 Cron 调度器 有限支持
主动推送通知 SendUserMessage
多 Worker 并行执行 Coordinator 模式 有限
GitHub 事件驱动 Webhook 订阅 只读感知
离开摘要 Away Summary
用户会话内使用 完整 IDE 体验 独立平台
任务持久化(跨会话) .claude/scheduled_tasks.json
✓ 支持  △ 部分支持  ✗ 不支持  — 对比基于公开信息,可能存在偏差
8
风险评估与 PM 建议
功能落地需要重点关注的问题

用户信任建立 高风险

AI 在后台自主执行代码操作,用户可能无法感知在发生什么。建议:提供完整的任务运行日志,允许随时暂停/审查所有计划任务,建立清晰的"Claude 正在做什么"可见性界面。

通知疲劳 高风险

Proactive 消息如果过于频繁或噪音过多,用户会迅速关闭该功能。代码注释中已有意识到这个问题(要求"keep messages tight"),但需要 更严格的推送频率限制和质量门槛

成本不可控 中风险

后台任务持续消耗 token,用户可能对成本缺乏感知。已有 WORKLOAD_CRON 标记预埋了差异化计费基础。建议:在任务创建时展示预估成本,设置月度 token 预算上限。

任务失控/死循环 中风险

Coordinator 派发的 Worker 如果陷入循环或执行破坏性操作,后果严重。7 天自动过期机制和分布式锁是必要的,还需要:Worker 执行超时限制、危险操作二次确认机制。

多实例冲突 低风险

用户同时打开多个 Claude Code 窗口时,分布式锁(cronTasksLock.ts)已处理任务重复触发问题。5 秒探测间隔确保 crash 后能正确接管。设计较为完善。

GitHub 权限边界 低风险

Webhook 订阅需要明确的 OAuth 授权范围。注释中已提醒 mergeable_state 不走 webhook 需要轮询。建议:在授权时明确告知用户 Claude 将监听哪些 PR 事件,提供随时取消订阅的入口。

发布路径建议(基于现有代码成熟度)
阶段一 · 近期
Cron 定时任务
代码最成熟,分布式锁和持久化均已完备。可先作为 Beta 功能开放给 Pro 用户。
阶段二 · 中期
Brief 模式 + Away Summary
需要配套 UI 设计,确保通知不打扰正常交互。Away Summary 是低风险好用户体验的功能。
阶段三 · 远期
Coordinator + GitHub Webhooks
需要完善权限边界设计和成本管理机制,适合针对 Team/Enterprise 用户发布。