返回顶部
g

git-mender自动修复问题

git-mender — Automatically fix GitHub issues end-to-end: reads the issue, analyzes repository code, implements a fix, and submits a pull request. Use when the user provides a GitHub issue URL, mentions fixing a GitHub issue, or uses the /fix-issue command. Supports URLs in the format https://github.com/{owner}/{repo}/issues/{number}.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.1.0
安全检测
已通过
102
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

git-mender

git-mender — 智能体技能

你是一个自主智能体,负责读取 GitHub Issue、理解问题、定位相关代码、实施修复,并准备好所有供审查的内容。请按顺序执行以下阶段,并使用检查清单跟踪进度。



进度检查清单

使用此检查清单跟踪你在工作流程中的进度:

  • - [ ] 阶段 1:解析 Issue URL
  • [ ] 阶段 2:获取 Issue 详情
  • [ ] 阶段 3:克隆或定位仓库
  • [ ] 阶段 4:分析 Issue
  • [ ] 阶段 5:实施修复
  • [ ] 阶段 6:验证修复
  • [ ] 阶段 7:展示变更并获取确认
  • [ ] 阶段 8:提交拉取请求(用户批准后)

阶段 1:解析 Issue URL

从用户输入中提取 GitHub Issue URL 并解析其组成部分。

预期的 URL 格式: https://github.com/{owner}/{repo}/issues/{number}

  1. 1. 扫描用户消息中匹配上述模式的 URL。
  2. 提取三个值:
- owner — GitHub 组织或用户 - repo — 仓库名称 - number — Issue 编号
  1. 3. 如果未找到有效的 URL,请要求用户提供有效的 GitHub Issue URL。
  2. 在继续之前确认解析的值:
> 已解析的 Issue:{owner}/{repo}#{number}

阶段 2:获取 Issue 详情

检索完整的 Issue 内容,包括标题、正文、标签和评论。

策略 A:使用 gh CLI(首选)

在终端中运行:

bash
gh issue view {number} --repo {owner}/{repo} --comments

如果命令成功,从输出中提取:

  • - 标题
  • 正文/描述
  • 标签
  • 评论(可能包含重要的上下文、复现步骤或临时解决方案)

策略 B:回退到 fetch_content

如果 gh 未安装或命令失败:

  1. 1. 使用 fetch_content 工具访问 Issue URL:https://github.com/{owner}/{repo}/issues/{number}
  2. 解析获取的页面内容以提取:
- Issue 标题和正文 - 任何引用的文件路径、错误消息或堆栈跟踪 - 维护者或报告者的评论

提取关键信息

从 Issue 内容中识别并记录:

字段描述
问题摘要对 Bug 或功能缺失的一句话描述
复现步骤
如何触发该问题 |
| 预期行为 | 应该发生什么 |
| 实际行为 | 实际发生了什么 |
| 错误消息 | 堆栈跟踪、日志输出、错误代码 |
| 文件路径提示 | 提到的任何文件、模块或函数 |
| 相关 Issue/PR | 提供上下文的交叉引用 |


阶段 3:克隆或定位仓库

确保你可以本地访问仓库源代码。

步骤 1:检查当前工作区

bash
git remote -v 2>/dev/null

  • - 如果输出包含 github.com/{owner}/{repo}(或 github.com:{owner}/{repo}),说明你已经在正确的仓库中。跳到步骤 3。

步骤 2:如果需要则克隆

检查仓库是否已存在于本地常见位置:

bash
ls -d ~/Desktop/{repo} ~/projects/{repo} ~/repos/{repo} /tmp/{repo} 2>/dev/null

如果未找到,则克隆:

bash
gh repo clone {owner}/{repo} /tmp/{repo}

如果 gh 不可用:

bash
git clone https://github.com/{owner}/{repo}.git /tmp/{repo}

然后告知用户克隆位置。

步骤 2.5:进入仓库目录

在定位或克隆仓库后,在运行任何 git 命令之前 cd 进入仓库目录:

bash
cd {repo_path}

步骤 3:确保正确的分支

首先,检测默认分支:

bash

检测默认分支


default_branch=$(git symbolic-ref --short refs/remotes/origin/HEAD 2>/dev/null | sed s|^origin/||)
if [ -z $default_branch ]; then
default_branch=main
fi

然后检出默认分支并拉取最新更改:

bash
git checkout $default_branch
git pull --ff-only

创建修复分支:

bash
git checkout -b fix/issue-{number}



阶段 4:分析 Issue

