← ClaudeAtlas

debuglisted

当用户需要调试复杂/偶现 Bug,且必须通过运行时真实数据、代码埋点、日志采集、用户复现或跨端/异步时序证据定位问题时使用。触发词包括 debug/调试/日志采集/log collection/运行时上下文。若读代码、跑测试、浏览器自动化或现有日志能定位,先走轻量排查,不启动本 skill
beixiyo/dotfiles · ★ 2 · Code & Development · score 65
Install: claude install-skill beixiyo/dotfiles
## 概述 「日志采集服务器 + 代码埋点 + 迭代分析」三步闭环:先收集运行时上下文,再基于真实数据定位修复 ## 分诊:要不要用本 skill(先做这一步) 遵循「不猜测,只验证」。本 skill 是**重型路径**(起服务器 + 埋点 + 让人复现),仅当**同时满足**以下两条才进入执行流程: 1. **AI 自己拿不到运行时上下文**——变量实际值、异步两侧时序、多进程/跨端状态,靠读代码、`grep`、跑测试都无法确定 2. **需要人主动复现**——交互触发、特定环境、偶现 Bug,AI 无法自动重放 否则先走**轻量静态排查**,不要起服务器: - 读相关代码、按调用链推理可能的原因路径 - 索要无法自行获取的信息(环境变量、依赖版本、配置、现有日志) - 能自动化就自动化:跑测试复现、浏览器自动化、查 DevTool 静态分析能定位 → 直接修;确实需要运行时真实数据且必须靠人复现 → 才往下走 Phase 0 ## 执行流程 ### Phase 0: 会话身份(并发前提) 取一个唯一标识 `SESSION`(kebab,体现主题,如 `perm-gate`),所有埋点 `source` 统一加前缀 `SESSION/`——这是多会话隔离(过滤读、范围清空)的根基 ### Phase 1: 启动 / 复用服务器 在**工作区根目录**后台启动(优先 bun,未装则 node),幂等:已有健康实例自动复用,不重复起、不误杀 ```bash # 默认:端口 9210,日志 ./debug.log bun ~/.claude/skills/debug/scripts/debug-server.mjs & # 仅当调试「不同 app / 工作区」时才换端口和日志 DEBUG_PORT=9211 DEBUG_LOG=./logs/debug.log bun ~/.claude/skills/debug/scripts/debug-server.mjs & ``` | 环境变量 | 默认值 | 说明 | |----------|--------|------| | `DEBUG_PORT` | `9210` | 监听端口 | | `DEBUG_LOG` | `./debug.log` | 日志路径(相对启动时 cwd) | `GET /health` 验证已启动后,**登记本会话**(引用计数,防止收尾时被别人提前关停): ```bash curl -s -X POST http://localhost:9210/register -H 'Content-Type: application/json' -d '{"session":"perm-gate"}' ``` > 被调试 app 的埋点端口通常写死,故多会话调试**同一个 app** 必然共享同一 server 和 `debug.log`,换端口无效——隔离靠 `SESSION/` 前缀。只有调**不同 app/工作区**才用 `DEBUG_PORT`+`DEBUG_LOG` ### Phase 2: 分析并埋点 分析可能的原因路径,在**关键节点**(入口、分支、出口、异步两侧)插入上报,采集变量**实际值**而非"到达了这里" **先一次性建一个埋点 helper**(临时文件,排查完删),之后每处埋点只写一行 `dbg('tag', data)`——`SESSION/` 前缀自动带上(省 token + 保证隔离),`tag` 即定位锚