mcpField
I
introspect

introspect

github.com/0xdarkmatterAgent 工作流7857 次安装2 周前更新
代码仓库

关于 introspect

introspect 是用于分析 Claude Code 会话日志的技能,面向需要检查会话过程与使用情况的人。它配套提供 cc-session 命令,可查看工具调用、错误、文件、时间线并搜索会话。

主要功能

  1. 01查看会话概况与时间线
  2. 02统计工具使用及错误
  3. 03重建对话并追踪文件
  4. 04查看轮次、Agent 与成本估算
  5. 05按文本搜索会话日志
  6. 06输出 JSON 并筛选项目

适用场景

  1. 01检查某次会话中发生的操作
  2. 02查找工具错误和调用序列
  3. 03追踪会话读取或修改的文件
  4. 04跨项目搜索会话内容

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/0xdarkmatter/claude-mods --skill introspect

安装后在 Claude Code 中输入/introspect确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
.gitkeep
references/
.gitkeep
session-analysis.md
scripts/
.gitkeep
cc-session

详细介绍

内省

从 Claude Code 会话日志中提取可执行的情报。有关通用 JSONL 分析模式(筛选、聚合、跨文件联接),请参阅 log-ops 技能。

cc-session CLI

scripts/cc-session 脚本提供零依赖分析(仅需 jq + bash)。它会自动解析当前项目和最近的会话。

# Copy to PATH for global access
cp skills/introspect/scripts/cc-session ~/.local/bin/
# Or on Windows (Git Bash)
cp skills/introspect/scripts/cc-session ~/bin/
命令
命令功能
cc-session overview条目计数、耗时、工具和思考总数
cc-session tools工具使用频率(已排序)
cc-session tool-chain按顺序追踪工具调用,并汇总输入
cc-session thinking完整的思考/推理内容块
cc-session thinking-summary每个思考内容块的前 200 个字符
cc-session errors包含错误模式的工具结果
cc-session conversation重建的用户/助手对话轮次
cc-session files已读取、编辑、写入的文件(含计数)
cc-session turns按轮次细分(耗时、使用的工具)
cc-session agents子 Agent 启动记录,含类型和提示词预览
cc-session cost粗略估算 Token/成本
cc-session timeline带时间戳的事件时间线
cc-session summary会话摘要(压缩边界)
cc-session search <pattern>搜索各会话(文本内容)
选项
--project, -p <name>    Filter by project (partial match)
--dir, -d <pattern>     Filter by directory pattern in project path
--all                   Search all projects (with search command)
--recent <n>            Use nth most recent session (default: 1)
--json                  Output as JSON instead of text
示例
cc-session overview                              # Current project, latest session
cc-session tools --recent 2                      # Tools from second-latest session
cc-session tool-chain                            # Full tool call sequence
cc-session errors -p claude-mods                 # Errors in claude-mods project
cc-session thinking | grep -i "decision"         # Search reasoning
cc-session search "auth" --all                   # Search all projects
cc-session turns --json | jq '.[] | select(.tools > 5)'  # Complex turns
cc-session files --json | jq '.edited[:5]'       # Top 5 edited files
cc-session overview --json                       # Pipe to other tools

分析决策树

What do you want to know?
|
|- "What happened in a session?"
|  |- Quick overview ---- cc-session overview
|  |- Full conversation -- cc-session conversation
|  |- Timeline ---------- cc-session timeline
|  |- Summaries --------- cc-session summary
|
|- "How was I using tools?"
|  |- Frequency ---------- cc-session tools
|  |- Call sequence ------- cc-session tool-chain
|  |- Files touched ------- cc-session files
|
|- "What was I thinking?"
|  |- Full reasoning ------ cc-session thinking
|  |- Quick scan ---------- cc-session thinking-summary
|  |- Topic search -------- cc-session thinking | grep -i "topic"
|
|- "What went wrong?"
|  |- Tool errors --------- cc-session errors
|  |- Debug trajectory ---- cc-session tool-chain (trace the sequence)
|
|- "Compare sessions"
|  |- Tool usage diff ----- cc-session tools --recent 1 vs --recent 2
|  |- Token estimation ---- cc-session cost
|
|- "Search across sessions"
|  |- Current project ----- cc-session search "pattern"
|  |- All projects -------- cc-session search "pattern" --all

会话日志架构

文件结构
~/.claude/
|- projects/
|   |- {project-path}/                        # e.g., X--Forge-claude-mods/
|       |- sessions-index.json                # Session metadata index
|       |- {session-uuid}.jsonl               # Full session transcript
|       |- agent-{short-id}.jsonl             # Subagent transcripts

项目路径使用双连字符编码:C:\Projects\my-repo -> C--Projects-my-repo

条目类型
类型角色关键字段
user用户消息 + 工具结果message.content[].type = "text" 或 "tool_result"
assistantClaude 响应message.content[].type = "text"、"tool_use" 或 "thinking"
system轮次耗时、压缩subtype = "turn_duration"(含 durationMs)或 "compact_boundary"
progressHook/工具进度事件data.type、toolUseID、parentToolUseID
file-history-snapshot文件状态检查点snapshot、messageId、isSnapshotUpdate
queue-operation消息队列事件operation、content
last-prompt最近用户提示词缓存lastPrompt
summary压缩摘要summary、leafUuid
内容块类型(位于 message.content[] 内)
内容块类型出现位置字段
textuser、assistant.text
tool_useassistant.id、.name、.input
tool_resultuser.tool_use_id、.content
thinkingassistant.thinking、.signature
通用字段(所有条目类型)
uuid, parentUuid, sessionId, timestamp, type,
cwd, gitBranch, version, isSidechain, userType

