自定义你的 AI 项目文档系统——基于开源 LLM + LangChain + VSCode 插件构建

发布于:2025-06-27 ⋅ 阅读:(18) ⋅ 点赞:(0)

下面是一份关于如何自定义你的 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 等


网站公告

今日签到

点亮在社区的每一天
去签到