SkillAgentSearch skills...

Support To Repro Pack

🛠️ Claude Code / OpenClaw Skill — Turn support tickets, logs, screenshots into sanitized engineering issue packs. 17 PII redaction patterns, log parsing, stack trace extraction (Python/Java/JS/Go), error code classification, timeline. 客服工单脱敏 | 隐私数据脱敏 | 日志解析 | 堆栈提取 | 错误码分类 | 中英双语Skill | 支持转研发问题包生成器

Install / Use

/learn @mshs01156/Support To Repro Pack
About this skill

Quality Score

0/100

Supported Platforms

Claude Code
Claude Desktop
Zed

README

support-to-repro-pack

客服工单 → 可复现问题包生成工具

一个 Claude Code 技能 + Python 后端工具。把客服收到的杂乱材料(工单、日志、截图、聊天记录)自动转化为脱敏、结构化、可直接交给研发的问题包。

Python 负责确定性工作(PII 脱敏、日志解析、事实提取),Claude 负责语义推理(缺失信息检测、根因分析、复现步骤生成)。


它能解决什么问题?

客服转给研发的 bug 工单,常见痛点:

  • 包含客户隐私(手机号、身份证、API 密钥),不能直接转发
  • 信息零散,缺少环境版本、复现步骤
  • 日志没整理,错误码散落在各处
  • 研发拿到工单后还要反复追问

这个工具一键解决:输入杂乱原始材料 → 输出 8 个标准化文件,隐私全部脱敏,事实自动提取,研发可以直接开干。


功能一览

  • PII 脱敏 — 17 种隐私模式:邮箱、手机号(中美英)、IP、信用卡、身份证、社保号、AWS 密钥、JWT、Stripe 密钥、密码、含凭证的 URL、Cookie、UUID、私钥、Bearer Token、API Key
  • 日志解析 — 自动识别 JSON / syslog / 纯文本格式,提取时间戳、日志级别、来源
  • 堆栈提取 — 支持 Python、Java、JavaScript/Node.js、Go 四种语言的堆栈信息
  • 事实抽取 — 版本号、AWS 区域、功能开关、错误码、User-Agent、URL
  • 事件时间线 — 从日志条目中重建事件时间线
  • 中英双语 — 中文工单出中文结果,英文工单出英文结果

从零开始:安装与启动

1. 克隆项目

git clone https://github.com/yourusername/support-to-repro-pack.git
cd support-to-repro-pack

2. 创建虚拟环境(推荐)

python -m venv .repro-env
source .repro-env/bin/activate

3. 安装

pip install -e ".[dev]"

4. 验证安装

repro-pack --version
# 输出: repro-pack, version 0.1.0

看到版本号就说明装好了。


怎么用?

方式一:命令行(CLI)

最简单的用法,一行命令跑完整个流程:

repro-pack run \
  --ticket examples/case_easy/input_ticket.md \
  --logs examples/case_easy/input_logs.txt \
  --outdir output/

也可以单独使用某个功能:

repro-pack redact input.txt              # 只做 PII 脱敏
repro-pack redact input.txt --audit      # 脱敏 + 审计报告
repro-pack parse logs.txt --format json  # 解析日志
repro-pack extract combined.txt          # 提取环境事实
repro-pack timeline logs.txt             # 构建事件时间线
repro-pack traces logs.txt               # 提取堆栈信息

方式二:作为 Claude Code 技能使用

.claude/skills/support-to-repro-pack/ 目录复制到你项目的 .claude/skills/ 下,然后对 Claude 说:

"帮我整理这个客户 bug" "把这个工单变成研发 issue" "脱敏这些日志并生成复现步骤"

Claude 会自动调用 Python 工具做脱敏和提取,然后用 AI 补充语义分析(复现步骤、根因假设、严重等级评估)。

支持图片输入: 如果客户发了截图,把图片路径一起给 Claude,它会先读图提取文字信息,再走标准流程。


输出文件说明

运行完成后会在输出目录生成 8 个文件

| 文件 | 说明 | 给谁看 | |------|------|--------| | 1_sanitized_ticket.md | 脱敏后的工单(所有隐私替换为占位符) | 研发 | | 2_sanitized_logs.txt | 脱敏后的日志 | 研发 | | 3_facts.json | 提取的环境事实(版本、区域、错误码等) | 研发 | | 4_timeline.json | 事件时间线 | 研发 | | 5_engineering_issue.md | 工程 Issue 文档 | 研发 | | 6_internal_escalation.md | 内部升级摘要 | PM / 技术主管 | | 7_customer_reply.md | 客户回复(不含任何内部信息) | 客服 → 客户 | | 8_redaction_report.json | 脱敏审计报告(哪些隐私在第几行被替换) | 合规 / 安全 |


怎么验证项目结果?

跑测试

pytest

应该看到 113 passed,覆盖所有模块。

跑示例案例

项目内置 3 个测试案例,难度递增:

