CodeFuse-CGM
CodeFuse-CGM 是一款专为仓库级软件工程任务设计的图基大语言模型框架,其核心成果已入选 NeurIPS 2025。它主要解决传统 AI 编程助手在处理大型代码库时,因缺乏全局结构感知而难以精准定位和修复复杂 Bug 的痛点。
该工具创新性地引入了“代码图”概念,通过构建仓库级的代码结构图谱,让模型不仅能读懂单段代码,更能理解整个项目的上下文关联。其独特的 R4 链式架构包含四个关键步骤:重写器(Rewriter)提炼问题关键词,检索器(Retriever)基于图谱锚点锁定相关子图,重排序器(Reranker)筛选最可能修改的文件,最后由阅读器(Reader)生成精准的代码补丁。这种机制使其在 SWE-Bench-Lite 基准测试中取得了卓越的修复率。
CodeFuse-CGM 特别适合需要处理复杂遗留系统、进行大规模代码重构的研发团队,以及致力于探索代码智能与图神经网络结合的研究人员。它不仅支持全参数微调,还兼容 LoRA 等高效训练方式,降低了大模型的应用门槛。无论是希望提升自动化运维效率的企业开发者,还是关注前沿 AI 编程技术的学术研究者,都能从中获得强大的辅助能力,让代码修复变得更加智能且可控。
使用场景
某金融科技公司后端团队在维护一个拥有百万行代码的遗留支付系统时,急需修复一个涉及多模块调用的复杂并发漏洞。
没有 CodeFuse-CGM 时
- 上下文缺失:开发者仅凭文件名搜索,难以定位分散在不同微服务中的关联调用链,导致漏改关键逻辑。
- 人工梳理耗时:需要手动阅读大量无关代码来理解仓库级结构,排查一个 Bug 平均耗时超过 4 小时。
- 修复准确率低:由于缺乏对整体代码图谱的理解,生成的补丁常引发回归错误,需反复回滚和重试。
- 知识断层:新入职员工面对复杂的依赖关系无从下手,严重依赖资深架构师的口头指导。
使用 CodeFuse-CGM 后
- 图谱精准定位:CodeFuse-CGM 自动构建仓库级代码图,通过 Retriever 节点瞬间锁定跨文件的深层依赖路径。
- 智能上下文筛选:利用 Reranker 节点从庞大的子图中提炼出最可能修改的核心文件,将有效信息密度提升 80%。
- 高质量补丁生成:Reader 节点结合图结构与问题描述,直接输出经过逻辑验证的代码修复方案,一次性通过率显著提高。
- 自动化流程闭环:从问题重写到最终补丁生成的 R4 链条全自动运行,将单次修复周期缩短至 30 分钟以内。
CodeFuse-CGM 通过将仓库结构转化为可理解的图谱,让大模型真正具备了“全局视野”,彻底解决了复杂系统中局部视角导致的修复难题。
运行环境要求
- 未说明
- Retriever 阶段支持 CPU (faiss-cpu)
- Reranker 阶段需要 GPU 以运行 vllm (vllm>=0.8.5),具体显存需求取决于模型大小 (如 CGM-72B 需高显存),CUDA 版本未明确说明 (依赖 torch==2.1.0 或更高)
未说明 (建议 32GB+ 以处理代码图嵌入及 72B 模型推理)

快速开始
CGM:代码图大语言模型

目录
新闻
🔥🔥🔥 [2025/09/19] 我们的论文代码图模型(CGM):一种用于仓库级软件工程任务的图集成大型语言模型已被NeurIPS 2025接收!

