下面是一份关于如何自定义你的 AI 项目文档系统的完整实战指南,结合开源大语言模型、LangChain 框架与 VSCode 插件技术,打造一个类 DeepWiki 的“智能项目文档专家”。
项目目标
构建一个本地化的 AI 文档助手,具备以下能力:
-
自动解析项目代码结构
-
使用开源大模型自动生成函数/类/模块级文档
-
结合 LangChain 构建文档生成链
-
集成 VSCode 插件,实现在编辑器中“选中代码 ➝ 自动生成注释或文档”
-
支持私有部署,无需联网依赖 OpenAI
技术栈选型
模块 | 工具/框架 |
---|---|
大模型 | DeepSeek-Coder / Qwen / Mistral |
模型运行 | Ollama / FastChat / LMDeploy |
代码解析 | Python AST / tree-sitter |
文档生成链 | LangChain + 自定义 PromptTemplate |
向量检索(可选) | FAISS / Chroma / Milvus |
前端 | VSCode 插件 (Webview API) |
系统模块设计图
┌────────────────────────────┐
│ VSCode 插件 │
│ (选中代码 → 生成注释/文档) │
└────────────┬───────────────┘
│
(HTTP/IPC调用)
│
┌──────────▼──────────────────┐
│ 本地服务 (Flask/FastAPI) │
│ - 接收请求 │
│ - 调用 LangChain链 │
└──────────┬──────────────────┘
│
┌──────────▼──────────────────┐
│ LangChain + 本地大模型 │
│ - 加载模型 │
│ - 构造 PromptTemplate │
│ - 执行文档生成链 │
└──────────┬──────────────────┘
│
┌──────────▼──────────────┐
│ 代码解析模块 │
│ - 抽取函数/类/注释等信息 │
└─────────────────────────┘
搭建步骤
第一步:启动开源大模型(以 DeepSeek-Coder 为例)
ollama run deepseek-coder:instruct
你也可以使用 FastChat + Qwen 等部署方式,只需保证能通过 localhost:port
发起模型调用即可。
第二步:LangChain 构建文档生成链
# doc_chain.py
from langchain.prompts import PromptTemplate
from langchain.llms import Ollama
from langchain.chains import LLMChain
llm = Ollama(model="deepseek-coder")
prompt_template = PromptTemplate.from_template("""
你是一位资深开发专家,请阅读以下代码片段,并使用中文写出简洁明了的函数说明文档:
代码如下:
```python
{code}
说明文档(包括功能、参数含义、返回值):
""")
doc_chain = LLMChain(llm=llm, prompt=prompt_template)
def generate_doc(code_snippet: str) -> str:
return doc_chain.run({"code": code_snippet})
第三步:VSCode 插件开发(简化版本)
使用 VSCode Webview API 编写插件,核心逻辑如下:
// extension.ts (主入口)
vscode.commands.registerCommand('docgen.generateDoc', async () => {
const editor = vscode.window.activeTextEditor;
if (!editor) return;
const code = editor.document.getText(editor.selection);
const response = await fetch('http://localhost:5000/gen', {
method: 'POST',
body: JSON.stringify({ code }),
headers: { 'Content-Type': 'application/json' }
});
const result = await response.text();
vscode.window.showInformationMessage('生成的文档:' + result);
});
第四步:本地服务 Flask/FastAPI
# api.py
from flask import Flask, request
from doc_chain import generate_doc
app = Flask(__name__)
@app.route("/gen", methods=["POST"])
def gen():
code = request.json["code"]
return generate_doc(code)
if __name__ == "__main__":
app.run(port=5000)
示例效果演示
假设你选中如下代码:
def calculate_discount(price, rate):
return price * (1 - rate)
AI 输出:
### calculate_discount(price, rate)
计算折扣后的价格。
- 参数:
- `price`: 原价
- `rate`: 折扣率,范围 0~1
- 返回值:
- 应支付的折扣后价格
可扩展功能建议
-
支持自动解析整个项目,批量生成模块文档
-
支持版本差异比较,自动更新变化部分文档
-
与 MkDocs/VuePress 集成,构建在线文档站点
-
接入向量数据库 + RAG,打造智能问答文档助手
总结
这个系统架构灵活、私有、安全,具备以下优势:
特性 | 描述 |
---|---|
本地运行 | 数据不出本机,适合企业/私有项目 |
支持多模型 | 可替换 DeepSeek/Qwen 等模型 |
开发门槛低 | 基于 LangChain 和标准 API |
易于扩展 | 插件、文档、搜索、RAG 等 |