人工智能AI Agent代码评审代码智能体开发工具质量保障工作流自动化【免费下载链接】pr-agent PR Agent: The Original Open-Source PR Reviewer. This project is not the Qodo free tier.项目地址https://gitcode.com/GitHub_Trending/pr/pr-agent点击查看免费下载导读/describe是 PR-Agentgh_mirrors/pr/pr-agent核心工具之一能够在数秒内基于 PR 的 Git Diff 自动生成 PR 标题、PR 类型Bug fix / Tests / Enhancement 等、摘要、逐文件代码走读Changes walkthrough以及可选的 Mermaid 序列图与语义化标签。本文以官方文档 describe.md 为主体结合仓库源码与配置实现完整讲解该工具的手动/自动触发方式、全部配置参数、Markers 模板机制、自定义标签方案及底层执行流程帮助你把它深度集成到自己的 PR 工作流中。1./describe工具概述describe工具会针对一个 Pull Request 生成以下内容PR 标题可选由generate_ai_title控制PR 类型type如Bug fix、Tests、Enhancement、Documentation、OtherPR 摘要description对 PR 变更的总体概括代码走读walkthrough逐文件的变更说明序列图可选Mermaid flowchart展示组件/函数间的交互标签可选自动为 PR 打上语义化标签。工具的触发方式有两种自动触发每次新 PR 被 打开 时自动运行手动触发在任意 PR 上评论/describe即可调用。2. 手动触发与运行效果在任何 PR 上评论/describe工具即被唤醒大约30 秒后取决于模型响应与 PR 大小工具会生成一份完整的 PR 描述如果需要临时调整本次调用的配置可以直接把配置项拼到命令后面/describe --pr_description.some_config1... --pr_description.some_config2...例如/describe --pr_description.generate_ai_titletrue --pr_description.publish_labelsfalse--后面的参数采用section.keyvalue的命名法任何pr_description配置项都可以这样覆盖。3. 自动触发PR 打开时自动运行要实现在 PR 打开时自动执行describe需要在本地配置文件仓库根目录的.pr_agent.toml中定义[github_app] pr_commands [ /describe, ... ] [pr_description] publish_labels true ...pr_commandsPR 打开时自动执行的命令列表。注意GitLab Webhook、Bitbucket App、Azure DevOps Webhook 等部署形态也使用类似机制见 automations_and_usage.md 中各自平台的pr_commands配置。[pr_description]describe工具专属配置段想要调整的默认值都在这里覆盖。除此之外describe也可以挂到push 事件上当新代码被推送到已打开的 PR 时自动执行。例如[github_app] handle_push_trigger true push_commands [ /describe, /review, ]安装 PR-Agent 后的默认行为是pr_commands [/describe, ...]即每个新 PR 都会以默认配置自动运行一次describe。提示配置文件的加载优先级为「本地.pr_agent.toml仓库默认分支 全局配置 外部配置 URL」且建议配置文件保持精简只覆盖需要修改的项不要整段复制默认配置参见 configuration_options.md。4. 保留原始用户描述Preserving the original user description默认情况下PR-Agent 会尽量保留你原始的 PR 描述——通过把它放在自动生成内容上方的方式实现。这要求在创建 PR 时就写好描述。常见疑问PR-Agent 把我原来的描述删了为什么根据项目经验主要有两种可能你在工具运行过程中编辑了描述这会触发竞态条件可能导致原始描述丢失。因此建议在发起 PR 之前就写好描述工具运行期间不要改动。更新描述时的分区逻辑/describe在更新PR 描述时会把PR Type 字段以上的内容视为用户内容并予以保留该标记以下的内容被视为之前自动生成的内容会被整体替换这个行为在源码_prepare_pr_answer()中也有体现add_original_user_description配置开启时self.user_description会被重新插入生成的数据字典并排在title、type之前见 pr_description.py 的_prepare_data方法。5. 序列图Mermaid Diagram支持/describe生成的内容中包含一个Mermaid 序列图/流程图用于展示 PR 中组件或函数之间的交互关系。该功能默认开启由pr_description.enable_pr_diagram控制。方向自适应图的绘制方向会根据图形形状自动调整——当图中最长节点链超过pr_description.pr_diagram_direction_threshold默认5时图会改为**自上而下TD**绘制而不是自左向右LR避免宽图被缩放得难以阅读也可以显式设置pr_description.pr_diagram_direction LR或TD来固定方向。该逻辑在源码中有完整实现apply_diagram_direction()会先解析 Mermaid 头部方向声明再通过_parse_diagram_edges()提取有向边用_longest_diagram_chain()基于拓扑排序计算最长链长度最后按阈值决定方向见 pr_description.py 的apply_diagram_direction函数。对应单测位于 test_pr_description.py其中用SHORT_CHAIN A -- B -- C、THRESHOLD_CHAIN A -- B -- C -- D -- E、LONG_CHAIN A -- B -- C -- D -- E -- F三组用例验证方向选择与默认阈值5的边界行为。注意enable_pr_diagram生效依赖 Git Provider 支持GFM MarkdownGitHub、GitLab 支持。从源码看enable_pr_diagram get_settings().pr_description.get(enable_pr_diagram, False) and self.git_provider.is_supported(gfm_markdown)见 pr_description.py不支持 GFM 的平台会自动关闭该能力。6. 配置参数详解Configuration Options以下参数位于配置文件[pr_description]段。表格为官方文档整理默认值以仓库内 configuration.toml 为准文中已按该文件补齐参数说明默认值publish_labels若为 true工具会把标签发布到 PR 上falsepublish_description_as_comment若为 true描述以评论形式发布为 false 时覆盖原始描述falsepublish_description_as_comment_persistent若为 true 且publish_description_as_comment为 true描述以持久评论发布可随更新自动刷新trueadd_original_user_description若为 true把原始用户描述附加到生成的描述中truegenerate_ai_title若为 true同时为 PR 生成 AI 标题falseextra_instructions额外指令例如focus on the changes in the file X. Ignore change in ...enable_pr_type若为 false描述内容中不展示PR type文本trueenable_pr_description若为 false不请求模型生成摘要部分也不在描述中展示图与走读不受影响truefinal_update_message若为 true完成/describe后追加一条 PR Description updated to latest commit... 评论trueenable_semantic_files_types若为 true生成 Changes walkthrough 文件走读表格truefile_table_collapsible_open_by_default控制 Changes walkthrough 中文件列表初始展开或折叠falsecollapsible_file_list若为 true文件列表可折叠若为adaptive仅当文件数超过collapsible_file_list_threshold时折叠adaptivecollapsible_file_list_thresholdadaptive 折叠模式的阈值6enable_large_pr_handling若为 true大 PR 会分多次调用 AI 并合并结果覆盖更多文件trueenable_help_text若为 true在评论中展示帮助文本falseenable_pr_diagram若为 true生成总结主要 PR 变更的 Mermaid 流程图不适用时该字段为空truepr_diagram_direction生成图的方向adaptive、LR或TDadaptive 根据图形形状选择adaptivepr_diagram_direction_thresholdadaptive 模式下最长链超过该节点数时改为自上而下5auto_create_ticket若为 truePR 打开时自动在工单系统创建 ticketfalseuse_description_markers若为 true使用 markers 模板机制falseinclude_generated_by_header若为 true为自动内容添加 Generated by PR Agent at ... 头部trueenable_large_pr_handling大 PR 拆分处理开关见上truemax_ai_calls大 PR 处理时允许的最大 AI 调用次数4async_ai_calls大 PR 分片处理时是否并发调用 AItrue6.1 从源码看配置项的实际作用几个关键配置在 pr_description.py 中有明确的代码落点enable_semantic_files_types与 GFM 依赖__init__中若平台不支持gfm_markdown会自动降级关闭该配置源码注释为 Disabling semantic files types ... gfm_markdown not supported。collapsible_file_list_threshold__init__中通过get_settings().pr_description.get(collapsible_file_list_threshold, 8)读取配置文件的正式默认值为6并在process_pr_files_prediction()中参与 adaptive 判断。发布流程run()方法中publish_labels为 true 且平台支持标签时会合并原始用户标签后publish_labels(new_labels)publish_description_as_comment决定走publish_comment/publish_persistent_comment还是publish_description覆盖原始描述。覆盖模式下若generate_ai_title为 falsetitle_to_publish会被置为None从而不触碰用户手动编辑的标题对应注释#2474。6.2 大 PR 处理机制当enable_large_pr_handlingtrue且 PR 超出单次 token 预算时工具会通过get_pr_diff_multiple_patchs()将 diff 拆成多个补丁块chunk对每个块用pr_description_only_files_prompts并行或串行生成文件级描述由async_ai_calls控制默认并发合并所有块的 YAML 结果再用pr_description_only_description_prompts推断 PR 头部标题/类型/摘要通过extend_uncovered_files()把未被覆盖的文件以 additional files 形式补进表格上限MAX_EXTRA_FILES_TO_OUTPUT 100。若某些块生成失败工具会保留成功块的结果并在描述末尾追加覆盖率提示脚注_get_description_coverage_footer()最多列出MAX_DESCRIPTION_COVERAGE_FILES 50个失败文件确保用户清楚描述是否完整覆盖了全部文件。相关单测见 test_pr_description_lifecycle.py 与 test_pr_description.py。7. Markers 模板机制启用pr_description.use_description_markerstrue后/describe采用模板式替换PR 原始描述中的pr_agent:marker_name占位符会被逐一替换为对应内容。这种机制能精确控制用户内容与自动生成内容的落位把最大控制权交给用户。例如 PR 原始描述是User content... ## PR Type: pr_agent:type ## PR Description: pr_agent:summary ## PR Walkthrough: pr_agent:walkthrough ## PR Diagram: pr_agent:diagram替换规则pr_agent:type→ PR 类型pr_agent:summary→ PR 摘要pr_agent:walkthrough→ PR 走读pr_agent:diagram→ 序列图若开启。从源码_prepare_pr_answer_with_markers()看替换实现还额外支持HTML 注释格式的占位符如!-- pr_agent:type --且若原始描述中没有 markers工具会完全不做任何改动——_prepare_prediction()中有明确检查if get_settings().pr_description.use_description_markers and pr_agent: not in self.user_description: ... Skipping AI prediction。效果示意替换前 → 替换后相关配置参数use_description_markers启用 markers 模板默认falseinclude_generated_by_header为自动生成内容添加 Generated by PR Agent at ... 头部默认truediagram若描述中存在该 marker则替换为 PR 序列图需开启 diagram。8. 自定义标签Custom Labelsdescribe工具的默认标签比较通用适合任何仓库Bug fix、Tests、Enhancement、Documentation、Other。你可以定义与自身仓库/业务相关的自定义标签有两种配置途径。8.1 通过配置文件定义在配置文件中启用并描述每个标签。标签描述必须是条件语句明确说明满足什么条件时将该标签加到 PR 上[config] enable_custom_labelstrue [custom_labels.sql_changes] description Use when a PR contains changes to SQL queries [custom_labels.test] description use when a PR primarily contains new tests ...提示当自定义标签不再相关时运行generate_labels或describe工具会自动将其从 PR 中移除。8.2 通过仓库的 Labels 页面定义也可以直接在仓库的标签页管理自定义标签GitHub进入https://github.com/{owner}/{repo}/labels或在 Issues/PRs 页面点击 Labels 标签页GitLab进入https://gitlab.com/{owner}/{repo}/-/labels或左侧菜单 Manage → Labels。新增/编辑标签时按下述格式标签名自定义标签的名称描述描述以pr_agent:前缀开头例如pr_agent: Description of when AI should suggest this label。示例Main topic:performance——pr_agent:The main topic of this PR is performanceNew endpoint——pr_agent:A new endpoint was added in this PRSQL query——pr_agent:A new SQL query was added in this PRDockerfile changes——pr_agent:The PR contains changes in the Dockerfile描述要详尽且条件明确告诉模型何时建议该标签从源码看自定义标签会注入到提示词模板中set_custom_labels()根据config.enable_custom_labels和custom_labels_class变量将标签枚举注入pr_description_prompts.toml的 Pydantic 定义PRType枚举后追加{{ custom_labels_class }}模型输出的labels字段再经_prepare_labels()归一化后发布。发布时还会通过get_user_labels()合并 PR 上已有的用户标签避免覆盖人工设置见 pr_description.py 的run()与 pr_description_prompts.toml。9. 使用提示Usage Tips自动化默认行为安装 PR-Agent 后describe的默认模式为pr_commands [/describe, ...]即每个新 PR 都会以默认配置自动运行一次。Markers 与命令参数组合Markers 是控制生成描述落位的另一条路径。若设置pr_commands [/describe --pr_description.use_description_markerstrue, ...]工具会把 PR 描述中所有pr_agent:marker_name形式的占位符替换为对应内容其中marker_name可以是typePR 类型summaryPR 摘要walkthroughPR 走读。Markers 模式下的安全行为启用 markers 后如果原始 PR 描述中不包含任何 marker工具将完全不改动描述源码中会跳过 AI 预测这为那些不想被自动改写描述的场景提供了保底机制。10. 从源码看完整执行链路describe的运行时主入口是PRDescription.run()见 pr_description.py整体流程可以归纳为初始化解析 PR URL、主语言、git provider 上下文构建vars变量集标题、分支、描述、diff、commit messages、repo context、skills context 等发布进度占位评论Preparing PR description...临时评论完成后删除关联工单提取可选extract_and_cache_pr_tickets()解析 PR 中的 ticket 引用并放入上下文若 token 预算不足会裁剪见fit_related_tickets_to_prompt_budget生成预测retry_with_fallback_models(self._prepare_prediction, ModelType.WEAK)调用弱模型类别完成预测失败时自动回退到备用模型_prepare_prediction()内部判断是否走大 PR 分片路径解析与后处理_prepare_data()将 YAML 预测结果重排键序_prepare_file_labels()生成按语义标签分组的文件字典_prepare_labels()归一化标签组装输出按use_description_markers走_prepare_pr_answer_with_markers()或_prepare_pr_answer()后者渲染出标题、正文与 walkthrough 表格并追加覆盖率脚注、帮助文本、show_relevant_configurations/show_run_details等可选区块发布先向可选外部 sink 推送输出push_outputs再按配置发布标签与描述若发布失败且config.propagate_tool_errorstrue异常会继续向上传播清理编辑/移除进度评论记录运行状态。其中walkthrough 表格由process_pr_files_prediction()渲染按语义标签分组为每个文件生成带/-行数统计、行号链接get_line_link、折叠列表adaptive 折叠的 HTML 表格并调用insert_br_after_x_chars()对长文本做换行处理以适配评论宽度。11. 小结/describe是 PR-Agent 中输入最少、产出最全的工具一条/describe命令即可获得标题、类型、摘要、逐文件走读、序列图与标签六类信息。通过[pr_description]配置段你可以精确控制每一部分的生成与发布行为通过 Markers 模板可以把自动内容镶嵌进自己撰写的描述中通过自定义标签则能让标签体系贴合仓库语义。无论是作为 GitHub App / GitLab Webhook 的自动流程还是手工在评论中触发它都能显著降低 PR 描述撰写的成本并让代码变更对评审者与下游工具更可读、可检索。延伸阅读自动化触发配置详见 automations_and_usage.md全部配置项权威默认值见 configuration.toml渲染后的配置参考见 configuration_reference.md。赞分享人工智能AI Agent代码评审代码智能体开发工具质量保障工作流自动化【免费下载链接】pr-agent PR Agent: The Original Open-Source PR Reviewer. This project is not the Qodo free tier.项目地址https://gitcode.com/GitHub_Trending/pr/pr-agent点击查看免费下载相关推荐CodiumAI PR-Agent智能标签生成如何自动分类PR类型与优先级CodiumAI PR Agent智能标签生成如何自动分类PR类型与优先级 CodiumAI PR Agent 是一款强大的AI驱动工具专门为GitH人工智能AI Agent代码评审代码智能体开发工具质量保障工作流自动化PR Agent 的 /add_docs 工具为 PR 新增代码组件自动生成内联文档PR Agent 的 /add_docs 工具为 PR 新增代码组件自动生成内联文档 /add_docs 是 PR Agent 提供的一个自动化代码文档工具人工智能AI Agent代码评审代码智能体开发工具质量保障工作流自动化PR Agent 问答工具 /ask 完全指南基于 PR 代码变更与指定代码行的自由提问PR Agent 问答工具 /ask 完全指南基于 PR 代码变更与指定代码行的自由提问 /ask 是 PR Agent 提供的自由问答Question A人工智能AI Agent代码评审代码智能体开发工具质量保障工作流自动化上一篇Conductor 工作流三步入门指南从任务定义到 Worker 执行的全流程解析下一篇华为路由器 SSH 默认凭据检测实战基于 routersploit ssh_default_creds 模块创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?