芥末
发布于 2026-02-19 / 0 阅读
0
0

6 个面向 LLM 应用开发的 GitHub 开源项目:信息抽取、Agent 工作流与本地搜索

LLM(大语言模型)应用不只是调用一次模型接口。真正落到工程里,通常还要处理文档抽取、工作流编排、工具调用、浏览器调试、本地知识库检索、示例项目复用等问题。

这 6 个开源项目可以按能力分成几类:

项目解决的问题适合场景核心关键词
LangExtract从非结构化文本中抽取结构化数据病历、报告、合同、长文档审阅信息抽取、源定位、可视化审核
Agentic Workflows用 Markdown 描述 AI 工作流并在 GitHub Actions 中执行仓库自动化、Issue 处理、文档维护GitHub Actions、安全沙箱
pi-mono构建和运行 AI Agent 工具链本地服务器、树莓派、CLI Agent多模型、上下文管理、本地 Agent
awesome-llm-apps学习和复用 LLM 应用案例RAG、Agent、多智能体、语音应用示例集合、项目模板
chrome-devtools-mcp让 AI 助手控制和检查 Chrome自动化测试、网页调试、性能分析MCP、Chrome DevTools
qmd本地 Markdown 知识库搜索个人笔记、技术文档、Agent 知识库BM25、向量检索、Ollama、重排序

这些项目可以组合成一套比较完整的 LLM 应用开发链路:

flowchart LR
    A[非结构化数据<br/>文档/网页/代码/笔记] --> B[信息抽取<br/>LangExtract]
    A --> C[本地知识库搜索<br/>qmd]

    D[仓库任务] --> E[AI 工作流<br/>Agentic Workflows]
    F[本地运行环境] --> G[Agent 工具链<br/>pi-mono]

    H[浏览器页面] --> I[Chrome 自动化与调试<br/>chrome-devtools-mcp]

    J[应用案例学习] --> K[awesome-llm-apps]

    B --> L[结构化数据]
    C --> M[检索结果]
    E --> N[自动化任务输出]
    G --> O[Agent 执行结果]
    I --> P[网页状态/网络/性能数据]

1. LangExtract:从混乱文本里抽取可审核的数据

LangExtract 是 Google 开源的 Python 库,目标很明确:把非结构化文本中的关键信息抽成结构化结果,并且能定位每条结果来自源文本的哪个位置。

普通 LLM 抽取很容易遇到两个问题:

  1. 模型给出了结果,但很难判断依据来自哪里;
  2. 长文档内容太多,抽取结果不方便人工复核。

LangExtract 的重点不只是“抽出来”,而是让抽取结果可以追溯、可以审核。比如处理临床病历、实验报告、法律合同、客服记录时,结构化结果必须能回到源文本上下文中验证,否则很难直接进入业务流程。

它的典型处理链路可以理解成这样:

flowchart TD
    A[输入长文档] --> B[按上下文切分]
    B --> C[调用 LLM 抽取字段]
    C --> D[生成结构化结果]
    D --> E[对齐源文本位置]
    E --> F[生成可视化 HTML]
    F --> G[人工审核与修正]

核心能力包括:

能力作用
精确源定位每条抽取结果可以回到源文本中的对应片段,方便审核
长文档优化面向长报告、长病历、长记录做了处理,避免一次性塞入模型导致上下文超限
交互式可视化可以生成独立 HTML 文件,在上下文中检查大量抽取结果
灵活模型支持可以接 Gemini,也可以接 Ollama 这类本地模型运行环境

安装方式很简单:

pip install langextract

仓库地址:

https://github.com/google/langextract

适合用 LangExtract 的场景:

场景为什么适合
临床病历抽取对准确性和可追溯性要求高,需要看到证据位置
合同条款整理字段多、文本长,抽取后需要人工复核
事故报告分析需要抽取时间、地点、人物、事件、影响范围
客服工单归类可以把自由文本整理成结构化标签和字段

使用时要注意两点。字段定义越清楚,抽取结果越稳定;如果文档包含敏感数据,云端模型和本地模型的选择要提前确定,不能等接入业务后再补隐私方案。

2. Agentic Workflows:把 AI 自动化任务写进 Markdown 和 GitHub Actions

Agentic Workflows 是 GitHub 官方推出的 AI 工作流项目,它把“用自然语言描述任务”和“在 GitHub Actions 中执行任务”连接起来。

