当用户明确要求转换、修改或批量转换图片格式时使用。支持常见本地或网络图片输入与常见目标格式输出。⚠️ 不适用:仅调整尺寸/裁剪、查看图片信息,或没有明确格式转换意图。
日本語の概要は準備中です。原文の説明を表示しています。
用于遇到缺陷、测试失败或异常行为,且必须在提出修复方案前调查根因的场景。未经根因分析不得只修复表象。
インストール方法を見るインストールする前に、エージェントに与えられる指示の中身を確認できます。
NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST
违反规则的信件就是违反规则的精神。
无例外:
| 借口 | 现实 |
|---|---|
| "快速修复现在,稍后调查" | 永不会有"稍后"。技术债积累 |
| "尝试改变 X,看是否有效" | 猜测不是调试。可能碰巧修复但未理解 |
| "添加多个更改,运行测试" | 无法确定哪个更改有效。浪费调试时间 |
| "可能大概差不多是 X" | 模糊理解导致错误修复 |
| "不完全理解但可能有效" | 理解不完全=修复不完整 |
所有这些意味着:停止修复。回到根因调查阶段。
任何修复前:
仔细阅读错误消息
一致复现
检查最近变更
多组件系统收集证据
# 对于每个组件边界:
- 记录进入组件的数据
- 记录退出组件的数据
- 验证环境/配置传播
- 检查每层状态
运行一次以收集显示何处中断的证据
然后分析证据以识别失败组件
然后调查该特定组件
追踪数据流
系统化调试 不是碰运气,而是方法化地解决问题的科学流程。
┌─────────────────────────────────────────────────────────┐
│ 收集证据 → 形成假设 → 系统验证 → 定位根因 → 实施修复 │
└─────────────────────────────────────────────────────────┘
核心原则:
在以下场景时激活:
信息收集清单:
| 证据类型 | 收集方法 | 重要性 |
|---|---|---|
| 完整堆栈追踪 | 复制完整错误信息 | ⭐⭐⭐⭐⭐ |
| 相关日志 | 查看应用日志 | ⭐⭐⭐⭐⭐ |
| 复现步骤 | 记录如何触发问题 | ⭐⭐⭐⭐ |
| 环境信息 | OS、版本、依赖 | ⭐⭐⭐ |
| 代码变更 | 最近的 Git 提交 | ⭐⭐⭐⭐ |
| 用户输入 | 触发问题的数据 | ⭐⭐⭐ |
堆栈追踪分析示例:
# 示例错误
Traceback (most recent call last):
File "app.py", line 45, in process_order
result = payment_service.charge(amount)
File "payment.py", line 78, in charge
return api_client.post("/charge", data)
File "api.py", line 23, in post
response = self.session.request(method, url, **kwargs)
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed
分析要点:
假设生成规则:
假设模板:
假设:[问题描述] 的原因是 [根本原因]
触发条件:[什么情况下会出现]
验证方法:[如何证明或否定]
假设示例:
假设:SSL 错误的原因是生产环境缺少证书文件
触发条件:部署到生产环境后首次调用 API
验证方法:检查 /etc/ssl/certs/ 目录是否存在证书
常见根因分类:
| 类别 | 典型原因 | 检查方法 |
|---|---|---|
| 配置问题 | 环境变量、配置文件错误 | 检查 .env、config |
| 依赖问题 | 版本冲突、缺失依赖 | 检查 requirements.txt |
| 数据问题 | 空值、格式错误、边界值 | 检查输入数据 |
| 并发问题 | 竞态条件、死锁 | 检查锁、线程安全 |
| 资源问题 | 内存泄漏、连接池耗尽 | 检查资源使用 |
| 逻辑错误 | 边界条件、空值处理 | 代码审查 |
验证原则:
验证方法:
# 方法 1:添加日志
def process_order(order_id):
logger.info(f"Processing order: {order_id}")
order = get_order(order_id)
logger.debug(f"Order data: {order}")
# ...
# 方法 2:断点调试
import pdb; pdb.set_trace()
# 方法 3:简化输入
def test():
# 用最小输入验证
process_order({"id": 1, "amount": 0})
验证记录模板:
## 假设验证记录
### 假设 1:证书文件缺失
- **验证方法**:检查文件是否存在
- **验证结果**:❌ 文件存在
- **结论**:假设不成立,排除
### 假设 2:证书过期
- **验证方法**:检查证书有效期
- **验证结果**:✅ 证书已于 3 天前过期
- **结论**:假设成立,定位根因
区分症状与根因:
使用五问法(5 Whys)深入挖掘:
问题:订单处理失败
Why 1: 为什么失败?
→ API 调用返回 500 错误
Why 2: 为什么 API 返回 500?
→ 数据库查询超时
Why 3: 为什么查询超时?
→ 缺少索引导致全表扫描
Why 4: 为什么缺少索引?
→ 新增字段时未同步添加索引
Why 5: 为什么未添加索引?
→ 没有 Code Review 流程
根因:缺少 Code Review 机制(而非"API 返回 500")
根因特征:
修复原则:
修复清单:
## 修复计划
### 代码修复
- [ ] 修改代码:[具体位置]
- [ ] 添加测试:[测试用例]
- [ ] 运行测试确认通过
### 预防措施
- [ ] 添加检查机制
- [ ] 更新文档
- [ ] 团队分享经验
### 验证
- [ ] 本地验证
- [ ] 测试环境验证
- [ ] 生产环境验证
当问题可能出现在多个位置时:
# 在中间点添加日志
def complex_function(data):
logger.info("Step 1: Start")
result1 = step1(data)
logger.info(f"Step 1 result: {result1}")
logger.info("Step 2: Start")
result2 = step2(result1)
logger.info(f"Step 2 result: {result2}")
logger.info("Step 3: Start")
result3 = step3(result2)
logger.info(f"Step 3 result: {result3}")
return result3
# 从复杂场景中提取最小复现用例
def test_minimal_reproduction():
# 不需要完整的订单数据
order = {"amount": 100} # 最小输入
result = process_payment(order)
assert result.success
# 对比工作版本和失败版本
def test_working_vs_broken():
# 工作版本
result_working = old_api_call(data)
# 失败版本
try:
result_broken = new_api_call(data)
except Exception as e:
print(f"Broken: {e}")
# 对比差异
compare_results(result_working, result_broken)
# 使用 Docker 隔离环境
docker run -it python:3.11 bash
# 或使用虚拟环境
python -m venv debug_env
source debug_env/bin/activate
症状:间歇性失败,时好时坏
根因:竞态条件、异步操作未正确等待
调试方法:
# 添加重试和延迟
from tenacity import retry, stop_after_attempt, wait_fixed
@retry(stop=stop_after_attempt(3), wait=wait_fixed(1))
def flaky_operation():
# 可能失败的操作
pass
症状:性能逐渐下降,最终崩溃
根因:内存泄漏
调试方法:
import tracemalloc
tracemalloc.start()
# ... 运行代码 ...
snapshot = tracemalloc.take_snapshot()
top_stats = snapshot.statistics('lineno')
for stat in top_stats[:10]:
print(stat)
症状:测试单独通过,批量运行失败
根因:测试间共享状态
调试方法:
@pytest.fixture(autouse=True)
def reset_state():
# 每个测试前重置状态
reset_database()
reset_cache()
yield
cleanup()
修复完成后,检查:
本块由 docs/templates/skill-common-constraints.md 统一维护;每个 SKILL.md 的 ## 约束 必须逐字同步本块,不得在副本中改写公共规则。
./.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/ 根目录;共享材料放入 shared/,Skill 专属材料放入该 Skill 的 input/、output/、log/。config.yaml:skill_info.version;公开 API、协议、目录或配置变更同步文档与 CHANGELOG.md。bensz-collect-bugs 是一个 Agent Skill;仅将 Bensz Agent Skill 或 Bensz 基础设施本身的设计缺陷交给它。先脱敏写入 ~/.bensz-skills/bugs/,当前任务不中断,只有用户明确要求才公开上报,禁止直接修改用户已安装的 Skill 源码。まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
当用户明确要求转换、修改或批量转换图片格式时使用。支持常见本地或网络图片输入与常见目标格式输出。⚠️ 不适用:仅调整尺寸/裁剪、查看图片信息,或没有明确格式转换意图。
日本語の概要は準備中です。原文の説明を表示しています。
根据用户描述生成高质量绘图 prompt,并按通用、roadmap、schematic 模式通过 BenszAPI 直接完成 gpt-image-2.5-flare、gpt-image-2.5-sunburst、gpt-image-2 或 Nano Banana/Gemini 出图、编辑和多轮迭代;这是自包含的图片生成工作流,选中后不得调用或依赖 imagegen,除非用户明确要求同时使用 imagegen。
日本語の概要は準備中です。原文の説明を表示しています。
当用户明确要求测试代码、代码审查或代码自检时使用。系统化发现并验证代码问题。⚠️ 不适用:用户只是想实现或优化功能、询问代码问题,或没有明确测试意图。
日本語の概要は準備中です。原文の説明を表示しています。
当用户明确要求“测试项目”、 “运行 auto-test-project”或“进行项目级测试”时使用。对完整项目执行多轮 A 轮批判性测试与 B 轮质量检查,发现、记录、修复并验证问题。⚠️ 不适用:用户只是想优化功能、询问项目问题,或没有明确测试意图。
日本語の概要は準備中です。原文の説明を表示しています。
当用户明确要求测试 Skill、运行 auto-test 或对 Skill 进行批判性测试时使用。系统化发现、记录并验证 Skill 问题。⚠️ 不适用:用户只是想开发或优化 Skill,或没有明确测试意图。
日本語の概要は準備中です。原文の説明を表示しています。
当用户明确要求使用 awesome-code、进行多代理协作或并行协调开发时使用。根据任务选择合适的协作方式并协调专业 Agent。⚠️ 不适用:用户只需单一角色完成简单修改或咨询,或未表达多代理协作意图。
日本語の概要は準備中です。原文の説明を表示しています。