用途:为 Go 程序提供系统化的根因调试流程,覆盖 panic、错误结果、nil 指针、越界、挂起、死锁、数据竞争、goroutine 泄漏、内存或 CPU 偏高、GC 压力、测试失败或不稳定、编译与 go mod/vet/lint 报错等场景。
主要能力:先运行 .agents/skills/pflow-golang-troubleshoot/scripts/troubleshoot-context.sh 获取工具链、GOOS/GOARCH、CGO_ENABLED、可用调试工具、任务运行器、测试目标与文件、构建标签及提示;若该脚本失败(非零退出或 JSON 中 status 为 error),打印 ⚠️ <error.message> 并停止,其他命令失败则作为证据记录并继续。随后阅读 references/methodology.md,并按症状查阅对应文档:panic/错误输出/nil/越界看 common-bugs.md;挂起/死锁/竞争报告/泄漏/all goroutines are asleep 看 concurrency-debug.md;慢/高内存/高 CPU/GC 压力看 pprof-delve.md;测试失败或不稳定、单独通过合并失败、覆盖率缺口看 testing-debug.md;无法编译、go mod/vet/lint 错误看 build-errors.md。
使用方式:优先用最窄命令复现,例如项目运行器中的 test_targets 条目,否则用 go test -run 'TestX' -race -count=1 ./pkg/...;遵守 test_build_tags(如 -tags e2e 需要其后端,运行前先询问)。每次只提出一个假设,用日志、测试、profile 或 dlv 等证据证明,修复根因后补回归测试,重跑复现命令与项目门禁。报告按症状→根因→修复→证据(测试名或命令输出)组织,复现未通过不得声称已修复。
限制与注意:hint 非空表示 CGO_ENABLED=0,-race 可能需要 CGO_ENABLED=1 go test -race;debug_tools 缺少 dlv/benchstat/govulncheck 时,建议 go install …@latest 或 go run …@latest,不要假设其已存在;不要为消除症状而改变行为,若修复范围超出根因,应说明并停下等待确认。路径均相对于 .agents/skills/pflow-golang-troubleshoot/。