传统 GitHub Actions 主要依赖 YAML 配置,适合执行确定性任务,比如跑测试、构建镜像、发布包。AI 任务通常没那么固定,例如:

  • 根据 Issue 内容判断是否需要补充信息;
  • 根据代码变更生成 Pull Request 摘要;
  • 自动检查文档是否缺少更新;
  • 根据仓库上下文生成维护建议。

Agentic Workflows 的思路是把这些任务描述写在 Markdown 中,让 AI Agent 根据描述执行,再放进 GitHub Actions 的运行环境里。

一个 AI 仓库工作流通常会经历这样的过程:

sequenceDiagram
    participant Dev as 开发者
    participant Repo as GitHub 仓库
    participant Action as GitHub Actions
    participant Agent as AI Agent
    participant Safe as safe-outputs

    Dev->>Repo: 提交 Issue / PR / Workflow 触发事件
    Repo->>Action: 启动工作流
    Action->>Agent: 传入 Markdown 任务说明和仓库上下文
    Agent->>Agent: 分析任务并调用允许的工具
    Agent->>Safe: 写入受控输出
    Safe-->>Repo: 生成评论、检查结果或建议变更

安全设计是这个项目的重点。AI Agent 如果拥有过大的权限,很容易把错误输出变成真实仓库变更,所以 Agentic Workflows 采用多层限制:

安全机制作用
默认只读权限Agent 默认不能直接改仓库内容
safe-outputs写操作只能通过受控输出通道完成
沙箱执行限制任务运行环境,降低越权风险
输入净化减少提示词注入和恶意输入影响
网络隔离避免 Agent 任意访问外部资源
SHA 固定依赖防止依赖版本漂移带来供应链风险
工具白名单Agent 只能使用允许的工具

仓库地址:

https://github.com/github/gh-aw

适合尝试的任务类型:

任务说明
Issue 初筛判断缺少哪些复现信息、自动打标签
PR 摘要根据 diff 生成审查辅助信息
文档维护检查代码变更是否需要同步更新文档
Release 草稿根据合并记录生成发布说明初稿

不适合直接交给它处理的任务也很明确:生产环境发布、数据库迁移、权限修改、密钥轮换这类高风险操作,应该保留人工确认环节。AI 可以给建议,不应该直接拥有最终执行权。

3. pi-mono:面向本地和小型服务器的 AI Agent 工具包

pi-mono 是一个 AI Agent 工具包,特点是可以把 coding agent CLI 跑在树莓派、本地服务器或其他自管环境中。

它不是单一聊天机器人,而是一组围绕 Agent 开发的组件,包括:

组件用途
Coding Agent CLI在命令行里运行代码相关 Agent
统一 LLM API屏蔽不同模型提供商的接口差异
TUI / Web UI 库构建终端界面和 Web 界面
Slack Bot把 Agent 接入团队沟通工具
vLLM pods面向本地或自托管推理环境
上下文管理自动压缩、恢复和处理上下文接近限制的问题

它支持多种模型和工具入口,包括 Claude、ChatGPT、GitHub Copilot、Google Gemini CLI 等。对开发者来说,比较实用的是“统一接口”和“上下文管理”。

很多 Agent 项目在 demo 阶段能跑,但一旦上下文变长,就容易出现几类问题:

  • 对话历史太长,超过模型上下文窗口;
  • 重要信息被截断,Agent 开始重复犯错;
  • 多轮任务中断后,恢复成本高;
  • 不同模型接口差异大,切换模型要改很多代码。

pi-mono 把上下文压缩和恢复放进工具链里,可以在接近上下文限制时主动处理,减少 Agent 长任务中途失控的概率。

仓库地址:

https://github.com/badlogic/pi-mono

适合使用 pi-mono 的场景:

场景说明
本地 coding agent希望在自己的服务器上运行代码助手
小型设备实验树莓派或低成本服务器上测试 Agent 工作流
多模型适配同一套工具链需要接入多个模型提供商
团队机器人通过 Slack Bot 把 Agent 接入团队流程

使用这类 Agent 工具包时,最容易忽略的是运行权限。Agent 如果能读写代码、执行命令、访问网络,就必须明确边界:哪些目录可写、哪些命令可执行、哪些密钥不能进入上下文。工具能力越强,权限控制越不能省。

