workbuddy 自动生成mr描述不规范,主因是ai缺乏对项目级模板与语义的结构化理解;需通过挂载pr模板、嵌入校验补全步骤、优化prompt指令、对接ci钩子四步解决。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您使用 WorkBuddy 自动生成 Git 合并请求(MR/PR)的描述内容,但发现输出格式松散、信息缺失或不符合团队规范,则问题通常源于 AI 缺乏对项目级 MR 模板与上下文语义的结构化理解。WorkBuddy 默认生成文本依赖通用语言模型能力,未主动读取 .gitmessage、.github/PULL_REQUEST_TEMPLATE.md 或 CI 流水线中定义的字段约束。以下是解决此问题的步骤:
一、挂载项目级 PR 模板作为 context 源
该方法使 WorkBuddy 在生成前实际加载真实模板文件,确保输出严格遵循字段顺序、必填项与占位符语义,避免自由发挥导致结构错乱。
1、确认项目根目录下存在标准 PR 模板文件,如 .github/PULL_REQUEST_TEMPLATE.md 或 .gitmessage
2、在 WorkBuddy 的 workflow 配置中,于 context 字段添加该路径:context: [".github/PULL_REQUEST_TEMPLATE.md"]
3、确保该文件可被 WorkBuddy 读取(检查文件权限与路径拼写)
4、在 prompt 中显式引用:请严格按 .github/PULL_REQUEST_TEMPLATE.md 的结构生成 MR 描述,不得增删章节,所有[ ]占位符须替换为实际内容,空项写“无”
二、在 workflow 中嵌入结构化校验与补全环节
该方法通过 YAML 步骤强制注入字段完整性检查与自动补全逻辑,将自然语言生成结果映射到预设 schema,保障标题、变更摘要、关联 Issue、测试验证等关键字段全部覆盖。
1、打开当前 workflow 文件,例如 ~/.workbuddy/workflows/create-pr.yaml
2、在 generate_description 步骤后新增 validate_and_enrich 步骤,类型为 run_script,内容为:
script: |
echo "Validating PR description structure"
python3 -c "
import sys, re
with open('./pr_desc.md') as f: txt = f.read()
required = ['## 变更摘要', '## 关联 Issue', '## 测试验证']
missing = [r for r in required if not re.search(r'^' + re.escape(r) + r'\s*$', txt, re.M)]
if missing:
print(f'ERROR: Missing sections: {missing}')
sys.exit(1)
else:
print('All sections present')"
3、添加 post-process 步骤,自动补全缺失字段(如自动提取 git log 中的关联 Issue 编号)
使用约定式提交(Conventional Commits)从 Git 历史记录中生成结构化变更日志,支持多种格式、AI 增强型描述以及可自定义的范围……
4、保存后执行 workbuddy run create-pr --no-cache 强制重跑全流程
三、使用 Prompt 注入带校验逻辑的生成指令
该方法不修改 workflow,而是通过高精度自然语言指令,驱动模型在单次响应中完成生成+自检+修正三重动作,适用于快速适配临时分支或轻量级项目。
1、输入完整 prompt:“你是一名资深 Git 协作工程师,请为本次 MR 撰写符合以下全部要求的描述:① 标题以 feat/fix/chore 开头,后接冒号与空格;② 正文首段为 20 字内功能概要;③ 必含三个二级标题:## 变更摘要(分点列出代码改动)、## 关联 Issue(格式为 Closes #123)、## 测试验证(说明本地验证方式与结果);④ 生成后逐项核对上述四条,若任一不满足,立即修正并重新输出完整描述”
2、禁止使用“大概”“可能”“建议”等模糊动词,所有测试验证描述必须含具体命令与预期输出片段,例如:“运行 npm test -- --testPathPattern=auth.spec.ts,返回 PASS 且覆盖率 ≥92%”
3、提交前手动确认生成内容中Closes #编号与当前仓库 Issue 真实存在且状态为 Open
四、对接 CI 流水线实现提交时自动注入
该方法将 MR 描述生成下沉至 Git 提交阶段,利用 pre-commit 或 commit-msg 钩子调用 WorkBuddy CLI,使每次 git commit -m 触发结构化描述初稿,再由开发者微调后用于 PR 创建,确保源头一致。
1、在项目根目录初始化 Git 钩子:git config core.hooksPath .githooks
2、创建 .githooks/commit-msg 脚本,内容包含 workbuddy run generate-pr-desc --input $1 --output /tmp/pr-desc-draft.md
3、配置 workflow 中 generate-pr-desc 的 input_schema 为接收单行 commit message,output_schema 指向 /tmp/pr-desc-draft.md
4、开发者执行 git commit 后,系统自动生成 draft,推送至远程前可手动编辑 .github/PULL_REQUEST_TEMPLATE.md 中的对应字段
5、触发 PR 时,GitHub 自动读取该模板文件并填充已编辑内容,无需二次粘贴,杜绝格式错位










