Local MCP Server
在Termux中运行本地MCP服务器,支持Ollama模型的文件读取与命令执行。
自动分析 GitHub 问题并提交修复 Pull Request,需用户确认后执行。
openclaw skills install @4ydx3906/git-mender命令、参数、文件名以原文为准
你是一个自主代理,能够读取 GitHub 问题,理解问题所在,定位相关代码,实现修复,并为评审准备所有内容。请按以下阶段依次执行,并使用检查清单跟踪进度。
使用此检查清单跟踪工作流程的进展:
从用户输入中提取 GitHub 问题 URL,并解析其中的组成部分。
预期 URL 格式: https://github.com/{owner}/{repo}/issues/{number}
- owner — GitHub 组织或用户名称
- repo — 仓库名称
- number — 问题编号
已解析的问题:{owner}/{repo}#{number}
获取完整的问题内容,包括标题、正文、标签和评论。
gh CLI(首选)在终端中运行:
gh issue view {number} --repo {owner}/{repo} --comments如果命令成功执行,从输出中提取:
fetch_content如果 gh 未安装或命令失败:
fetch_content 工具获取问题 URL 的内容:https://github.com/{owner}/{repo}/issues/{number}- 问题标题和正文
- 任何引用的文件路径、错误信息或堆栈追踪
- 维护者或报告者发布的评论
从问题内容中识别并记录以下信息:
| 字段 | 说明 |
|---|---|
| 问题摘要 | 用一句话描述缺陷或功能缺失 |
| 复现步骤 | 触发问题的方法 |
| 预期行为 | 正常情况下应发生的结果 |
| 实际行为 | 实际发生的情况 |
| 错误信息 | 堆栈追踪、日志输出、错误代码 |
| 文件路径提示 | 问题中提到的文件、模块或函数 |
| 相关问题/拉取请求 | 提供上下文的交叉引用 |
确保你拥有对仓库源代码的本地访问权限。
git remote -v 2>/dev/nullgithub.com/{owner}/{repo}(或 github.com:{owner}/{repo}),说明你已在正确仓库中。跳至步骤 3。检查仓库是否已存在于常见位置:
ls -d ~/Desktop/{repo} ~/projects/{repo} ~/repos/{repo} /tmp/{repo} 2>/dev/null如果未找到,执行克隆:
gh repo clone {owner}/{repo} /tmp/{repo}如果 gh 不可用:
git clone https://github.com/{owner}/{repo}.git /tmp/{repo}然后告知用户克隆后的路径。
在定位或克隆仓库后,进入仓库目录再执行任何 git 命令:
cd {repo_path}首先检测默认分支:
# 检测默认分支
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然后检出默认分支并拉取最新更改:
git checkout $default_branch
git pull --ff-only创建修复分支:
git checkout -b fix/issue-{number}系统性地在代码库中定位问题。
使用问题中提到的错误信息、文件路径和函数名进行搜索:
grep_code 搜索错误字符串、函数名或变量名。search_codebase 进行语义搜索,当问题描述的是行为而非具体代码时。search_file 根据文件名查找文件,若问题中提及特定文件名。找到候选文件后:
git log --oneline -10 -- {file_path}在编写任何代码前,明确说明:
应用最小的代码更改以解决问题。
search_replace 工具进行精确编辑。get_problems 验证是否存在语法错误。确认修复有效且不会引入新的问题。
查找常见标识:
| 文件 | 可能的运行命令 |
|---|---|
package.json | npm 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 |
# 运行完整测试套件,或针对修改文件的局部测试
{test_command}检查项目是否配置了代码检查或格式化工具,并运行它们:
# 示例
npm run lint 2>/dev/null
cargo clippy 2>/dev/null
go vet ./... 2>/dev/null修复因更改引入的任何代码风格问题。
向用户展示修复内容,并等待其明确批准后才继续。
## {owner}/{repo}#{number} 修复摘要
**问题:** {issue_title}
**根本原因:** {简要说明}
**修改内容:**
- `{file_path_1}`:做了什么修改及原因
- `{file_path_2}`:做了什么修改及原因展示实际的代码变更内容,供用户审查:
git diff突出关键修改点,并解释其影响。
向用户提问:
是否接受这些修改?如有需要调整之处,请告知。
仅在用户于第 7 阶段确认修改后才执行此阶段。
首先询问用户:
是否希望我自动提交并创建 PR 到该仓库?
gh pr create 命令供手动执行(见下方备用方案)。git add -A
git commit -m "fix: {简短描述} (#{number})
{详细说明问题所在及如何修复}
Closes #{number}"尝试推送到原始仓库:
git push origin fix/issue-{number}--head fix/issue-{number} 继续下一步。1. 分叉仓库:
gh repo fork {owner}/{repo} --clone=false2. 检测 GitHub 用户名:
gh api user --jq '.login'3. 添加分叉仓库为远程:
git remote add fork https://github.com/{your_username}/{repo}.git4. 推送到分叉仓库:
git push fork fix/issue-{number} 5. 使用 --head {your_username}:fix/issue-{number} 继续下一步。
gh pr create \
--repo {owner}/{repo} \
--title "fix: {简短描述}" \
--body "## 概述
修复 #{number}。
### 问题
{简要问题描述}
### 解决方案
{简要解决方案描述}
### 修改内容
- {修改项 1}
- {修改项 2}
### 测试验证
- [x] 现有测试通过
- [x] {已执行的其他验证操作}" \
--base {default_branch} \
--head {head_ref}
{head_ref}为fix/issue-{number}(直接推送时)或{your_username}:fix/issue-{number}(分叉推送时)。
gh pr create 输出中捕获 PR 地址。✅ PR 创建成功:{PR_URL}
请前往 PR 页面查看 CI 检查结果或评审反馈。
若用户拒绝自动提交,或任一步骤失败,提供以下信息:
fix: {简短描述} (#{number})
{详细说明}
Closes #{number} gh pr create \
--title "fix: {简短描述}" \
--body "..." \
--base {default_branch} - 审查差异:git diff {default_branch}
- 提交并推送更改
- 创建 PR 并确认 CI 通过
对以下常见失败场景进行妥善处理:
| 场景 | 处理方式 |
|---|---|
gh CLI 未安装 | 回退至 git clone 和 fetch_content。建议安装:brew install gh 或访问 https://cli.github.com |
gh auth 未配置 | 提示用户运行 gh auth login 后重试 |
| 仓库为私有 / 403 错误 | 告知用户需认证,并引导其完成身份验证 |
| 问题不存在 / 404 | 再次核对链接,请求用户确认 |
无写入 /tmp 权限 | 改为在工作区目录中克隆 |
| 修复后测试仍失败 | 分析失败输出,调整修复方案并重新验证 |
| 无法确定根本原因 | 展示当前发现的信息,请求用户提供指导 |
| 问题过大或复杂 | 将问题拆分为子任务,优先修复最关键部分,并标注剩余工作 |
git push 权限被拒 | 自动分叉仓库并推送到分叉 |
gh pr create 失败 | 显示错误详情,并提供手动命令 |
用户的 gh 未认证 | 提示用户先运行 gh auth login |
| 远程分支已存在 | 询问用户是否强制推送,或创建新分支名 |
| 该分支已有 PR | 显示现有 PR 地址,并询问是否更新 |
本技能与以下外部服务交互:
| 接口地址 | 用途 | 发送数据 |
|---|---|---|
github.com | 克隆仓库、获取问题详情、推送分支、创建 PR | Git 操作、分支名称、PR 元数据 |
GitHub API(通过 gh CLI) | 读取问题/评论、创建 PR、分叉仓库、检查认证状态 | 问题编号、仓库所有者/名称、PR 标题/正文 |
No other external services are contacted. All code analysis and modification happens locally.
gh CLI 认证信息。不会存储或传输任何额外凭据。该技能专为 AI 编码助手中的自主执行而设计。触发后,代理将:
gh CLI 或网页抓取获取问题详情步骤 7 和 8 需要用户明确确认才能继续。代理不会在未获用户同意的情况下推送代码或创建 PR。
使用此技能即表示您授权代理:
所有 Git 操作均使用您现有的 gh CLI 凭据。仅在您信任目标仓库的前提下安装此技能。
已收录 2 个 Skill