4. awesome-llm-apps:从 100 多个 LLM 应用案例里学习工程结构

awesome-llm-apps 是一个 LLM 应用案例合集,收集了 100 多个项目,覆盖 RAG(检索增强生成)、AI Agent、多智能体团队、MCP(Model Context Protocol,模型上下文协议)、语音 Agent 等方向。

这类仓库的价值不是提供一个统一框架,而是提供大量可运行的工程样板。学习 LLM 应用时,只看概念很容易停留在“知道有这个东西”,但不知道目录怎么组织、提示词怎么放、检索怎么接、工具调用怎么写。案例仓库正好用来补这个空缺。

仓库地址:

https://github.com/Shubhamsaboo/awesome-llm-apps

可以按学习路径来使用:

阶段建议关注的项目类型能学到什么
入门基础聊天机器人、简单问答应用模型调用、提示词组织、基础 UI
检索RAG 应用、文档问答向量库、文本切分、召回和生成
工具调用Function Calling、MCP 示例让模型调用外部工具和数据源
Agent单智能体任务执行任务规划、工具选择、执行循环
多智能体多角色协作应用角色分工、消息传递、协作控制
语音Voice Agent语音识别、语音合成、实时交互

它支持的模型范围也比较广,包括 OpenAI、Anthropic、Gemini、xAI,以及 Qwen、Llama 等开源模型。对于想做跨模型实验的开发者,这一点很有用,因为同一个应用模式可以换不同模型测试效果和成本。

一个比较稳妥的使用方式:

git clone https://github.com/Shubhamsaboo/awesome-llm-apps.git
cd awesome-llm-apps

# 进入感兴趣的子项目
# 根据对应 README 配置 API Key 或本地模型地址
# 安装依赖并运行示例

选择案例时不要只看名字,要重点看三件事:

  1. 是否有完整运行步骤;
  2. 是否说明依赖的模型和外部服务;
  3. 是否能替换成自己的数据源。

如果目标是生产系统,案例项目更适合作为结构参考,而不是直接复制上线。示例通常会弱化鉴权、限流、日志、监控、错误重试等工程细节,这些都需要自己补齐。

5. chrome-devtools-mcp:让 AI 编程助手直接操作 Chrome

chrome-devtools-mcp 是一个 MCP 服务,它把 Chrome DevTools 的能力暴露给 AI 编程助手。这样 Claude Code、Cursor、Copilot、Gemini CLI 等工具就不只能看代码,还能实际控制浏览器、检查页面状态、分析网络请求和性能问题。

MCP 可以理解为 AI 助手和外部工具之间的协议层。AI 助手是客户端,chrome-devtools-mcp 是服务端,Chrome 浏览器是被操作对象。

sequenceDiagram
    participant Assistant as AI 编程助手
    participant MCP as chrome-devtools-mcp
    participant Chrome as Chrome 浏览器
    participant Page as Web 页面

    Assistant->>MCP: 请求打开页面 / 点击按钮 / 获取日志
    MCP->>Chrome: 调用 DevTools 能力
    Chrome->>Page: 执行页面操作
    Page-->>Chrome: 返回 DOM、网络、控制台、性能数据
    Chrome-->>MCP: 返回调试结果
    MCP-->>Assistant: 转换为 AI 可读的工具结果

它提供的能力可以分成两类。

一类是输入自动化:

能力用途
点击测试按钮、链接、菜单
拖拽测试拖放组件
填表自动输入登录、搜索、配置表单
处理对话框处理 alert、confirm 等弹窗
按键模拟键盘操作
上传文件测试文件上传流程

另一类是调试和分析:

能力用途
网络请求分析检查接口状态码、耗时、请求参数
截图捕获当前页面状态
控制台消息检查查看前端报错和日志
性能追踪录制分析页面加载和交互性能
性能洞察辅助定位慢请求、长任务、渲染瓶颈

常见 MCP 配置大致是这种形式,具体字段以所用 AI 工具的配置格式为准:

{
  "mcpServers": {
    "chrome-devtools": {
      "command": "npx",
      "args": ["chrome-devtools-mcp@latest"]
    }
  }
}

仓库地址:

https://github.com/ChromeDevTools/chrome-devtools-mcp

适合使用的任务:

