
人工智能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点击查看免费下载/ask是 PR Agent 提供的自由问答Question Answering工具它基于 Pull Request 的代码变更diff回答你提出的任何具体问题既可以对整个 PR 提问也可以对 diff 视图中的特定代码行提问甚至支持对评论中的图片提问。读完本文你将掌握/ask与/ask_line的完整用法、图片提问的直链获取技巧以及ask_heading、extra_instructions、use_conversation_history等配置项的底层行为。一、工具概览/ask能做什么/ask工具基于 PR 代码变更回答问题其上下文是 PR 的完整 Git Diff 以及 PR 的标题、分支、描述、语言、提交信息等元数据。它的工作方式是你提出一个问题模型基于 PR 中新增的代码diff 中带的行给出具体回答。因此提问时应尽量具体、清晰模糊的问题难以得到有价值的答案。调用方式是在任意 PR 下发表评论/ask ...例如/ask What does this change do?。除了通过 PR 评论触发也可以从 CLI 运行python -m pr_agent.cli --pr_urlPR_URL ask How does X work?CLI 与评论形式接受相同的工具参数与配置覆盖详见 docs/docs/tools/index.md 与 docs/docs/usage-guide/configuration_options.md。运行后的回答示例从源码实现看/ask对应的类是 PRQuestions其__init__会一次性收集以下上下文变量并组装成提示词titlePR 标题branchPR 源分支descriptionPR 描述language主语言由get_main_pr_language根据仓库语言与文件推断diffPR 的 Git Diffquestions用户问题文本conversation_history对话历史仅在支持线程评论的 Provider 上加载commit_messages_str提交信息列表extra_instructions来自pr_questions.extra_instructions的附加指令skills_context当skills.enabled为 true 时注入的组织技能上下文。这些变量最终渲染进 pr_questions_prompts.toml 中的 system/user 提示词模板模型被要求只针对 PR 新增代码行回答问题并且不得回避问题。二、对指定代码行提问/ask_line除对整个 PR 提问外你还可以在 PR 的 diff 视图中选中特定代码行让工具基于选中的这些行的代码变更回答问题。这是审查具体实现时最高效的用法。在 GitHub 的 diff 视图中操作步骤如下点击行号旁边的号选中该行要选中多行先点击第一行的 号然后按住并拖动鼠标选中其余行在评论框中输入/ask ...点击Add single comment按钮。注意工具对之前的问题没有记忆每个问题都是独立回答的除非配置了对话历史支持见下文use_conversation_history。/ask_line的源码实现行级提问对应 PR_LineQuestions 类。当你在 GitHub 的 diff 视图发起行级评论时GitHub App 会解析出该评论对应的 diff hunk并通过设置项注入ask_diff_hunk被选中的 hunk 片段见 github_app.pyline_start/line_end选中行的起止行号sidediff 的哪一侧RIGHT为默认file_name目标文件comment_id评论线程 ID。随后 extract_hunk_lines_from_patch 从 hunk 中提取出完整上下文 hunkfull_hunk和被选中的行selected_lines两者分别渲染进 pr_line_questions_prompts.toml 的 user 提示词——模型先看完整 hunk 上下文再聚焦于被选中的行回答问题。该提示词模板还支持一个高级能力resolve_threads当配置开启且 Provider 支持线程解析时模型在回答末尾判定讨论线程是否已解决若已解决则追加[THREAD_RESOLVED]标记工具会据此自动关闭该审查线程见 pr_line_questions.py。若未匹配到任何 hunk工具不会调用模型而是回复一条说明无法回答的消息。三、对图片提问/ask 图片/ask还支持针对评论中出现的图片提问此时整个 PR 代码都会被用作上下文。基本语法是/ask ... [Image](https://real_link_to_image)其中https://real_link_to_image是图片的直接链接。为什么需要直接链接GitHub 内置了在评论中粘贴图片的机制但粘贴进去的图片并不会提供直接链接它只是一段 Markdown 引用。而/ask需要拿到https://...形式的直链才能把图片传给模型。为此官方推荐以下四步方案先发表一条只包含图片的评论对该评论进行引用回复quote reply在打开的编辑框中把问题写在图片下方发表评论等待回答。最终效果示意图片识别的源码逻辑从源码看identify_image_in_comment 会从问题文本中解析图片路径支持两种写法image形式提取括号内的图片路径直接包含https://且带.png/jpg后缀的直链截取 URL 作为图片路径。识别到图片后工具会把img_path注入变量并在调用chat_completion时以多模态方式把图片与 PR diff 一起提交给模型见 pr_questions.py。四、配置选项/ask相关的所有配置项都在[pr_questions]配置段下默认值定义于 configuration.toml。配置项说明ask_heading顶层/ask回答的纯文本标题默认值为Ask。Markdown 渲染器会转义标点以保持周围格式与 ❓ emoji 不变而纯文本转换器则按原样输出配置的文本。该配置不影响/ask_line回复也不影响回答正文中的Answer小节标题。extra_instructions给工具的可选附加指令。例如Do not answer questions that ask to rate PR quality on a scale of 1 to 10. Instead, tell the user this type of question is not allowed.enable_help_text若设为 true工具会在回复评论中附带一段工具使用指南help text。默认为 false。use_conversation_history若设为 true工具在对特定代码行提问GitHub时会使用评论线程中的对话历史作为上下文。默认 true。配置文件中的示例用法[pr_questions] ask_heading Architecture Question extra_instructions Do not answer questions that ask to rate PR quality on a scale of 1 to 10.上述ask_heading配置会渲染为### **Architecture Question** ❓。这对应 format_pr_questions_header 的实现它读取pr_questions.ask_heading在支持 Markdown 反斜杠转义的 Provider 上对标点做转义处理最终拼接为### **{heading}** ❓若配置值非法非字符串、为空或包含多行会回退到默认值Ask。除配置文件中设置外还可以在 PR 评论中按命令参数临时覆盖--pr_questions.xxx/ask What does this change do? --pr_questions.extra_instructionsAnswer in one short paragraph.补充resolve_threads与配置安全除了原文档列出的四项[pr_questions]段还包含一个resolve_threads选项默认false用于控制/ask_line是否在判定问题已解决后自动关闭审查线程见 pr_line_questions.py。由于它会影响评论线程状态该选项与use_conversation_history一同被 config_security.py 列入敏感配置白名单只有显式允许的值才会从仓库配置/远程配置中生效。五、回答生成流程与工程细节一次/ask调用在 PRQuestions.run 中按以下流程执行若config.publish_output开启先发布一条 Preparing answer... 临时评论从问题文本中识别图片路径identify_image_in_comment通过retry_with_fallback_models(..., model_typeModelType.WEAK)调用模型失败时自动回退到备用模型使用AttemptTokenBudget对对话历史与 PR diff 做 token 预算拟合——先按 token 限制裁剪对话历史保留后缀再计算get_pr_diff确保完整 diff 能放进模型上下文否则直接报错生成回答并发布若存在comment_id且 Provider 支持线程化问答则回复到原评论线程而不是新开一条评论见_publish_answer。回答发布前还有一道防误触净化处理_prepare_pr_answer会保证回答中没有任何行以/开头避免在支持快捷命令的 Provider如 GitLab上被误解析为新的工具调用见 pr_questions.py。对话历史的加载use_conversation_history开启时PR_LineQuestions._load_conversation_history 会通过get_review_thread_comments拉取评论线程中的历史消息过滤掉空评论与当前提问本身格式化为N. username: message的编号列表注入提示词若历史过长_fit_conversation_history会按 token 预算裁剪并保留靠后的部分同时记录警告日志。六、测试与验证仓库为/ask相关逻辑提供了较完整的单元测试可作为行为契约参考test_azure_devops_webhook_comments.py 验证了 Azure DevOps Webhook 场景下行级评论被转换为/ask_line --line_start8 --line_end10 --sideright、PR 评论被转换为带--comment_id/--origin_comment_id的线程化/ask、无效行范围回退为线程化/ask、空/ask被保留等行为test_cli_command_tokenization.py 验证了/ask What changed here?被正确分词为ask命令与参数。总结/ask是 PR Agent 中最灵活的自由问答工具对整个 PR 提问用于快速理解变更意图对指定代码行提问/ask_line用于深入审查具体实现附加图片则可以把 UI 截图、报错截图等非文本信息纳入问答上下文。配置上ask_heading控制回答标题、extra_instructions注入行为约束、enable_help_text决定是否附带使用指南、use_conversation_history决定行级问答是否携带线程历史。建议在实际使用中把问题写具体、附上必要的行号或图片直链并结合--pr_questions.xxx临时参数做细粒度控制。赞分享人工智能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点击查看免费下载相关推荐PR-Agent /describe 工具完全指南自动生成 PR 标题、类型、摘要与代码走读PR Agent /describe 工具完全指南自动生成 PR 标题、类型、摘要与代码走读 导读 /describe 是 PR Agent gh_mirr人工智能AI Agent代码评审代码智能体开发工具质量保障工作流自动化CodiumAI PR-Agent自定义提示终极指南完全掌控AI代码分析行为CodiumAI PR Agent自定义提示终极指南完全掌控AI代码分析行为 CodiumAI PR Agent是一款强大的AI代码分析工具能够自动化人工智能AI Agent代码评审代码智能体开发工具质量保障工作流自动化突破代码审查效率瓶颈CodiumAI PR-Agent自定义工具开发指南突破代码审查效率瓶颈CodiumAI PR Agent自定义工具开发指南 你是否还在为PR审查中重复的代码检查工作而烦恼是否希望能够根据团队需求定制自动化审人工智能AI Agent代码评审代码智能体开发工具质量保障工作流自动化上一篇192M参数如何分工ARDY-SOMA-RP-30FPS-KimodoRep-Horizon60 实时动作生成的 Tokenizer 与 Denoiser 架构深度剖析下一篇PowerSploit Recon 模块 ConvertTo-SID将用户/组名称转换为安全标识符SID的实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考