Skip to content
源码分析手册

Insights 与情绪检测:Claude 比你更懂你的工作

一句话讲清楚

Insights 是 Claude Code 内置的一套自省与分析系统。它不只是简单的命令计数器,而是一个基于大模型的“行为分析专家”。它通过扫描你本地的会话日志,分析你的操作习惯、遇到的困难、甚至你说话时的情绪,最终生成一份包含 CSS 图表的高质量 HTML 报告。

实现机制

  1. 七大维度并行分析: 当你执行 /insights 时,系统会启动 7 个并行的 AI 任务。每个任务负责一个特定的切片:项目区域识别、交互风格评估、成功经验总结、摩擦点分析、功能建议、未来展望,以及一个寻找“趣味瞬间”的任务。

  2. 非关键词的情绪分类: Claude 不使用简单的关键词匹配来判断用户是否开心。它将对话片段发送给 LLM(通常是 Opus 模型),根据语义将用户情绪归类为:happy(兴奋)、satisfied(满意)、likely_satisfied(默认好评)、dissatisfied(不满)、frustrated(沮丧)。

  3. 多维度数据足迹追踪: 它会扫描 ~/.claude/projects/ 下的 .jsonl 文件,提取:

    • 摩擦类型(Friction):包括请求误解、方案错误、代码 Bug、用户拒绝操作、过度改动等。
    • 工作强度:Token 消耗、Git Commit/Push 频率、用户响应时间分布。
    • 多开检测(Multi-clauding):通过滑动窗口算法检测用户是否在 30 分钟内交替使用多个 Claude 实例。
  4. AutoDream:夜间“梦境”整合: 后台记忆固化机制,在满足时间和会话数阈值后通过受限子代理自动整合关键记忆。详见 AutoDream 专题

  5. AwaySummary:暖心的“回场小结”: 当你离开一段时间重新回到终端时,awaySummary 会提取最后 30 条消息,用最快的模型(Fast Model)总结出:“你刚才在做 X,下一步建议做 Y”,帮你迅速找回状态。

别踩这些坑

  • 隐私界限:所有的分析默认在本地进行。虽然生成的报告可以手动上传(Ant-only 逻辑),但原始的 .jsonl 日志始终保留在用户的 .claude 目录下。
  • 性能开销:由于涉及大量的日志读取和 LLM 并行调用,在大型项目或历史记录极多时,/insights 可能会消耗不少 Token 和时间。
  • 模型依赖:分析质量高度依赖于 getDefaultOpusModel(),如果配置了低质量模型,情绪检测的准确度会大幅下降。

继续探索

想深入了解 Claude 如何存储这些数据,可以阅读 src/utils/sessionStorage.ts;如果对后台任务的调度感兴趣,请查看 src/tasks/DreamTask/

源码锚点

  • src/commands/insights.ts: 核心分析逻辑、HTML 报告生成、情绪分类 Prompt。
📄 src/commands/insights.ts — 核心分析逻辑、HTML 报告生成、情绪分类 Prompt。L348-352 of 3201
typescript
  '.html': 'HTML',
}

// Label map for cleaning up category names (matching Python reference)
const LABEL_MAP: Record<string, string> = {
  • src/services/autoDream/autoDream.ts: 后台记忆整合的触发阈值与执行逻辑。
📄 src/services/autoDream/autoDream.ts — 后台记忆整合的触发阈值与执行逻辑。L56-61 of 325
typescript
const SESSION_SCAN_INTERVAL_MS = 10 * 60 * 1000

type AutoDreamConfig = {
  minHours: number
  minSessions: number
}
  • src/services/awaySummary.ts: 简短回顾的生成策略。
📄 src/services/awaySummary.ts — 简短回顾的生成策略。L16-23 of 75
typescript
const RECENT_MESSAGE_WINDOW = 30

function buildAwaySummaryPrompt(memory: string | null): string {
  const memoryBlock = memory
    ? `Session memory (broader context):\n${memory}\n\n`
    : ''
  return `${memoryBlock}The user stepped away and is coming back. Write exactly 1-3 short sentences. Start by stating the high-level task — what they are building or debugging, not implementation details. Next: the concrete next step. Skip status reports and commit recaps.`
}

基于 Claude Code v2.1.88 开源快照的深度分析