会话日志保留期限

默认情况下,Claude Code 会在启动时删除闲置超过 30 天的会话。延长保留期限,以便留存历史记录用于分析。

// ~/.claude/settings.json
{
  "cleanupPeriodDays": 90
}

当前设为 90 天。请根据磁盘用量调整(dust -d 1 ~/.claude/projects/)。

jq 快速参考

如果 cc-session 无法满足需求,可使用以下命令进行一次性查询:

# Pipe through cat on Windows (jq file args can fail)
cat session.jsonl | jq -r 'select(.type == "assistant") | .message.content[]? | select(.type == "tool_use") | .name'

# Two-stage for large files
rg '"tool_use"' session.jsonl | jq -r '.message.content[]? | select(.type == "tool_use") | .name'

会话洞察

运行任何分析后,始终生成“会话洞察”部分,并提供可执行的建议。语气应友好且具有指导性——像一位发现了一些规律、愿意提供帮助的同事,而不是批评者。

值得关注的方面

扫描会话数据中的以下模式,并在适用时生成建议:

工具使用改进:

  • 使用 Bash(grep ...) 或 Bash(cat ...) 代替 Grep/Read 工具——建议改用专用工具
  • 多次使用相同输入调用工具但均失败——建议尽早转换思路
  • 对于技能可处理的任务,大量使用 Bash——按名称推荐相应技能
  • 在可并行执行独立读取/搜索时,没有使用并行工具调用

工作流模式:

  • 长时间会话中没有提交——建议逐步提交
  • 会话结束时没有使用 /save——提醒保持会话连续性
  • 反复重新读取上下文(同一文件读取 3 次以上)——建议记录笔记或使用 /save
  • 大段手动工作本可由 /iterate 自动完成——提及循环模式
  • 陷入调试循环(针对同一方法尝试 5 次以上)——建议采用 3 次尝试后转换思路的规则

技能和命令使用意识:

  • 手动进行代码审查但未使用 /review——提及该技能
  • 编写测试但未使用 /testgen——提及该技能
  • 复杂推理未使用 /atomise——对于难题,提及该技能
  • 为技能已能处理的任务启动 Agent——建议使用更轻量的方案

会话效率:

  • 会话特别长(工具调用 100 次以上)——建议拆分为多个目标明确的会话
  • 错误率较高(超过 30% 的工具调用返回错误)——指出这一模式并建议调查原因
  • 文件读取与编辑的比例过高(超过 10:1)——可能表明缺乏方向,建议先制定计划

权限建议: 这项价值很高——权限提示会打断工作流程并占用上下文。扫描会话中的以下内容:

  • 多次成功使用的 Bash 命令——这些命令可考虑加入 Bash(<command>:*) 允许规则
  • 频繁出现的工具模式(WebFetch、WebSearch、特定 MCP 工具)——建议将其加入允许列表
  • 因权限错误而失败或重试的命令——可能是缺少权限导致的

为 .claude/settings.local.json 生成可直接粘贴的 permissions.allow 片段:

**Permissions**

Based on this session, these tools were used frequently and could be
pre-approved to reduce interruptions:

Add to `.claude/settings.local.json` under `permissions.allow`:
  "Bash(uv:*)",
  "Bash(pytest:*)",
  "Bash(docker:*)",
  "WebSearch",
  "mcp__my-server__*"

This would have saved roughly ~N permission prompts in this session.

只推荐实际成功使用过的命令——切勿建议使用宽泛的 Bash(*)。但在合理的情况下,应鼓励使用通配符模式——Bash(git:*) 比分别列出 Bash(git status)、Bash(git add)、Bash(git commit) 更好。常见的通配符组:

  • Bash(git:*)——所有 git 操作
  • Bash(npm:*)、Bash(pnpm:*)、Bash(uv:*)——包管理器
  • Bash(pytest:*)、Bash(jest:*)——测试运行器
  • Bash(docker:*)、Bash(cargo:*)、Bash(go:*)——构建/运行时工具
  • mcp__server-name__*——某个 MCP 服务的所有工具

为清晰起见,按类别整理建议。如果列表较长,请参阅 /setperms 了解完整的权限设置。

输出格式
## Session Insights

Here are a few things I noticed that might help next time:

**[Category]**
- [Observation]: [What was seen in the data]
- [Suggestion]: [Friendly, specific recommendation]

**[Category]**
- ...

根据会话规模调整建议数量。10 分钟的快速会话可能只需要 1-2 条观察结果;持续数小时且工具调用超过 100 次的大型会话,则可能有 10-15 条可执行的建议。分析深度应与会话内容相匹配。

只提及数据中明确存在的模式——不要猜测或牵强附会。如果会话干净且高效,请说明:“这是一次组织良好的会话——没有明显需要改进的地方。”

参考文件

文件内容
scripts/cc-sessionCLI 工具——提供 14 个命令进行会话分析,支持 JSON 输出和项目筛选
references/session-analysis.md用于执行 cc-session 无法涵盖的自定义分析的原始 jq 配方

另请参阅

  • log-ops——通用 JSONL 处理、两阶段流水线、跨文件关联
  • data-processing——使用 jq 和 yq 处理 JSON/YAML/TOML

评论

支持 Markdown