🔥🔥🔥 [2025/01/15] 我们很高兴地宣布CGM-72B-V1.2版本更新。该模型在SWE-Bench-Lite排行榜上进一步取得了令人瞩目的44.00%解决率。
🔥🔥🔥 [2024/12/28] 我们很高兴地宣布CGM-72B-V1.1版本更新。该模型在SWE-Bench-Lite排行榜上进一步取得了令人瞩目的41.67%解决率。
🔥🔥🔥 [2024/10/28] 我们很高兴地宣布,CGM-72B在SWE-Bench-Lite排行榜上取得了35.67%的解决率。
🔥🔥🔥 [2024/10/28] 我们发布了CGM,主要用于仓库级别的编码任务。
- 📜 论文:代码图模型(CGM):一种用于仓库级软件工程任务的图集成大型语言模型
- 🤖 模型:codefuse-ai/CodeFuse-CGM-72B
- 📊 数据:codefuse-ai/CodeGraph
简介
我们提出了一种基于图的框架CGM,用于解决现实世界的软件工程任务。在CGM开始工作之前,我们通过代码图生成器构建一个仓库级别的代码图,以更好地表示仓库的上下文及其结构。受检索增强生成(RAG)方法的启发,CGM框架被设计为一个由四个原子节点组成的链式结构,针对这一场景称为R4(重写器、检索器、重新排序器和阅读器)链。给定一个问题,CGM框架的初始输入包括问题描述和相应的代码图。重写器首先会通过提取关键词并生成与代码图相关的查询来重写原始问题。然后,检索器会根据重写器输出中的匹配锚点节点,检索出一个启发式的代码子图。由于所得子图提供了相对广泛的参考上下文,我们需要一个重新排序器来识别最有可能被修改的文件,作为进一步的提示。随后,检索到的子图和识别出的文件都会被输入到一个可训练的基于图的阅读器中,以生成相应的代码补丁。
框架

亮点
:white_check_mark: 代码图:在多个任务上训练模型,同时保持各任务之间的平衡。这些模型甚至可以泛化到以前未见过的新任务。
:white_check_mark: 多框架支持:它同时支持Accelerate(结合Deepspeed和FSDP)。
:white_check_mark: 高效微调:它支持LoRA、QLoRA以及全参数训练,使得使用最少资源即可对大型模型进行微调。训练速度几乎满足所有微调场景的需求。
安装
先决条件
- Python 3.8+
- pip
必需包
transformers==4.46.1
tokenizers==0.20.0
accelerate==1.0.1
peft==0.13.2
jinja2==2.11.3
fuzzywuzzy==0.18.0
python-Levenshtein==0.25.1
networkx==3.0
示例
下图展示了R3的整个处理流程。

