DeepWiki - 为代码仓库提供AI驱动的文档

geepair

技术分享|2025-8-4|最后更新: 2025-8-7|
type
Post
status
Published
date
Aug 4, 2025
slug
summary
tags
开发
工具
category
技术分享
icon
password

1、写在开头

1.1 背景

DeepWiki 是由 Cognition AI(原 Devin 团队)开发的 AI 驱动工具,专注于为 GitHub 代码仓库生成交互式文档和可视化分析,帮助开发者快速理解复杂项目。
Devin AI 是由 Cognition Labs 开发的自主人工智能助手工具,标榜为 “AI 软件开发者”。曾号称全球首个全自动 AI 程序员,因执行成本高导致订阅价格也极高($500/月),后来就淡出人们视野了。目前更主流的开发形式是 IDE + MCP(如 Cursor、VSCode、Windsurf 等),半自动化的工具链调用让控制更精准,结果也变得更加可靠。
 
阅读开源项目的一些痛点
GitHub 主流开源项目介绍以英文 README.md 为主,支持多语言介绍的并不多,对于非母语的人来说,存在一定阅读障碍
很多仓库可能连比较像样的 README 介绍都没,更别提专门的文档网站或 Blog 了。于开发者而言是灾难性的,需要自行查看源代码或在 issues 中搜寻一些描述
如果仓库文件超多,上百个文件,或大几十万行代码,想要通过阅读源码来建立项目宏观认知会变得特别难
在项目文档中不会有功能与源码之间的映射关系说明,但这又是借鉴参考项目时的一个重点需求
 

1.2 deepwiki是什么?

核心功能
自动化文档生成:通过分析代码结构、README 和配置文件,自动生成项目概述、技术栈、核心模块及依赖关系文档,减少逐行阅读代码的需求
交互式图表:提供架构图、类图、函数调用关系图等可视化工具,直观展示代码结构
对话式AI助手:支持开发者直接向代码库提问,获取源码解析、使用方法和架构设计等详细解答
实时更新与私有支持:可自动同步仓库更新,并为私有项目生成知识库(需注册 Devin.ai 账号)
 
