SuperAPI AI 工具集

RepoAgent

RepoAgent 是由 OpenBMB 开发的、基于大语言模型的仓库级代码文档生成框架,旨在帮助开发者和团队快速理解代码库并自动生成文档。它能够检测 Git 仓库中的文件增删改,利用 AST 分析代码结构,识别对象间的双向调用关系,并自动生成或更新对应的 Markdown 文档。通过命令行或 pre-commit 钩子,RepoAgent 可在每次提交时自动触发,实现文档与代码的同步维护,尤其适合缺少专职文档人员的小团队。

访问官网

工具介绍

RepoAgent 是一个由大语言模型(LLM)驱动的仓库代理框架,专注于仓库级别的代码文档生成。它的目标是创建一个智能文档助手,帮助人们阅读和理解代码仓库、生成文档,从而提升效率、节省时间。

用途

在计算机编程中,完整的项目文档(包括对每个 Python 文件的详细说明)对于理解、维护和增强代码库至关重要。传统上,创建和维护软件文档需要大量人力和专业知识,这对没有专职人员的小团队来说是一个挑战。RepoAgent 利用 GPT 等大语言模型,让 AI 承担大部分文档流程,使人类开发者只需专注于验证和微调,大幅减少手动编写文档的负担。

主要能力

  • 自动检测 Git 仓库中的变更,跟踪文件的添加、删除和修改。
  • 通过 AST 独立分析代码结构,为单个对象生成文档。
  • 准确识别对象间的双向调用关系,丰富文档内容的全局视角。
  • 基于变更无缝替换 Markdown 内容,保持文档一致性。
  • 执行多线程并发操作,提升文档生成效率。
  • 为团队协作提供可持续、自动化的文档更新方式。
  • 以出色方式展示代码文档(每个项目配有由 Gitbook 驱动的文档书籍)。
  • 支持探索“与仓库聊天”(Chat With Repo)这一下游应用的原型,例如 Issues 自动问答和代码解释。
  • 计划或支持的功能包括:结合全局文档自动生成 README.md、支持 Java/C/C++ 等多编程语言、支持 Llama、chatGLM、Qwen、GLM4 等本地模型。

使用方式

安装

仓库支持 GitHub Actions 用于自动化工作流(如构建、测试和部署),详细说明请参考 actions/run-repoagent。 可直接使用 pip 安装 repoagent 包。若希望贡献代码或搭建开发环境:

  1. 安装 PDM(如果尚未安装)。
  2. 使用 CodeSpace 或克隆仓库:
    • 使用 CodeSpace:点击使用 GitHub Codespace,然后进入下一步。
    • 克隆仓库:
      git clone https://github.com/LOGIC-10/RepoAgent.git
      cd RepoAgent
      
  3. 使用 PDM 配置:
    • 在 /RepoAgent 目录下运行以下命令初始化 Python 虚拟环境:
      pdm venv create --name repoagent
      
    • 激活虚拟环境。
    • 使用 PDM 安装依赖:
      pdm install
      

配置

在配置具体参数前,请确保在命令行中将 OpenAI API 配置为环境变量。进入 RepoAgent 根目录,在终端尝试相应命令。 run 命令支持以下可选标志(若设置,将覆盖配置默认值):

  • -m, --model TEXT:指定用于补全的模型。默认:gpt-3.5-turbo
  • -t, --temperature FLOAT:设置模型的生成温度。较低的值使模型更确定。默认:0.2
  • -r, --request-timeout INTEGER:定义 API 请求的超时时间(秒)。默认:60
  • -b, --base-url TEXT:API 调用的基础 URL。默认:https://api.openai.com/v1
  • -tp, --target-repo-path PATH:目标仓库的文件系统路径。用作文档生成的根目录。默认:path/to/your/target/repository
  • -hp, --hierarchy-path TEXT:项目层次结构文件的名称或路径,用于组织文档结构。默认:.project_doc_record
  • -mdp, --markdown-docs-path TEXT:存储或生成 Markdown 文档的文件夹路径。默认:markdown_docs
  • -i, --ignore-list TEXT:文档生成期间要忽略的文件或目录列表,用逗号分隔。
  • -l, --language TEXT:文档的 ISO 639 代码或语言名称。默认:Chinese
  • -ll, --log-level [DEBUG|INFO|WARNING|ERROR|CRITICAL]:设置应用的日志级别。默认:INFO

首次生成与自动维护

如果是第一次为目标仓库生成文档,RepoAgent 会自动创建一个维护全局结构信息的 JSON 文件,并在目标仓库根目录下创建一个名为 Markdown_Docs 的文件夹用于存储文档。 在为目标仓库初始生成全局文档后,或者如果克隆的项目已包含全局文档信息,你可以通过在目标仓库中配置 pre-commit 钩子,与团队无缝、自动地维护项目内部文档。 RepoAgent 目前支持为项目生成文档,需要在目标仓库中进行一些配置:

  1. 确保目标仓库是已初始化的 git 仓库。
  2. 在目标仓库中安装 pre-commit 以检测 git 仓库的变化。
  3. 在目标仓库根目录创建名为 .pre-commit-config.yaml 的文件(示例参见原文)。
  4. 关于钩子的具体配置方法,请参考 pre-commit。配置好 yaml 文件后,执行相应命令安装钩子。 这样,每次 git 提交都会触发 RepoAgent 的钩子,自动检测目标仓库的变化并生成相应文档。随后,你可以对目标仓库做一些修改(例如添加新文件或修改现有文件),只需遵循正常的 git 工作流:git add、git commit -m "your commit message"、git push。RepoAgent 钩子会在 git commit 时自动触发,检测上一步添加的文件并生成相应文档。执行后,RepoAgent 会自动修改目标仓库中暂存的文件并正式提交。执行完成后会显示绿色的“Passed”。生成的文档将存储在目标仓库根目录下指定的文件夹中。

案例与质量

官方使用默认模型 gpt-3.5-turbo 为 XAgent 项目(约 270,000 行代码)生成文档,结果可在 XAgent 项目 GitHub 上的 Markdown_Docs 目录中查看。为提升文档质量,建议考虑更高级的模型,如 gpt-4-1106 或 gpt-4-0125-preview。最终,你可以通过自定义提示词灵活调整文档的输出格式、模板等方面。

适用场景

  • 缺少专职文档人员的小团队,希望自动生成和维护项目文档。
  • 需要快速理解陌生或大型代码仓库的开发者。
  • 希望将文档生成集成到现有 Git 工作流(如 pre-commit)中的团队。
  • 对自动技术写作和“与仓库聊天”等下游应用感兴趣的探索者。

限制

  • 需要配置 OpenAI API 环境变量才能使用。
  • 当前主要针对 Python 项目生成文档,多编程语言支持(Java、C/C++ 等)为计划中的功能。
  • 本地模型支持(如 Llama、chatGLM、Qwen、GLM4)为计划中的功能。
  • 文档质量受所选模型影响,默认 gpt-3.5-turbo 效果可能有限,建议使用更高级模型。
  • 关于收费、价格等具体信息暂未提供。