| 案例 | 语言 | 场景 | 挑战 | |------|------|------|------| | case_easy | 英文 | 导出功能崩溃 | JS 堆栈、JWT、多个邮箱、功能开关 | | case_medium | 中文 | 用户管理页面超时 | 中文手机号、身份证、密码、Java 堆栈 | | case_hard | 英文 | 支付处理失败 | Stripe 密钥、多币种、混合 HTTP 错误码 |

逐个跑一遍:

# 英文简单案例
repro-pack run \
  --ticket examples/case_easy/input_ticket.md \
  --logs examples/case_easy/input_logs.txt \
  --outdir /tmp/result_easy

# 中文案例
repro-pack run \
  --ticket examples/case_medium/input_ticket.md \
  --logs examples/case_medium/input_logs.txt \
  --outdir /tmp/result_medium

# 英文复杂案例
repro-pack run \
  --ticket examples/case_hard/input_ticket.md \
  --logs examples/case_hard/input_logs.txt \
  --outdir /tmp/result_hard

然后查看输出,重点检查:

# 看脱敏是否干净(不应该再看到真实邮箱、手机号)
cat /tmp/result_easy/1_sanitized_ticket.md

# 看提取了哪些事实
cat /tmp/result_easy/3_facts.json

# 看脱敏审计(哪些隐私被抓到了)
cat /tmp/result_easy/8_redaction_report.json

跑自动化评测

python -m eval.run_eval examples/

会输出评分表,从三个维度打分:

| 案例        | 事实提取 | 脱敏召回率 | 输出完整性 | 总分       |
|-------------|---------|-----------|-----------|-----------|
| case_easy   | 90.0%   | 100.0%    | 100.0%    | 96.7%     |
| case_hard   | 80.0%   | 100.0%    | 100.0%    | 93.3%     |
| case_medium | 100.0%  | 100.0%    | 100.0%    | 100.0%    |
| 平均         | 90.0%   | 100.0%    | 100.0%    | 96.7%     |

项目结构

support-to-repro-pack/
├── src/repro_pack/              # 核心 Python 代码
│   ├── redactor/                # PII 脱敏引擎(17 种正则模式)
│   │   ├── patterns.py          # 正则表达式定义
│   │   ├── engine.py            # 脱敏引擎(从右到左替换,重叠检测)
│   │   ├── detector.py          # 仅检测模式
│   │   └── report.py            # 审计报告生成
│   ├── parser/                  # 输入解析
│   │   ├── log_parser.py        # 日志解析(JSON / syslog / 纯文本)
│   │   ├── stack_trace.py       # 堆栈提取(Python / Java / JS / Go)
│   │   ├── ticket_parser.py     # 工单解析(Markdown / 纯文本)
│   │   └── formats.py           # 日志格式检测
│   ├── extractor/               # 结构化信息提取
│   │   ├── env_facts.py         # 版本、区域、功能开关、角色、错误码
│   │   ├── error_codes.py       # HTTP / 应用 / gRPC 错误码分类
│   │   ├── timeline.py          # 事件时间线构建
│   │   └── user_agent.py        # 浏览器 / 操作系统解析
│   ├── packager/                # 输出打包
│   │   ├── builder.py           # 文件组装与验证
│   │   ├── renderer.py          # Jinja2 模板渲染
│   │   └── archive.py           # ZIP 打包
│   ├── pipeline.py              # 全流程编排
│   ├── cli.py                   # CLI 入口(6 个子命令)
│   └── models.py                # 数据模型定义
├── .claude/skills/              # Claude Code 技能层
│   └── support-to-repro-pack/
│       ├── SKILL.md             # 技能编排文件
│       ├── templates/           # 输出文档模板
│       └── references/          # 参考文档(严重等级矩阵、复现检查清单)
├── tests/                       # 113 个测试用例
├── eval/                        # 自动化评测框架
├── examples/                    # 3 个示例案例(easy / medium / hard)
├── pyproject.toml               # 项目配置
└── LICENSE                      # MIT 开源协议

设计理念

为什么不全用 AI?

PII 脱敏必须用正则——确定性、可审计、不会遗漏。AI 擅长的是语义理解:判断问题严重程度、猜测根因、生成复现步骤。所以我们的设计是:

  • Python 正则 → 做确定性工作(脱敏、解析、提取),保证可靠性和可审计性
  • Claude AI → 做语义推理(缺失信息检测、矛盾检查、根因假设、严重等级评估)

两层配合,既安全又智能。


依赖

仅两个运行时依赖,保持轻量:

  • click >= 8.1 — CLI 框架
  • jinja2 >= 3.1 — 模板引擎

开发依赖:

  • pytest >= 7.0 — 测试框架

License

MIT

View on GitHub
GitHub Stars7
CategoryDevelopment
Updated2h ago
Forks0

Languages

Python

Security Score

90/100

Audited on Mar 26, 2026

No findings