macOS 首次启动需右键选择「打开」;Windows 安装包可能触发 SmartScreen,需点「更多信息」再「仍要运行」;Docker 部署需把 ~/.claude 挂载到 /data/.claude 并访问 3456 端口

claude-devtools
matt1398MIT活跃维护给 Claude Code 补上的可视化调试面板,能直观查看会话日志、工具调用、token 消耗、子代理和上下文窗口占用,方便排查 AI 编码代理的运行问题。
The missing DevTools for Claude Code — inspect session logs, tool calls, token usage, subagents, and context window in a visual UI. Free, open source.
brew install --cask claude-devtools
docker compose upREADME 未说明显存或 GPU 要求;提供 macOS、Linux、Windows 桌面安装包,也可用 Docker 或 Node.js 20+ 独立运行
可视化查看 Claude Code 会话日志、工具调用与 token 用量的调试工具
给 Claude Code 补上的可视化调试面板,能直观查看会话日志、工具调用、token 消耗、子代理和上下文窗口占用,方便排查 AI 编码代理的运行问题。
核心能力
- 读取 ~/.claude 日志重建完整会话,无需 API key
- 按 7 类来源逐轮归因上下文窗口 token 消耗
- 展开工具调用,显示文件路径、语法高亮与内联 diff
- 按 agent 渲染子代理执行树,含 token、耗时与成本
- 可视化上下文压缩过程,并支持 SSH 远程会话检查
容易踩的坑
- v0.5.00.5.0最新正式版2026-05-13 · 2026-05-13 09:10 UTC
What's Changed
- chore(deps-dev): bump vite from 5.4.21 to 6.4.2 in the npm_and_yarn group across 1 directory by @dependabot[bot] in https://github.com/matt1398/claude-devtools/pull/171
- docs: expand CHANGELOG with full release history and polish README by @matt1398 in https://github.com/matt1398/claude-devtools/pull/196
- fix: align session sidebar recency with file updates by @Arshgill01 in https://github.com/matt1398/claude-devtools/pull/193
- Feat/memory viewer by @matt1398 in https://github.com/matt1398/claude-devtools/pull/197
- chore(deps): bump the npm_and_yarn group across 1 directory with 9 updates by @dependabot[bot] in https://github.com/matt1398/claude-devtools/pull/195
- feat(memory): improve memory handling and regex performance across co… by @matt1398 in https://github.com/matt1398/claude-devtools/pull/198
Full Changelog: https://github.com/matt1398/claude-devtools/compare/v0.4.16...v0.5.0
- v0.4.160.4.162026-05-06 · 2026-05-06 11:41 UTC
查看更新说明
What's Changed
- fix(discovery): list sessions from git worktrees by @Arshgill01 in https://github.com/matt1398/claude-devtools/pull/191
- feat(ssh): make SSH connection robust and self-diagnosing by @matt1398 in https://github.com/matt1398/claude-devtools/pull/192
New Contributors
- @Arshgill01 made their first contribution in https://github.com/matt1398/claude-devtools/pull/191
Full Changelog: https://github.com/matt1398/claude-devtools/compare/v0.4.15...v0.4.16
- v0.4.150.4.152026-04-30 · 2026-04-30 14:51 UTC
查看更新说明
What's Changed
- fix(release): correct arch routing for macOS dmg + in-app updates by @matt1398 in https://github.com/matt1398/claude-devtools/pull/189
Full Changelog: https://github.com/matt1398/claude-devtools/compare/v0.4.14...v0.4.15
- v0.4.130.4.13pre-release2026-04-27 · 2026-04-27 11:45 UTC
查看更新说明
What's Changed
- fix: prevent stale session detail and 60s update lag by @matt1398 in https://github.com/matt1398/claude-devtools/pull/183
- feat: add hover copy button to last output markdown by @matt1398 in https://github.com/matt1398/claude-devtools/pull/182
- fix(MermaidViewer): clean up orphan error SVG left in document.body by @GoldenXPig in https://github.com/matt1398/claude-devtools/pull/184
New Contributors
- @GoldenXPig made their first contribution in https://github.com/matt1398/claude-devtools/pull/184
Full Changelog: https://github.com/matt1398/claude-devtools/compare/v0.4.11...v0.4.13
- v0.4.100.4.102026-04-05 · 2026-04-05 10:08 UTC
查看更新说明
What's Changed
- fix: sessions not loading on project navigation without restart by @Psypeal in https://github.com/matt1398/claude-devtools/pull/137
- chore(deps): bump fastify from 5.8.1 to 5.8.3 in the npm_and_yarn group across 1 directory by @dependabot[bot] in https://github.com/matt1398/claude-devtools/pull/141
- fix: show copy button only on code blocks, not entire text output by @Psypeal in https://github.com/matt1398/claude-devtools/pull/145
- chore(deps): bump the npm_and_yarn group across 1 directory with 3 updates by @dependabot[bot] in https://github.com/matt1398/claude-devtools/pull/155
- feat: session ID lookup in CommandPalette (Cmd+K) by @WesleyMFrederick in https://github.com/matt1398/claude-devtools/pull/153
- fix: compute real message count in light metadata path by @romeromarcelo in https://github.com/matt1398/claude-devtools/pull/134
- Fix #152: 🎉 Your project has been featured in Awesome Claude Code! by @JiwaniZakir in https://github.com/matt1398/claude-devtools/pull/157
- Fix/issue 142 settings not applied on startup by @nevdelap in https://github.com/matt1398/claude-devtools/pull/161
- fix(ssh): resolve private key paths correctly by @adriencaccia in https://github.com/matt1398/claude-devtools/pull/159
- chore(deps): bump the npm_and_yarn group across 1 directory with 2 updates by @dependabot[bot] in https://github.com/matt1398/claude-devtools/pull/160
- feat: render mermaid code blocks as interactive diagrams (#124) by @matt1398 in https://github.com/matt1398/claude-devtools/pull/128
- chore(deps): bump the npm_and_yarn group across 1 directory with 2 updates by @dependabot[bot] in https://github.com/matt1398/claude-devtools/pull/162
- feat: add tab rename and fix sidebar collapse layout by @Psypeal in https://github.com/matt1398/claude-devtools/pull/133
- fix: address code review feedback from #153 (session ID lookup) by @WesleyMFrederick in https://github.com/matt1398/claude-devtools/pull/156
- perf: optimize macOS UI responsiveness by @Psypeal in https://github.com/matt1398/claude-devtools/pull/163
- perf: fix renderer heap exhaustion on long-running sessions by @Psypeal in https://github.com/matt1398/claude-devtools/pull/120
- fix: open links in system browser instead of Electron window by @Psypeal in https://github.com/matt1398/claude-devtools/pull/143
- Fixed plain HTTP UUID creation by @RubbaBoy in https://github.com/matt1398/claude-devtools/pull/135
- perf: lazy-load mermaid to reduce main bundle size by @matt1398 in https://github.com/matt1398/claude-devtools/pull/164
New Contributors
- @WesleyMFrederick made their first contribution in https://github.com/matt1398/claude-devtools/pull/153
- @romeromarcelo made their first contribution in https://github.com/matt1398/claude-devtools/pull/134
- @JiwaniZakir made their first contribution in https://github.com/matt1398/claude-devtools/pull/157
- @nevdelap made their first contribution in https://github.com/matt1398/claude-devtools/pull/161
- @adriencaccia made their first contribution in https://github.com/matt1398/claude-devtools/pull/159
- @RubbaBoy made their first contribution in https://github.com/matt1398/claude-devtools/pull/135
Full Changelog: https://github.com/matt1398/claude-devtools/compare/v0.4.9...v0.4.10
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
The Problem
Claude Code started hiding what it does.
Since v2.1.20, Claude Code replaced detailed output with opaque summaries. Read 3 files. Searched for 1 pattern. Edited 2 files. No file paths. No content. No line numbers. The community backlash was immediate.
But the problem goes deeper than collapsed file paths:
- Thinking steps — Claude's chain-of-thought reasoning is completely invisible in the terminal
- Tool call details — you see a one-line summary, not the actual input/output
- Subagent activity — agents spawn agents, but you only see the final result
- Context window — a three-segment progress bar with no breakdown of what's consuming your tokens
- Team coordination — teammate messages, task delegation, shutdown requests — all buried
The only workaround is --verbose, which dumps raw JSON, internal system prompts, and thousands of lines of noise. There is no middle ground.
The Solution
claude-devtools is the debugging tool for Claude Code. It reads the Claude Code logs and session transcripts already saved to ~/.claude/ on your machine, and reconstructs everything.
| What the terminal hides | What claude-devtools shows |
|---|---|
Read 3 files | Exact file paths, syntax-highlighted content with line numbers |
Searched for 1 pattern | The regex pattern, every matching file, matched lines |
Edited 2 files | Inline diffs with added/removed highlighting |
| Three-segment context bar | Per-turn token attribution across 7 categories with compaction visualization |
| Collapsed subagent output | Full execution trees per agent with tool traces, tokens, duration, cost |
| Nothing about thinking | Extended thinking content, fully visible |
--verbose JSON dump | Structured, filterable, navigable interface — no noise |
Per-project Claude memory hidden in ~/.claude/projects/.../memory/ | MEMORY.md rendered as a clickable index of layers; open any layer in your editor |
| Copy from terminal = wrapped lines, ANSI codes, broken Markdown | Real selectable text, one-click copy on every message and code block |
Zero configuration. No API keys. No wrappers. Works with every session you've ever run.
[!TIP] If claude-devtools saves you time debugging Claude Code, leaving a ⭐ on the repo is the single best way to support the project — it helps other developers find it.
Installation
Homebrew (macOS)
brew install --cask claude-devtools
Direct Download
| Platform | Download | Notes |
|---|---|---|
| macOS (Apple Silicon) | .dmg | Download the arm64 asset. Drag to Applications. On first launch: right-click → Open |
| macOS (Intel) | .dmg | Download the x64 asset. Drag to Applications. On first launch: right-click → Open |
| Linux | .AppImage / .deb / .rpm / .pacman | Choose the package format for your distro |
| Windows | .exe | Standard installer. May trigger SmartScreen — click "More info" → "Run anyway" |
| Docker | docker compose up | Open http://localhost:3456. See Docker deployment |
Key Features
Context Reconstruction
Per-turn token attribution across 7 categories — CLAUDE.md (global, project, directory), skills, @-mentioned files, tool I/O, thinking, team overhead, user text. See exactly what's in the context window at any point.
Terminal-Friendly Copy & Paste
Copying Claude Code output from the terminal mangles it — selection wraps at the terminal width, ANSI color codes leak into the clipboard, and code blocks lose their Markdown formatting. claude-devtools renders every message, tool call, and output as real selectable text with one-click copy on every code block, plus full-session export to Markdown / JSON / plain text.
Project Memory
Claude Code stores per-project memory at ~/.claude/projects/<project>/memory/ — a MEMORY.md index plus one .md file per layer (working style, architecture notes, etc.). claude-devtools surfaces this as a sidebar entry that opens a dedicated pane: layer list on the left, full markdown rendering on the right with frontmatter shown as a metadata card, Obsidian-style [[wikilinks]] for cross-layer navigation, and an icon-driven "Open in…" launcher that hands any layer (or the whole memory folder) off to Finder/Explorer, Cursor, VS Code, Zed, Xcode, iTerm, Ghostty, Terminal — or copies the absolute path.
Team & Subagent Trees
Isolated execution trees per agent with tool traces, token metrics, duration, and cost. Nested agents render recursively.
Tool Call Inspector
Every tool call expanded with specialized viewers — syntax-highlighted Read calls, inline Edit diffs, Bash output, and full subagent trees.
SSH Remote Sessions
Inspect sessions on any remote machine over SSH. Reads ~/.ssh/config, supports agent forwarding and key auth.
Compaction Visualization
See the moment your context hits the limit. Visualizes how context fills, compresses, and refills — so you know exactly what was lost. (Why did Claude forget? — debugging walkthrough)
Notification Triggers
System notifications for .env access, tool errors, high token usage, and custom regex patterns on any field.
Command Palette & Multi-Pane Layout
Cmd+K for cross-session search. Open multiple sessions side-by-side with drag-and-drop tabs.
📖 Full documentation: claude-dev.tools/docs · Copy from Claude Code: claude-dev.tools/docs/copy-paste · JSONL format reference: claude-dev.tools/docs/jsonl-format · claude --verbose comparison: claude-dev.tools/docs/verbose-vs-devtools
Not a Wrapper
claude-devtools does not wrap, modify, or interfere with Claude Code. It reads session logs that already exist on your machine. Works with sessions from the terminal, IDEs, or any tool that uses Claude Code.
Docker / Standalone Deployment
Run without Electron — in Docker, on a remote server, or anywhere Node.js runs.
docker compose up
# Open http://localhost:3456
Or manually:
docker build -t claude-devtools .
docker run -p 3456:3456 -v ~/.claude:/data/.claude:ro claude-devtools
| Variable | Default | Description |
|---|---|---|
CLAUDE_ROOT | ~/.claude | Path to the .claude data directory |
HOST | 0.0.0.0 | Bind address |
PORT | 3456 | Listen port |
The standalone server has zero outbound network calls. For maximum isolation: docker run --network none -p 3456:3456 -v ~/.claude:/data/.claude:ro claude-devtools. See SECURITY.md.
Development
Prerequisites: Node.js 20+, pnpm 10+
git clone https://github.com/matt1398/claude-devtools.git
cd claude-devtools
pnpm install
pnpm dev
| Command | Description |
|---|---|
pnpm dev | Development with hot reload |
pnpm build | Production build |
pnpm typecheck | TypeScript type checking |
pnpm test | Run all tests |
pnpm check | Full quality gate (types + lint + test + build) |
Community
- Discussions — share ideas, ask questions, and read what others are doing in GitHub Discussions.
- Issues — bug reports and feature requests in GitHub Issues.
- Changelog — every release is documented in CHANGELOG.md and on claude-dev.tools/changelog.
Contributing
See CONTRIBUTING.md for guidelines. Please read our Code of Conduct.
Security
IPC handlers validate all inputs with strict path containment checks. File reads are constrained to the project root and ~/.claude. See SECURITY.md.