检索器预处理:生成节点嵌入
在检索器之前,我们需要将
- 代码图中的所有节点嵌入为向量
- 重写器生成的查询嵌入为向量
通过CGE-large完成。
python generate_code_content.py # 此步骤将预处理每个代码图,并从每个节点中提取内容(为每个仓库保存一个.json文件)
python generate_code_embedding.py # 此步骤将使用CGE-large为每个节点生成嵌入(为每个仓库保存一个.pkl文件)
python generate_rewriter_embedding.py # 此步骤将为重写器生成的所有查询生成嵌入(保存一个.pkl文件)
CGE-large的要求
torch==2.1.0
transformers==4.39.2
tokenizers==0.15.2
accelerate==0.28.0
重写器
给定问题元数据,执行以下脚本以生成重写器的结果(包括推理器和提取器)。
python generate_rewriter_prompt.py # 此步骤将生成一个名为 "test_rewriter_prompt.json" 的 JSON 文件,其中包含重写器使用的提示语
python inference_rewriter.py --prompt_path test_rewriter_prompt.json # 此步骤将加载通义千问模型进行推理,并生成重写器的输出文件 "test_rewriter_output.json"
python rewriter_output_post_processing.py # 此步骤将加载重写器的输出文件 "rewriter_output.json",并生成经过后处理的输出文件 "test_rewriter_output.json"
在 rewriter/prompt.py 中使用函数 generate_prompt_for_extractor 和 generate_prompt_for_inferer:
def generate_prompt_for_extractor(problem_statement, repo_name):
prompt = """
<issue>
{}
</issue>
这是一个与仓库 '{}' 相关的问题。
指令:
1. 分析:
○ 分析提供的问题描述。识别涉及的相关文件、类或函数。
○ 确定遇到的具体问题或错误,并注意任何可能有助于定位相关或存在问题区域的线索。
2. 提取:
○ 分析完成后,提取所有提到的代码实体(文件、类或函数),尤其是文件。
○ 然后提取三个潜在且有意义的关键词,按以下格式回答:
[start_of_analysis]
<detailed_analysis>
[end_of_analysis]
[start_of_related_code_entities]
<entity_name_with_path>
[end_of_related_code_entities]
[start_of_related_keywords]
<keywords>
[end_of_related_keywords]
注意事项:
- 请注意错误日志中的信息(如果存在)。
- 存在缺陷的代码仅存在于问题中描述的项目中(例如 django、sklearn)。缺陷位置通常不在测试文件或外部包中。
- 您提取的实体应简洁、准确且具有信息量。
- 如果指定了相对路径,请提供代码实体的相对路径(例如 package/foo.py)。相对路径是相对于仓库本身的,不要包含诸如 '/home/username/'、'/etc/service/' 或 '/tree/master' 等后缀。
- 在您的提取结果中,请勿包含行号或解释等附加信息。
推荐的代码实体提取示例:
- repo/cart.py
- Class User()
- def getData()
推荐的关键词提取示例:
- train_loop
- hooks
- docker
不推荐的关键词提取示例:
- something wrong
- input validation
- TypeError
""".format(problem_statement, repo_name)
return prompt
def generate_prompt_for_inferer(problem_statement, repo_name):
prompt = """
<issue>
{}
</issue>
这是一个与仓库 '{}' 相关的问题。
任务:
根据提供的问题描述,识别可能需要修改的代码实体(文件、函数、类)的特征。
对于每个特征,生成一个搜索查询,以帮助在代码库中找到相关的代码实体。
指令:
首先,分析问题描述,识别可能与代码实体修改相关的关键词、功能和特性。
然后,创建能够捕捉这些特征的查询,重点关注:
● 可能实现相关功能的文件名。
● 与问题中描述的功能相关的函数或方法。
● 可能与所述功能相关的任何模式或结构。
例如:
● 与神经网络初始化相关的文件。
● 与训练过程相关的函数。
● 用于配置服务的代码。
请按照以下格式回答:
[start_of_analysis]
<detailed_analysis>
[end_of_analysis]
[start_of_related_queries]
query 1:
query 2:
...
[end_of_related_queries]
注意事项:
- 您的查询应详细、准确且具有信息量。
- 查询应为完整的句子,不得包含额外的解释。
- 查询数量最多为五个,因此请专注于重要的特征。
- 您的查询应聚焦于仓库本身的代码,而非提交历史等其他信息。
- 请注意错误日志中的信息(如果存在)。
推荐的查询示例:
- 在训练循环文件中查找对 'tqdm' 或 'progress_bar' 的引用,以确定当前进度条更新的位置。
- 查找调用 'socket' 模块中 'gethostbyname' 函数的代码片段。
- 文件名包含 'mysql.py' 并且包含与 'MySQLStatementSamples' 初始化相关的函数。
- 在 'datadog_checks' 目录中处理主机名解析或编码的函数或方法。
- 在同时提及 'Trainer' 的文件中查找所有出现 'early_stopping' 的地方,以确定早期停止逻辑的实施位置,并可能需要针对非默认的 'val_check_interval' 进行调整。
""".format(problem_statement, repo_name)
return prompt
您可以通过以下方式使用重写器的提示语:
from rewriter.prompt import generate_prompt_for_extractor, generate_prompt_for_inferer
# 生成提取提示语
extraction_prompt = generate_prompt_for_extractor(problem_statement, repo_name)
# 生成推理提示语
inference_prompt = generate_prompt_for_inferer(problem_statement, repo_name)
检索器
现在我们有:
- 原始代码图:
codegraph/ - 代码图的节点嵌入:
node_embedding/ - 重写器推理器的查询嵌入:
rewriter_embedding.pkl - 重写器提取器的输出:
rewriter_output.json
然后我们可以执行检索器:
python locate_anchor_node.py # 此步骤将使用上述输入,为所有样本生成锚点节点文件 "anchor_node.json"
python subgraph.py # 此步骤将进一步扩展锚点节点,形成一个连通子图(保存为一组节点 ID)
python serialize_subgraph.py # 基于上述子图的节点 ID,此步骤会将子图序列化为 JSON 格式(即检索器的最终输出)
检索器所需依赖:
RapidFuzz==1.5.0
faiss-cpu
重排序器
重排序器用于从检索器生成的子图中确定最相关的文件。输入是检索器的输出——子图 JSON 文件。
python reranker.py --stage_1_k 10 --stage_2_k 5 # 此步骤将加载子图 JSON 文件并生成重排序器的输出。
重排序器的要求:
vllm>=0.8.5
使用 reranker/prompt.py 中的函数 generate_prompt_for_reranker_stage_1 和 generate_prompt_for_reranker_stage_2:
"""
重排序器提示模板
"""
reranker_stage_1_system_prompt = """
你是一位经验丰富的软件开发人员,擅长从大量参考文件中提取解决特定问题最相关的文件。
任务:
根据从代码库中获取的问题相关信息,从可能有助于解决问题的文件中找出最有可能的几份文件。
指令:
1. 分析:
- 分析提供的问题描述和文件,重点关注这些文件与问题的相关性,尤其是那些在修复问题时可能被修改的文件。
- 确定问题中提到的具体问题或错误,并注意任何有助于判断的线索。
2. 提取:
- 根据你的分析,选择最相关的 **1** 份文件,这些文件可能用于修复该问题。
- 你应从提供的文件中选择,且不得以任何方式修改文件名。
请按照以下格式作答:
[start_of_analysis]
<detailed_analysis>
[end_of_analysis]
[start_of_relevant_files]
1. <file_with_its_path>
2. <file_with_its_path>
3. ...
[end_of_relevant_files]
注:
- 你可以参考错误日志中的信息(如果存在)。
- 相关文件通常存在于问题描述的项目中(例如,django、sklearn)。需要修改的文件通常不在测试文件或外部包中。
- 你选择的文件必须包含在提供的文件列表中。
- 提供文件的完整路径,不要添加冗余后缀,如 '/home/username/'、'/etc/service/' 或 '/tree/master'。
- 在你的提取结果中不要包含行号或解释等额外信息。
- 初始化和配置文件在代码更改过程中可能会被修改。
相关文件提取示例:
1. src/utils/file_handler.py
2. core/services/service_manager.py
3. ...
""".strip()
reranker_stage_1_user_prompt_template = """
<repository>
{}
</repository>
<issue>
{}
</issue>
<reference_python_file_list>
{}
</reference_python_file_list>
<other_reference_file_list>
{}
</other_reference_file_list>
"""
reranker_stage_2_system_prompt = """
你是一位经验丰富的软件开发人员,擅长评估文件在软件仓库中解决特定问题时的相关性。
任务:
针对给定的文件,评估修改该文件是否能够解决所提出的问题,并根据特定标准给出评分。
指令:
1. 分析:
- 分析提供的问题描述和单个相关文件的内容,注意其中提及的与文件相关的关键词、错误消息或具体功能。
- 确定文件内容和功能与问题中描述的问题或错误之间的关联程度。
- 考虑文件在整个项目结构中的角色(例如,配置文件、核心逻辑文件与测试文件或工具脚本的区别)。
2. 评分:
- 根据你的分析,给出 1 到 5 分的评分,表示修改该文件对解决问题的相关程度。
评分说明:
1. **1 分**:该文件几乎肯定与问题无关,与问题中描述的功能或错误没有任何明显联系。
2. **2 分**:该文件可能与问题有间接关系,但修改它不太可能直接解决问题;仅在极少数情况下才有可能。
3. **3 分**:该文件与问题有一定相关性;它可能间接影响受影响的功能,对其进行调整可能是更广泛修复的一部分。
4. **4 分**:该文件很可能与问题相关;其中包含与相关功能直接交互的代码,很可能存在导致问题的缺陷。
5. **5 分**:该文件很可能是问题的根本原因或深度参与了问题,修改它应该可以直接解决所提到的错误或问题。
请按照以下格式作答:
[start_of_analysis]
<detailed_analysis>
[end_of_analysis]
[start_of_score]
Score <number>
[end_of_score]
注:
- 文件内容仅展示该文件的结构,包括其中定义的类和函数名称。
- 你可以参考错误日志中的信息(如果存在)。
""".strip()
reranker_stage_2_user_prompt_template = """
<repository>
{}
</repository>
<issue>
{}
</issue>
<file_name>
{}
</file_name>
<file_content>
{}
</file_content>
"""
def generate_prompt_for_reranker_stage_1(problem_statement, repo_name, py_file, other_file):
"""
problem_statement: 问题
repo_name: 代码库
py_file: Python 文件列表
other_file: 其他相关文件列表
"""
return reranker_stage_1_system_prompt, reranker_stage_1_user_prompt_template.format(repo_name, problem_statement, py_file, other_file)
def generate_prompt_for_reranker_stage_2(problem_statement, repo_name, file_name, file_content):
"""
problem_statement: 问题
repo_name: 代码库
file_name: 文件名
file_content: 文件内容(class xxx 和 def xxx)
"""
return reranker_stage_2_system_prompt, reranker_stage_2_user_prompt_template.format(repo_name, problem_statement, file_name, file_content)
你可以通过以下方式使用重排序器提示:
from reranker.prompt import generate_prompt_for_reranker_stage_1, generate_prompt_for_reranker_stage_2
# 第一阶段:识别相关文件
system_prompt, user_prompt = generate_prompt_for_reranker_stage_1(
problem_statement,
repo_name,
py_file_list,
other_file_list
)
# 第二阶段:评估文件相关性
system_prompt, user_prompt = generate_prompt_for_reranker_stage_2(
problem_statement,
repo_name,
target_file,
file_content
)
阅读器
使用 DeepSpeed 配置运行阅读器模块:
# Zero-2 配置
EXPORT N_NODE={YOUR_MACHINE_NUM} && \
EXPORT N_GPU_PER_NODE={YOUR_GPU_NUM} && \
EXPORT TRAIN_CONFIG={TRAIN_CONFIG}.json && \
bash launch/zero2.sh
# Zero-3 配置
EXPORT N_NODE={YOUR_MACHINE_NUM} && \
EXPORT N_GPU_PER_NODE={YOUR_GPU_NUM} && \
EXPORT TRAIN_CONFIG={TRAIN_CONFIG}.json && \
bash launch/zero3.sh
贡献
我们欢迎各种形式的贡献!如果您有任何建议、想法、错误报告,或是希望新增支持的模型或功能,请随时提交一个问题或拉取请求。
我们非常欢迎社区的参与!请按照以下步骤进行贡献:
- 克隆仓库并创建分支
- 在您的分支上开发新功能或修复问题
- 提交更改
- 将更改推送到您的分支
- 打开一个拉取请求
对于重大变更,请先提交一个问题,与我们讨论您的计划。
引用
如果您觉得我们的工作对您的研发工作有所帮助或有价值,请随时引用我们的论文,引用格式如下:
@misc{tao2025codegraphmodelcgm,
title={代码图模型 (CGM):一种用于仓库级软件工程任务的图融合大型语言模型},
author={Hongyuan Tao, Ying Zhang, Zhenhao Tang, Hongen Peng, Xukun Zhu, Bingchang Liu, Yingguang Yang, Ziyin Zhang, Zhaogui Xu, Haipeng Zhang, Linchao Zhu, Rui Wang, Hang Yu, Jianguo Li, Peng Di},
year={2025},
eprint={2505.16901},
archivePrefix={arXiv},
primaryClass={cs.SE},
url={https://arxiv.org/abs/2505.16901},
}
加入我们
我们是蚂蚁集团平台技术事业群下的 AI Native 团队,专注于推动蚂蚁集团平台工程的智能化发展。团队成立三年多来,在支撑蚂蚁集团云计算基础设施的智能化运维方面发挥了关键作用。我们的使命是通过世界级的技术创新与影响力,构建具有广泛用户基础的算法服务与平台,助力内外部产品与业务的落地实施。
秉持创新驱动的理念,我们不仅支持业务落地,更致力于提升技术影响力。过去三年中,我们在 ICLR、NeurIPS、KDD 和 ACL 等顶级会议上发表了20余篇论文。我们的创新性业务成果荣获了蚂蚁集团两项最高级别的 T-Star 奖以及一项 SuperMA 奖。我们的开源项目 CodeFuse 截至2024年2月已获得4000颗星,相关模型在 Huggingface 和 Modelscope 上的下载量超过150万次。
我们正在寻找顶尖人才加入这个充满活力的团队!如果您渴望在一个充满活力、创新精神和卓越文化的工作环境中发展自己的职业生涯,欢迎您了解我们的校招和社招职位信息。加入我们,共同创造行业的新里程碑!
联系方式: hyu.hugo@antgroup.com
常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器