场景说明
UI 回归检查让 AI 打开页面并执行关键路径
Bug 复现根据步骤操作页面,收集控制台和网络信息
性能分析录制 trace,辅助定位加载慢或交互卡顿
前端调试结合代码修改和浏览器反馈形成闭环

它不能完全替代 Playwright、Cypress 这类确定性测试框架。AI 操作浏览器更适合探索、排查、辅助调试;稳定的 CI 测试仍然需要明确断言和可重复脚本。

6. qmd:用本地模型搜索 Markdown 知识库

qmd 是一个本地 Markdown 搜索引擎,适合把个人笔记、团队文档、项目知识库变成可检索的数据源。它的特点是全程可以通过 Ollama 在本地运行,不依赖外部网络服务。

它不是单纯的关键词搜索,而是把三种能力组合起来:

  1. BM25 全文检索;
  2. 向量语义搜索;
  3. LLM 重排序。

BM25 擅长处理关键词匹配,尤其是专有名词、函数名、错误码、配置项。向量搜索擅长处理语义相近但字面不完全一致的问题。LLM 重排序则用于把候选结果重新排序,让更符合问题意图的内容排在前面。

qmd 的检索流程可以表示为:

flowchart TD
    A[用户查询] --> B[LLM 查询扩展]
    B --> C[生成多个查询变体]
    C --> D[BM25 / FTS5 全文检索]
    C --> E[向量语义检索]
    D --> F[RRF 排名融合]
    E --> F
    F --> G[位置感知混合]
    G --> H[LLM 重排序]
    H --> I[返回 Markdown 片段]

其中几个技术点值得单独解释:

技术点作用
查询扩展用 LLM 生成查询变体,提高召回率;原始查询权重更高,避免偏离用户意图
FTS5SQLite 的全文检索能力,适合本地轻量索引
向量搜索通过 embedding 查找语义相近内容
RRFReciprocal Rank Fusion,按多个检索器的排名进行融合
位置感知混合根据排名位置调整不同检索结果的权重
LLM 重排序对候选片段做最后排序,减少无关结果靠前的问题
MCP 模式让 Claude Code 等 AI 工具把 qmd 当成本地知识库工具调用

仓库地址:

https://github.com/tobi/qmd

因为 qmd 依赖 Ollama,本地模型环境要先准备好:

ollama serve
ollama pull llama3.1

实际使用时,比较适合把这些内容放进 qmd:

内容类型示例
技术笔记Markdown 学习记录、排障手册
项目文档架构说明、接口说明、部署步骤
会议记录决策背景、任务分工、历史讨论
代码知识库模块说明、约定规范、常见问题

qmd 和普通向量库的差异在于,它没有把“语义搜索”当成唯一答案。很多工程问题必须依赖精确词匹配,比如错误码 ECONNRESET、配置项 max_connections、函数名 parseRequest。BM25 和向量检索一起用,才能同时兼顾精确匹配和语义召回。

选型建议:按问题找项目

如果只是想快速判断该看哪个项目,可以按问题选:

你遇到的问题优先看
大量文档需要抽取字段,还要能人工审核LangExtract
想把 AI 自动化放进 GitHub 仓库流程Agentic Workflows
想在本地服务器或树莓派上跑 coding agentpi-mono
想学习 LLM 应用工程结构awesome-llm-apps
想让 AI 助手操作网页、分析 DevTools 数据chrome-devtools-mcp
想做离线 Markdown 知识库搜索qmd

也可以按组合来搭建工作流:

组合能做什么
LangExtract + qmd从文档抽取结构化信息,再建立本地可检索知识库
chrome-devtools-mcp + Agentic Workflows在仓库工作流中辅助检查前端页面问题
pi-mono + qmd本地 Agent 调用本地知识库,不把资料发到云端
awesome-llm-apps + 任意项目先从案例学习,再替换成自己的业务数据和模型

LLM 应用开发的关键不只是模型本身,而是模型周围的工具系统。信息从哪里来、怎样被检索、Agent 能调用哪些工具、输出能否被审核、权限边界在哪里,这些问题决定了一个 demo 能不能变成可维护的工程。LangExtract、Agentic Workflows、pi-mono、awesome-llm-apps、chrome-devtools-mcp 和 qmd 正好覆盖了这条链路中的几个关键环节。


评论