系统地在代码库中定位问题。

4.1 关键词搜索

使用 Issue 中的错误消息、文件路径和函数名称进行搜索:

  • - 使用 grepcode 搜索 Issue 中提到的错误字符串、函数名称或变量名称。
  • 当 Issue 描述的是行为而非特定代码时,使用 searchcodebase 进行语义搜索。
  • 如果 Issue 提到特定文件名,使用 search_file 按名称查找文件。

4.2 理解上下文

一旦找到候选文件:

  1. 1. 阅读相关文件以了解当前实现。
  2. 追踪导致报告 Bug 的代码路径。
  3. 检查相关测试以了解预期行为。
  4. 如有必要,查看受影响文件的近期 git 历史:
bash git log --oneline -10 -- {file_path}

4.3 根因分析

在编写任何代码之前,明确说明:

  1. 1. 根本原因: Bug 发生的原因。
  2. 受影响的代码: 需要更改的文件和函数。
  3. 修复方法: 最小更改应该是什么。

阶段 5:实施修复

应用最小的代码更改来解决问题。

指南

  • - 最小差异: 只更改修复问题所必需的内容。不要重构无关代码。
  • 一致性: 遵循项目中现有的代码风格、命名约定和模式。
  • 无新依赖: 除非绝对必要且有充分理由。
  • 使用 search_replace 工具进行精确编辑。

如果需要更改多个文件

  1. 1. 在开始之前规划完整的更改集。
  2. 一次更改一个文件。
  3. 每次文件更改后,使用 get_problems 验证没有语法错误。

阶段 6:验证修复

验证修复是否有效且不会破坏任何内容。

6.1 检测项目类型和测试运行器

查找常见指示器:

文件可能的运行器
package.jsonnpm test 或 npx jest 或 npx vitest
Cargo.toml
cargo test |
| go.mod | go test ./... |
| pyproject.toml / setup.py | pytest |
| Makefile | make test |
| pom.xml | mvn test |
| build.gradle | ./gradlew test |

6.2 运行测试

bash

运行完整测试套件或与更改文件相关的限定测试


{test_command}

  • - 如果测试通过,进入阶段 7。
  • 如果测试失败,分析失败原因,调整修复,然后重新运行。

6.3 Lint / 格式检查(如果可用)

检查项目是否配置了 lint 或格式工具,并运行它们:

bash

示例


npm run lint 2>/dev/null
cargo clippy 2>/dev/null
go vet ./... 2>/dev/null

修复由你的更改引入的任何 lint 问题。



阶段 7:展示变更并获取确认

向用户展示修复并等待明确批准后再继续。

7.1 显示修复摘要

{owner}/{repo}#{number} 的修复摘要

Issue: {issue_title}
根本原因: {简要说明}
更改:

  • - {filepath1}:{更改了什么以及为什么}
  • {filepath2}:{更改了什么以及为什么}

7.2 显示差异

显示实际的代码更改,以便用户审查:

bash
git diff

突出显示关键修改并解释其影响。

7.3 等待用户确认

询问用户:

您是否要采用这些更改?如果需要调整,请告诉我。

  • - 如果用户批准,进入阶段 8。
  • 如果用户要求更改,修改修复(返回阶段 5)并重新展示。

阶段 8:提交拉取请求(用户批准后)

仅在用户在阶段 7 确认更改后执行此阶段。

首先,询问用户:

您是否希望我自动提交并向仓库提交 PR?

  • - 如果用户拒绝,显示建议的提交消息和 gh pr create 命令供手动执行(参见下面的回退方案)。
  • 如果用户同意,自动执行步骤 1-4。

步骤 1:暂存和提交

bash
git add -A
git

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 git-mender-1775711768 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 git-mender-1775711768 技能

通过命令行安装

skillhub install git-mender-1775711768

下载

⬇ 下载 git-mender v1.1.0(免费)

文件大小: 10.62 KB | 发布时间: 2026-4-11 22:56

v1.1.0 最新 2026-4-11 22:56
git-mender 1.1.0 Changelog

- Added a detailed, step-by-step workflow covering all phases from parsing GitHub issue URLs to submitting pull requests.
- Introduced a checklist-based progress tracker to manage agent tasks.
- Improved repository detection and cloning logic, including fallback steps if tools are missing.
- Expanded analysis and implementation instructions to ensure thorough root cause analysis before making code changes.
- Enhanced verification phase with automated project type detection and test/lint command guidance.
- Added user confirmation and detailed change presentation before submitting pull requests.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部