使用方法
公共仓库:将GitHub链接中的github.com替换为deepwiki.com(例如https://deepwiki.com/用户名/仓库名)即可访问专属Wiki页面
私有仓库:需在 Devin.ai 注册账号并授权访问权限
 
适用场景
开源项目学习:快速掌握陌生仓库的架构和核心逻辑
团队协作:生成标准化文档,降低新成员学习成本
代码审计:通过依赖关系图定位潜在风险模块
 
特点与优势
完全免费:对开源项目无任何使用限制
低门槛:无需编程即可通过自然语言交互获取信息
大规模处理能力:支持超大型仓库分析,如 Linux 内核等复杂项目
notion image
 

1.3 官网使用案例

VSCode示例 /microsoft/vscode
功能点:
  1. 生成综合的结构化的README文档内容,从系统设计来看,模型在局部理解代码(如函数、模块)方面表现非常出色,但真正的挑战在于理解整个代码库的全局结构。DeepWiki 针对这一难题,采用了分层方法:先将代码库划分为一套套高层次系统(high-level systems),再为每一个系统生成对应的 Wiki 页面,帮助用户在整体上把握项目架构
  1. 生成多维度系统架构图、ER图、时序图、流程图等
  1. 提供对话功能(交互式问答),直接对生成的Wiki发起提问,DeepWiki 会根据代码库内容智能回答
  1. 历史提交索引,通过分析哪些文件经常被一起修改,可以构建出文件之间的关联图(graph),从而揭示项目内部许多潜在且重要的结构模式。这一方法进一步增强了 DeepWiki 对代码库内部逻辑关系的理解与呈现,文档会根据代码库更新自动同步
  1. 显示相关资源文件关联,行号关联等
 
项目文档结构
notion image
 
问答示例
notion image
 

1.4 官方私有使用

Devin AI
notion image
 
导入自己的Git仓库
  • 公有代码仓库
  • 私有代码仓库
notion image
 
简单示例
workflow
geepairUpdated Aug 26, 2022
notion image

2、DeepWiki-Open

2.1 简介

deepwiki-open
AsyncFuncAIUpdated Sep 8, 2025
DeepWiki可以为任何GitHub、GitLab或BitBucket代码仓库自动创建美观、交互式的Wiki!只需输入仓库名称,DeepWiki将:
  1. 分析代码结构
  1. 生成全面的文档
  1. 创建可视化图表解释一切如何运作
  1. 将所有内容整理成易于导航的Wiki

2.2 功能特点

  • 即时文档:几秒钟内将任何GitHub、GitLab或BitBucket仓库转换为Wiki
  • 私有仓库支持:使用个人访问令牌安全访问私有仓库
  • 智能分析:AI驱动的代码结构和关系理解
  • 精美图表:自动生成Mermaid图表可视化架构和数据流
  • 简易导航:简单、直观的界面探索Wiki
  • 提问功能:使用RAG驱动的AI与您的仓库聊天,获取准确答案
  • 深度研究:多轮研究过程,彻底调查复杂主题
  • 多模型提供商:支持Google Gemini、OpenAI、OpenRouter和本地Ollama模型

2.3 部署使用

docker部署
# 克隆仓库 git clone https://github.com/AsyncFuncAI/deepwiki-open.git cd deepwiki-open # 创建包含API密钥的.env文件 echo "GOOGLE_API_KEY=your_google_api_key" > .env echo "OPENAI_API_KEY=your_openai_api_key" >> .env # 可选:如果您想使用OpenRouter模型,添加OpenRouter API密钥 echo "OPENROUTER_API_KEY=your_openrouter_api_key" >> .env # 使用Docker Compose运行 docker-compose up
(上述 Docker 命令以及 docker-compose.yml 配置会挂载您主机上的 ~/.adalflow 目录到容器内的 /root/.adalflow。此路径用于存储:
  • 克隆的仓库 (~/.adalflow/repos/)
  • 仓库的嵌入和索引 (~/.adalflow/databases/)
  • 缓存的已生成 Wiki 内容 (~/.adalflow/wikicache/)
 
手动设置(推荐)
  1. 设置API密钥
GOOGLE_API_KEY=your_google_api_key OPENAI_API_KEY=your_openai_api_key # 可选:如果您想使用OpenRouter模型,添加此项 OPENROUTER_API_KEY=your_openrouter_api_key
  1. 启动后端
# 安装Python依赖 pip install -r api/requirements.txt # 启动API服务器 python -m api.main
# 安装Python依赖 uv venv --python 3.12 source .venv/bin/activate uv pip install -r api/requirements.txt # 启动API服务器 uv run -m api.main
  1. 启动前端
# 安装JavaScript依赖 npm install # 或 yarn install # 启动Web应用 npm run dev # 或 yarn dev
  1. 使用deepwiki
后端地址:http://127.0.0.1:8001/
{ "message": "Welcome to Streaming API", "version": "1.0.0", "endpoints": { "Docs": [ "GET /docs/oauth2-redirect" ], "Lang": [ "GET /lang/config" ], "Auth": [ "GET /auth/status", "POST /auth/validate" ], "Models": [ "GET /models/config" ], "Export": [ "POST /export/wiki" ], "Local_repo": [ "GET /local_repo/structure" ], "Chat": [ "POST /chat/completions/stream" ], "Api": [ "DELETE /api/wiki_cache", "GET /api/processed_projects", "GET /api/wiki_cache", "POST /api/wiki_cache" ], "Health": [ "GET /health" ], "Root": [ "GET /" ] } }
前端地址:http://127.0.0.1:3000/
notion image

2.4 工作原理

DeepWiki使用AI来:
  1. 克隆并分析GitHub、GitLab或Bitbucket仓库(包括使用令牌认证的私有仓库)
  1. 创建代码嵌入用于智能检索
  1. 使用上下文感知AI生成文档(使用Google Gemini、OpenAI、OpenRouter或本地Ollama模型)
  1. 创建可视化图表解释代码关系
  1. 将所有内容组织成结构化Wiki
  1. 通过提问功能实现与仓库的智能问答
  1. 通过深度研究功能提供深入研究能力
 
流程图
notion image
 
项目结构
deepwiki/ ├── api/ # 后端API服务器 │ ├── main.py # API入口点 │ ├── api.py # FastAPI实现 │ ├── rag.py # 检索增强生成 │ ├── data_pipeline.py # 数据处理工具 │ └── requirements.txt # Python依赖 │ ├── src/ # 前端Next.js应用 │ ├── app/ # Next.js应用目录 │ │ └── page.tsx # 主应用页面 │ └── components/ # React组件 │ └── Mermaid.tsx # Mermaid图表渲染器 │ ├── public/ # 静态资源 ├── package.json # JavaScript依赖 └── .env # 环境变量(需要创建)

2.5 相关配置解释

配置文本嵌入模型
{ "embedder": { "client_class": "OpenAIClient", "initialize_kwargs": { "api_key": "${OPENAI_API_KEY}", "base_url": "${OPENAI_BASE_URL}" }, "batch_size": 10, "model_kwargs": { "model": "text-embedding-v4", "dimensions": 1024, "encoding_format": "float" } }, "retriever": { "top_k": 20 }, "text_splitter": { "split_by": "word", "chunk_size": 350, "chunk_overlap": 100 } }
 
配置对话模型
{ "default_provider": "openai", "providers": { "dashscope": { "default_model": "qwen-plus", "supportsCustomModel": true, "models": { "qwen-plus": { "temperature": 0.7, "top_p": 0.8 }, "qwen-turbo": { "temperature": 0.7, "top_p": 0.8 }, "deepseek-r1": { "temperature": 0.7, "top_p": 0.8 } } }, "google": { "default_model": "gemini-2.0-flash", "supportsCustomModel": true, "models": { "gemini-2.0-flash": { "temperature": 0.7, "top_p": 0.8, "top_k": 20 }, "gemini-2.5-flash-preview-05-20": { "temperature": 0.7, "top_p": 0.8, "top_k": 20 }, "gemini-2.5-pro-preview-03-25": { "temperature": 0.7, "top_p": 0.8, "top_k": 20 } } }, "openai": { "default_model": "gpt-4o", "supportsCustomModel": true, "models": { "gpt-4o": { "temperature": 0.7, "top_p": 0.8 }, "gpt-4.1": { "temperature": 0.7, "top_p": 0.8 }, "o1": { "temperature": 0.7, "top_p": 0.8 }, "o3": { "temperature": 1.0 }, "o4-mini": { "temperature": 0.7, "top_p": 0.8 }, "qwen-plus-2025-07-28": { "temperature": 0.7, "top_p": 0.8 } } } } }
前端相关配置
  • dev跨域访问

2.6 演示示例

配置好后启动前后端服务
notion image
 
导入后的项目列表
notion image
 
添加项目生成项目wiki
支持Git仓库/本地路径
notion image
notion image
 
对话和深度研究
notion image
 
prompt
首轮迭代
<角色> 您是一位专业的代码分析师,正在检查{repo_type}存储库:{repo_url}({repo_name})。 你正在进行一个多轮深度研究过程,以彻底调查用户查询中的特定主题。 你的目标是专门提供关于这个话题的详细、重点信息。 重要提示:您必须使用{language_name}语言进行回复。 </角色> <指南> - 这是一个多轮研究过程的首次迭代,该过程完全聚焦于用户的查询 - 在你的回复中以“##研究计划”开头 - 概述你研究这一特定主题的方法 - 如果主题是关于某个特定文件或特性(如“Dockerfile”),请仅关注该文件或特性 - 明确阐述你正在研究的特定主题,以便在所有迭代过程中保持专注 - 确定你需要研究的关键方面 - 根据现有信息提供初步调查结果 - 以“## 下一步”结尾,指明下一次迭代中要调查的内容 - 暂时不要给出最终结论 - 这只是研究的开始 - 除非与查询直接相关,否则不要包含通用存储库信息 - 仅专注于正在研究的特定主题 - 不要偏离到相关主题上 - 你的研究必须直接针对原始问题 - 切勿仅以“继续研究”作为回应,而应始终提供实质性的研究成果 - 请记住,这一主题将在所有研究迭代中保持不变 </指南> <风格> - 简洁而全面 - 使用Markdown格式来提高可读性 - 在相关时引用特定的文件和代码段 </style>“”“
最后一轮迭代
“”“<角色> 您是检查{repo_type}存储库的专家代码分析师:{repo_url}({repo_name})。 您正处于深度研究过程的最后一次迭代中,该过程仅专注于最新的用户查询。 你的目标是综合所有先前的发现,并提供一个全面的结论,直接针对这一特定主题,而且只针对这一主题。 重要提示:您必须以{language_name}语言回复。 </角色> <指南> -这是研究过程的最后一次迭代 -仔细回顾整个对话历史,以了解之前的所有发现 -将之前迭代的所有发现综合成一个全面的结论 -从“##最终结论”开始 -你的结论必须直接回答最初的问题 -严格专注于特定主题,不要转移到相关主题 -包括与主题相关的特定代码引用和实现细节 -突出显示关于此特定功能的最重要发现和见解 -为原始问题提供完整和明确的答案 -除非与查询直接相关,否则不要包含一般存储库信息 -专注于正在研究的特定主题 -永远不要以“继续研究”作为答案——始终提供完整的结论 -如果主题是关于特定文件或功能(如“Dockerfile”),请只关注该文件或功能 -确保你的结论基于并参考了之前迭代的关键发现 </指南> <风格> -简明扼要,但要彻底 -使用markdown格式提高可读性 -引用相关的特定文件和代码段 -用清晰的标题组织你的回复 -在适当的时候以可操作的见解或建议结束 </style>“”“
其他
f“”“<角色> 您是检查{repo_type}存储库的专家代码分析师:{repo_url}({repo_name})。 您目前正在进行深度研究过程的迭代{research_iteration},该过程仅关注最新的用户查询。 你的目标是在之前的研究迭代的基础上,在不偏离的情况下,更深入地研究这个特定的主题。 重要提示:您必须以{language_name}语言回复。 </角色> <指南> -仔细回顾对话历史,了解到目前为止的研究内容 -你的回应必须基于之前的研究迭代——不要重复已经涵盖的信息 -确定与此特定主题相关的差距或需要进一步探索的领域 -在本次迭代中,重点关注一个需要更深入调查的具体方面 -以“##研究更新{Research_iteration}”开始您的回复 -清楚地解释你在这次迭代中正在调查什么 -提供以前迭代中未涉及的新见解 -如果这是迭代3,请为下一次迭代的最终结论做好准备 -除非与查询直接相关,否则不要包含一般存储库信息 -只关注正在研究的特定主题,不要转移到相关主题 -如果主题是关于特定文件或功能(如“Dockerfile”),请只关注该文件或功能 -切勿仅以“继续研究”作为回应——始终提供实质性的研究成果 -你的研究必须直接解决最初的问题 -与之前的研究迭代保持连续性——这是一项持续的调查 </指南> <风格> -简明扼要,但要彻底 -专注于提供新信息,而不是重复已经涵盖的内容 -使用markdown格式提高可读性 -引用相关的特定文件和代码段 </style>“”“ f“”“<角色> 您是检查{repo_type}存储库的专家代码分析师:{repo_url}({repo_name})。 您可以提供有关代码存储库的直接、简洁和准确的信息。 你永远不会以markdown标题或代码围栏开始响应。 重要提示:您必须以{language_name}语言回复。 </角色> <指南> -直接回答用户的问题,无需任何前导或填充短语 -不要包括任何理由、解释或额外的评论。 -不要以“好的,这是一个细分”或“这是一种解释”这样的序言开头 -不要以“##分析…”或任何文件路径引用等markdown标头开头 -不要以“标记代码围栏”开头 -不要以“关闭围栏”来结束你的回应 -不要从重复或承认问题开始 -从问题的直接答案开始 <example_of_what_not_to_do> ```降价 ##adalflow/adalflow/datasets/gsm8k.py分析` 此文件包含。.. ``` </example.ofwhat_not_to_do> -用适当的标记来格式化你的回复,包括标题、列表和答案中的代码块 -对于代码分析,用清晰的部分组织您的响应 -一步一步地思考,逻辑地组织你的答案 -从直接解决用户查询的最相关信息开始 -讨论代码时要精确和技术化 -您的响应语言应与用户的查询语言相同 </指南> <风格> -使用简洁、直接的语言 -将准确性置于冗长之上 -显示代码时,在相关时包括行号和文件路径 -使用markdown格式提高可读性 </style>“”“

3、相关引用

 
 开启调试