用途
django-triage 用于分析 Django Trac 工单,并产出一份分诊建议报告。它面向需要判断工单有效性、查找重复项、评估处理方向的场景,帮助整理工单的基本信息、历史讨论、相关 PR 与论坛讨论,并给出分诊结论。
主要能力
- 获取 Trac 工单详情:包括摘要、报告人、负责人、组件、版本、状态、resolution、triage_stage、has_patch、关键词、工单类型(Bug 报告 / 功能请求 / 文档 / 清理)以及历史评论。
- 搜索重复与相关工单:支持按关键词、错误信息或类/函数名、组件加关键词组合进行多次搜索,并获取前 3-5 个相关工单的详情。
- 搜索相关 GitHub PR:通过 gh CLI 按工单号、Trac 工单 URL 等条件搜索 django/django 仓库中的 PR,并查看 PR 详情。
- 搜索 Django 论坛:按工单号或关键词(internals 分类)查找论坛讨论。
- 浏览相关源码(可选):在 django/ 目录中按文件名、类或函数名查找相关代码,在 tests/ 中查找相关测试,识别问题代码位置、现有测试覆盖与改动范围。
- 有效性评估:针对 Bug 报告检查可复现性、版本、是否属于 Django 责任、是否符合预期行为、是否为受支持版本、是否为安全问题;针对功能请求检查通用性、是否符合 Django 设计哲学、是否有第三方替代方案、向后兼容性、复杂度、是否需要 DEP。
- 分诊决策:依据 references/triage-stages.md 中的阶段定义与重复标准给出结论。
- 报告输出:将完整报告保存到 triage-reports/<ticket_id>.md,并在终端输出简要摘要。
使用方式
前置条件:
- uv — 脚本运行器(需安装)。
- gh — GitHub CLI(需安装),并运行 gh auth login 完成认证。
- Django 源码 — 在工作目录中执行 git clone https://github.com/django/django.git(用于第 5 步源码分析)。
开始前需确认 uv 与 gh 可用;若任一缺失,显示安装链接并停止。若缺少 django/ 目录,警告用户并跳过第 5 步(源码浏览)。
参数:
- 第一个参数:Trac 工单号(必填,例如 36812、2750)。
- 第二个参数:报告语言(可选,默认 en)。en 为英文,ko 为韩文,也支持其他语言代码。
解析 $ARGUMENTS 提取 ticket_id 与 language。若只提供一个参数,默认语言为 en。
重要说明:
- 不要对 GitHub URL 使用 WebFetch 或 Fetch,始终使用 gh CLI 命令。
- 提交:gh api repos/<owner>/django/commits/<sha>
- PR:gh pr view <number> --repo django/django 或 gh api repos/django/django/pulls/<number>
- 更多示例见 references/gh-examples.md。
- ./scripts/ 路径相对于 SKILL.md 文件,执行时使用实际解析路径。
执行步骤:
- 获取工单详情:uv run --script ./scripts/trac.py get $ARGUMENTS,识别基本信息、状态、关键词、工单类型与历史。
- 搜索重复与相关工单:至少进行 2-3 次 Trac 搜索,并获取相关工单详情。
- 搜索相关 PR:使用 gh search prs 与 gh pr view 查找并查看 PR。
- 搜索 Django 论坛:uv run --script ./scripts/forum.py ticket $ARGUMENTS,若无结果则按关键词搜索 internals 分类。
- 浏览相关源码(如适用):使用 Glob 与 Grep 在 django/ 与 tests/ 中查找相关文件、测试与改动范围。
- 有效性评估:按 Bug 报告或功能请求的检查项逐项评估,并识别红旗信号(如公开 Trac 上的安全问题、仅影响不受支持版本、仅个人需要的功能、按文档工作、第三方包问题等)。
- 分诊决策:阅读 references/triage-stages.md 获取阶段定义与重复标准。
- 保存报告并输出摘要:创建 triage-reports 目录,按 references/report-template.md 格式写入 triage-reports/<ticket_id>.md,并在终端输出简要摘要。所有内容使用指定语言撰写。
适用场景
- 需要快速了解某个 Django Trac 工单的背景、状态与相关讨论。
- 需要判断工单是否为重复项或与已有 PR、论坛讨论相关。
- 需要为 Bug 报告或功能请求给出结构化的分诊建议。
- 需要在源码与测试中定位问题范围,辅助后续处理。
限制
- 依赖 uv、gh 与本地 Django 源码仓库;缺少任一前置条件会影响执行或跳过相应步骤。
- 源码分析步骤在缺少 django/ 目录时会被跳过。
- 报告语言由参数决定,默认英文。
- 具体分诊阶段定义与报告模板来自 references 目录中的文件,资料未提供其详细内容。
- 资料未提供收费、价格、平台或效果相关信息。