关于 replicate-issue
用于在 Archon 实时应用中复现并验证 GitHub Issue 的测试技能,面向调查缺陷的开发者。它涵盖环境准备、浏览器与 API 检查、根因分析及修复建议。
主要功能
- 01准备并启动 Archon 环境
- 02提取 Issue 症状并制定测试计划
- 03使用 agent-browser 复现并截图
- 04通过 API 交叉验证界面状态
- 05分析根因并提出修复方案
适用场景
- 01核实 GitHub Issue 中报告的行为
- 02测试页面刷新或异步流程相关问题
- 03记录复现证据并整理修复建议
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ coleam00/ archon --skill replicate-issue安装后在 Claude Code 中输入/replicate-issue确认已加载。
详细介绍
复现 GitHub Issue
系统地在运行中的 Archon 应用中复现并验证 GitHub Issue。 目标是确定报告的问题是否真实存在,找出确切的复现步骤,发现任何相关问题,并提供可执行的修复建议。
Issue 编号:$ARGUMENTS
如果 $ARGUMENTS 为空,请在继续之前向用户询问 Issue 编号。
阶段 0:准备环境
0.1 切换到 Main 分支并拉取最新代码
确保基于 main 上的最新代码进行测试,以确保结果准确。
cd /path/to/archon
# Stash any local changes to avoid conflicts
git stash 2>/dev/null || true
# Switch to main and pull latest
git checkout main
git pull origin main
echo "On branch: $(git branch --show-current)"
echo "Latest commit: $(git log --oneline -1)"
0.2 终止现有 Archon 进程
释放端口 3090(后端)和 5173(前端),以便干净地启动 Archon。
pkill -f "bun.*dev:server" 2>/dev/null || true
pkill -f "bun.*dev:web" 2>/dev/null || true
pkill -f "bun.*packages/server" 2>/dev/null || true
pkill -f "bun.*packages/web" 2>/dev/null || true
fuser -k 3090/tcp 2>/dev/null || true
fuser -k 5173/tcp 2>/dev/null || true
sleep 2
# Verify ports are free
! fuser 3090/tcp 2>/dev/null && ! fuser 5173/tcp 2>/dev/null && echo "Ports 3090 and 5173 are free" || echo "WARNING: Ports still in use"
0.3 启动 Archon 后端和前端
cd /path/to/archon
# Start both backend and frontend together
bun run dev &
sleep 8
# Verify backend is healthy
curl -s http://localhost:3090/api/health | head -c 200
echo ""
# Verify frontend is serving (port may vary if 5173 is taken)
curl -s http://localhost:5173 | head -c 100 || curl -s http://localhost:5174 | head -c 100
注意:如果端口 5173 被占用,Vite 会自动递增端口号(5174、5175 等)。检查 bun run dev 的输出,确认实际的前端端口,并在整个过程中使用该端口。
阶段 1:分析 Issue
1.1 阅读 GitHub Issue
gh issue view $ARGUMENTS --json title,body,labels,comments,state
仔细解析 Issue,提取以下信息:
- 标题和摘要:报告的问题是什么?
- 复现步骤:哪些具体操作会触发 Bug?
- 预期行为:应该发生什么?
- 实际行为:实际发生了什么?
- 环境详情:是否有特定条件(浏览器、操作系统、时机)?
- 标签和优先级:问题有多严重?
- 评论:是否有其他背景信息、解决方法或相关问题?
1.2 制定测试计划
根据 Issue 内容,创建一份具体的测试清单。 针对 Issue 中描述的每种症状,明确:
- 复现问题的准确用户操作流程
- 需要观察的内容(预期结果与实际结果)
- 需要捕获哪些截图作为证据
阶段 2:使用浏览器自动化进行复现
所有浏览器交互均使用 agent-browser CLI(而非 Playwright)。
核心工作流
# 1. Navigate to the page
agent-browser open http://localhost:5173
# 2. Get interactive elements
agent-browser snapshot -i
# 3. Interact using refs from the snapshot
agent-browser click @e1
agent-browser fill @e2 "text"
# 4. Re-snapshot after navigation or DOM changes
agent-browser snapshot -i
# 5. Take screenshots at every significant point
agent-browser screenshot /tmp/issue-$ARGUMENTS-{step-name}.png
测试指南
- 多截取截图——每次操作前后都要截图,并保存到
/tmp/issue-$ARGUMENTS-*.png - 读取每张截图——使用 Read 工具直观检查每张截图,并核实所见内容
- 先测试正常流程——在测试 Bug 之前,确认功能在正常情况下可以运行
- 严格遵循 Issue 中的复现步骤——不要走捷径
- 测试不同情况——尝试略有差异的相同流程(不同数据、不同时间、刷新页面)
- 测试相邻流程——如果问题涉及工作流 X,也要检查工作流 Y 和 Z 是否存在类似问题
- 使用 curl 验证 API——将 UI 状态与直接 API 调用进行交叉核对,以确认数据准确性
- 页面刷新后进行检查——许多 SSE/实时 Bug 只会在导航或刷新后出现
- 检查不同对话——如果问题涉及对话,请使用多个已打开的对话进行测试
- 等待异步操作——对依赖网络的操作使用
agent-browser wait命令
触发工作流(如有需要)
如果问题涉及工作流执行,请使用 REST API 触发后台工作流:
# Create a conversation
CONV_ID=$(curl -s -X POST http://localhost:3090/api/conversations \
-H "Content-Type: application/json" -d '{}' | jq -r '.conversationId')
# Trigger a workflow (archon-assist is a good general-purpose one)
curl -s -X POST http://localhost:3090/api/workflows/archon-assist/run \
-H "Content-Type: application/json" \
-d "{\"conversationId\":\"$CONV_ID\",\"message\":\"Your test message here\"}"
触发聊天消息(如有需要)
curl -s -X POST "http://localhost:3090/api/conversations/$CONV_ID/message" \
-H "Content-Type: application/json" \
-d '{"message":"Your test message"}'
阶段 3:记录发现
针对 Issue 中的每种症状,记录:
| 症状 | 是否复现? | 证据 | 备注 |
|---|---|---|---|
| {issue 中的症状} | 是 / 否 / 部分 | 截图路径 | {详情} |
严重程度分类
- 已确认(可复现):已复现 Issue 中描述的确切 Bug
- 部分确认:出现了该症状,但触发条件与描述不同
- 未复现:尽管遵循了所述步骤,仍无法复现
- 发现相关问题:测试期间发现了不同但相关的问题
阶段 4:调查根本原因(如果问题已复现)
如果问题已复现,请针对代码库进行分析:
- 确定受影响的组件 — 涉及哪些文件、钩子或组件?
- 阅读相关源代码 — 了解当前实现
- 追踪数据流 — 数据来自哪里?SSE?REST?React Query?useState?
- 确定根本原因 — 是什么具体导致了观察到的行为?
- 检查类似模式 — 其他组件是否也存在相同问题?
阶段 5:提出建议
提供多个修复方案并说明各自的权衡:
方案格式
对于每条建议:
### Option N: {Short title}
**Approach**: {1-2 sentence description}
**Changes required**:
- {file}: {what changes}
- {file}: {what changes}
**Pros**:
- {benefit}
**Cons**:
- {drawback}
**Complexity**: Low / Medium / High
**Risk**: Low / Medium / High
至少提供 2-3 个方案,涵盖从快速修复到全面解决方案。
阶段 6:清理
# Close the browser
agent-browser close
# Stop Archon (optional — leave running if user wants to continue testing)
# fuser -k 3090/tcp 2>/dev/null
# fuser -k 5173/tcp 2>/dev/null
阶段 7:总结报告
向用户提交最终总结:
# Issue #$ARGUMENTS Replication Report
## Issue: {title}
**Status**: Reproduced / Not Reproduced / Partially Reproduced
**Tested on**: main @ {commit hash}
## Reproduction Summary
{2-3 sentences describing what was tested and the outcome}
## Findings
{Detailed findings with screenshot references}
## Root Cause
{If identified — what causes the bug and why}
## Related Issues Discovered
{Any additional problems found during testing}
## Recommendations
{Summary of fix options with recommended approach}
执行说明
- 始终使用
agent-browser(Vercel Agent Browser CLI),不要使用 Playwright - 如需查阅命令参考,请加载
/agent-browser技能 - 在每个重要测试节点都截取屏幕截图,作为证据
- 使用 Read 工具查看截图,直观确认 UI 显示的内容
- 如果复现需要长时间运行的操作,请耐心等待工作流完成
- 将浏览器状态与 API 响应(
curl)交叉比对,以区分 UI 问题和后端问题 - 如果无法复现问题,请记录尝试过的操作,并说明可能的原因
- 完成后关闭浏览器:
agent-browser close
评论
支持 Markdown