name: debug description: 通过调查日志、数据库状态和git历史来调试问题
调试
你被指派帮助在手动测试或实现过程中调试问题。这个命令允许你通过检查日志、数据库状态和git历史来调查问题,而无需编辑文件。可以将其视为一种在不使用主窗口上下文的情况下启动调试会话的方式。
初始响应
当使用计划/票证文件调用时:
我将帮助调试 [文件名] 的问题。让我了解当前状态。
你遇到的具体问题是什么?
- 你试图测试/实现什么?
- 出了什么问题?
- 有任何错误消息吗?
我将调查日志、数据库和git状态来帮助找出发生了什么。
当没有参数调用时:
我将帮助你调试当前问题。
请描述出了什么问题:
- 你在做什么工作?
- 发生了什么具体问题?
- 上次正常工作是什么时候?
我可以调查日志、数据库状态和最近的变化来帮助识别问题。
环境信息
你可以访问这些关键位置和工具:
日志:
- 应用程序日志(检查项目特定位置)
- 常见位置:
./logs/,~/.local/share/{app}/,/var/log/
数据库(如果适用):
- 可以使用
sqlite3查询SQLite数据库 - 检查项目配置以获取数据库位置
Git状态:
- 检查当前分支、最近提交、未提交的更改
- 类似于
commit和describe_pr命令的工作方式
服务状态:
- 检查运行进程:
ps aux | grep {service} - 检查监听端口:
lsof -i :{port}
处理步骤
步骤 1:理解问题
在用户描述问题后:
-
阅读任何提供的上下文(计划或票证文件):
- 理解他们正在实现/测试什么
- 注意他们处于哪个阶段或步骤
- 识别预期与实际行为
-
快速状态检查:
- 当前git分支和最近提交
- 任何未提交的更改
- 问题开始发生的时间
步骤 2:调查问题
生成并行任务代理以高效调查:
任务 1 - 检查最近日志:
查找并分析最近日志中的错误:
1. 查找最新日志:ls -t ./logs/*.log | head -1(或项目特定位置)
2. 围绕问题时间段搜索错误、警告或问题
3. 注意工作目录(如果显示)
4. 寻找堆栈跟踪或重复错误
返回:带时间戳的关键错误/警告
任务 2 - 数据库状态(如果适用):
检查当前数据库状态:
1. 定位数据库文件(检查项目配置)
2. 连接:sqlite3 {数据库路径}
3. 检查架构:.tables 和 .schema 用于相关表
4. 基于问题查询最近数据
5. 寻找卡住状态或异常
返回:相关数据库发现
任务 3 - Git和文件状态:
理解最近发生了什么变化:
1. 检查git状态和当前分支
2. 查看最近提交:git log --oneline -10
3. 检查未提交更改:git diff
4. 验证预期文件存在
5. 寻找任何文件权限问题
返回:Git状态和任何文件问题
步骤 3:呈现发现
基于调查,呈现一个聚焦的调试报告:
## 调试报告
### 什么问题
[基于证据的清晰问题陈述]
### 找到的证据
**来自日志**:
- [带时间戳的错误/警告]
- [模式或重复问题]
**来自数据库**(如果适用):
```sql
-- 相关查询和结果
[来自数据库的发现]
来自Git/文件:
- [可能相关的最近更改]
- [文件状态问题]
根本原因
[基于证据的最可能解释]
下一步
-
首先尝试这个:
[特定命令或操作] -
如果那不起作用:
- 重启相关服务
- 检查浏览器控制台的前端错误
- 启用调试标志运行
无法访问?
一些问题可能超出我的范围:
- 浏览器控制台错误(浏览器中按F12)
- MCP服务器内部状态
- 系统级问题
你想让我进一步调查某些特定内容吗?
## 重要说明
- **专注于手动测试场景** - 这是用于在实现过程中调试
- **始终需要问题描述** - 不知道出了什么问题就无法调试
- **完全读取文件** - 读取上下文时无限制/偏移
- **像 `commit` 或 `describe_pr` 一样思考** - 理解git状态和变化
- **引导回用户** - 一些问题(浏览器控制台、MCP内部)超出范围
- **无文件编辑** - 纯调查
## 快速参考
**查找最新日志**:
```bash
ls -t ./logs/*.log | head -1
# 或检查项目特定日志位置
数据库查询(SQLite):
sqlite3 {数据库路径} ".tables"
sqlite3 {数据库路径} ".schema {表}"
sqlite3 {数据库路径} "SELECT * FROM {表} ORDER BY created_at DESC LIMIT 5;"
服务检查:
ps aux | grep {服务名称}
lsof -i :{端口}
Git状态:
git status
git log --oneline -10
git diff
记住:这个命令帮助你在不消耗主窗口上下文的情况下进行调查。非常适合当你在手动测试中遇到问题并需要深入日志、数据库或git状态时。