AI 工具类开源项目正在分成几条清晰路线:一类负责把多个 Agent 编排成工作流,一类补齐编程 Agent 的行为约束和长期记忆,一类把非结构化资料转成大语言模型更容易处理的格式,还有一类把语音合成模型推向本地可用。
这些项目解决的问题不同,放在一起看更容易判断该把哪个工具放进自己的工作流。
| 项目 | 主要解决的问题 | 适合场景 | 不太适合的场景 |
|---|---|---|---|
| Rowboat | 可视化搭建多 Agent 系统 | AI 客服、自动调研、内部自动化流程 | 只需要单轮聊天的简单机器人 |
| DeepTutor | 构建带记忆和工具能力的 AI 学习系统 | 智能助教、自动出题、学习画像 | 强监管的正式考试评分系统 |
| andrej-karpathy-skills | 约束 Claude Code 的编码行为 | 减少过度设计、误改代码、假设错误 | 需要模型自由探索大量方案的研究场景 |
| claude-mem | 给 Claude Code 增加跨会话长期记忆 | 长期维护同一个代码库 | 不能保存任何开发上下文的敏感环境 |
| ChinaTextbook | 收集中文教材 PDF 资源 | 家庭辅导、中文教育、基础知识补课 | 需要实时更新教材版本的系统 |
| MarkItDown | 把多格式文件转成 Markdown | RAG、知识库、文档清洗、LLM 输入预处理 | 高保真排版还原、复杂版式出版 |
| VoxCPM | 本地可运行的文本转语音大模型 | 播客、视频配音、智能客服、有声书 | CPU-only 环境或未经授权的声音克隆 |
Rowboat:用可视化 IDE 搭多 Agent 工作流
Rowboat 可以理解成多 Agent 系统的可视化 IDE(Integrated Development Environment,集成开发环境)。它要解决的不是“怎么调用一次模型”,而是“怎么把多个有分工的 Agent 组织成一个稳定流程”。
典型多 Agent 系统里,经常会有这些角色:
- 一个 Agent 负责理解用户需求;
- 一个 Agent 负责检索资料;
- 一个 Agent 负责调用外部工具;
- 一个 Agent 负责整理结论;
- 还有一个控制器负责任务拆解、状态流转和失败重试。
如果全部手写,开发者需要处理提示词、工具调用、上下文传递、测试环境和部署接口。Rowboat 把这些环节做成了可视化工作台,并提供 Copilot 来根据自然语言描述生成 Agent 工作流。
flowchart LR
A[自然语言描述需求] --> B[Rowboat Copilot]
B --> C[生成 Agent 工作流]
C --> D[AI 模拟环境测试]
D --> E{效果是否符合预期}
E -- 否 --> C
E -- 是 --> F[连接 MCP Server 和外部工具]
F --> G[通过 Python SDK 或 HTTP API 集成到产品]
它比较适合两类团队。
一类是已经知道业务流程,但不想从零搭 Agent 框架的团队。比如 AI 客服需要先判断问题类型,再查知识库、查工单、调用订单系统,最后生成回复;这些步骤天然适合拆给多个 Agent。
另一类是想快速验证 Agent 产品形态的团队。Rowboat 内置模拟测试能力,可以先在 AI 场景里跑一遍工作流,再接入真实工具,能减少直接上线试错的成本。
Rowboat 底层基于 OpenAI Agents SDK,可以连接 Slack、Linear、Jira、GitHub、ElevenLabs、Exa 等服务,也支持接入 MCP(Model Context Protocol,模型上下文协议)server。对外集成有两种方式:Python SDK(Software Development Kit,软件开发工具包)和 HTTP API(Application Programming Interface,应用程序接口)。
使用时要注意边界:Rowboat 适合编排流程,不等于自动保证业务正确性。关键工具调用仍然需要权限控制、日志记录、失败兜底和人工审核,尤其是涉及工单修改、代码提交、支付订单这类有副作用的操作。
DeepTutor:面向学习场景的多 Agent 助教系统
DeepTutor 更偏向教育场景。它不是单纯的聊天机器人,而是把工具调用、知识库、联网搜索、代码执行、多 Agent 推理和学习者记忆组合到一起,形成一个 AI 学习平台。
它覆盖的能力可以分成几组:
| 能力 | 作用 |
|---|---|
| RAG + 联网 + 代码执行 | 让聊天不只依赖模型参数,还能查资料、跑代码、引用知识库 |
| Deep Solve | 用多 Agent 拆解复杂问题,适合数学、编程、逻辑推理类任务 |
| Quiz Generation | 根据知识库自动生成题目 |
| Deep Research | 多个 Agent 并行做深度调研 |
| Math Animator | 把数学概念做成可视化内容 |
| TutorBot | 每个助教有独立工作区和人设,可以持续运行 |
| Co-Writer | 把 AI 集成进 Markdown 编辑器 |
| Persistent Memory | 在不同功能之间共享学习者画像 |
RAG(Retrieval-Augmented Generation,检索增强生成)是这类系统的关键。普通聊天只依赖大语言模型已经学过的知识,RAG 会先从知识库里检索相关内容,再把检索结果交给模型生成回答。这样做能让回答更贴近指定教材、课程资料或内部文档。
DeepTutor 的结构可以抽象成这样:
flowchart TB
A[学习者输入问题] --> B[任务理解]
B --> C{任务类型}
C --> D[RAG 检索]
C --> E[联网搜索]
C --> F[代码执行]
C --> G[多 Agent 推理]
D --> H[回答生成]
E --> H
F --> H
G --> H
H --> I[更新学习者画像]
I --> J[后续问答 / 出题 / 写作辅助]
TutorBot 的设计比普通机器人更进一步。普通机器人通常只围绕当前会话回答问题,而 TutorBot 有独立工作区和人设,可以围绕某个学习目标持续工作。例如,一个 TutorBot 可以专门负责高中数学,一个负责英语写作,一个负责编程练习;Persistent Memory 再把学习者画像共享给这些能力,避免每个功能都重新了解学习者水平。
仓库地址:
https://github.com/HKUDS/DeepTutor
适合用 DeepTutor 的场景通常有一个共同点:用户不是只问一次问题,而是会持续学习、练习和复盘。它不适合直接拿来做高风险评分系统,因为教育评分涉及标准答案、评分一致性、申诉机制和人工复核,不能完全交给模型判断。
andrej-karpathy-skills:用 CLAUDE.md 约束 Claude Code
Claude Code 这类编程 Agent 的常见问题不是“不会写代码”,而是太容易自作主张:
- 没澄清需求就按错误假设继续写;
- 为简单问题设计一堆不必要的抽象;
- 顺手修改没有完全理解的代码;
- 遇到困惑不说明,继续生成看似合理的实现;
- 没有先定义验证标准,写完也不知道是否真的完成。
andrej-karpathy-skills 的核心就是一个 CLAUDE.md 文件,用来告诉 Claude Code 在项目里应该怎么工作。它把编码行为约束成四条原则。
| 原则 | 具体要求 | 能减少的问题 |
|---|---|---|
| 思考再写 | 先明确假设,必要时提问或反驳需求 | 避免基于错误前提写一大段代码 |
| 简洁优先 | 只实现当前需要的能力,不提前扩展 | 避免过度设计和无用抽象 |
| 手术式修改 | 只碰必要文件,保持现有代码风格 | 避免无关改动污染 diff |
| 目标驱动执行 | 先定义验证标准,再执行实现和测试 | 避免“看起来写完了但无法验证” |
它的工作方式并不复杂:Claude Code 进入项目时会读取 CLAUDE.md,这些规则就会成为后续代码生成、修改和解释的行为边界。
sequenceDiagram
participant Dev as 开发者
participant Claude as Claude Code
participant Rules as CLAUDE.md
participant Repo as 代码仓库
Dev->>Claude: 提出编码任务
Claude->>Rules: 读取项目规则
Claude->>Dev: 澄清假设和验收标准
Claude->>Repo: 做最小必要修改
Claude->>Repo: 运行或建议验证方式
Claude-->>Dev: 返回变更说明
推荐用 plugin 安装:
/plugin marketplace add forrestchang/andrej-karpathy-skills/plugin install andrej-karpathy-skills@karpathy-skills
也可以把 CLAUDE.md 放到项目根目录,让 Claude Code 在当前仓库中读取规则。
仓库地址:
https://github.com/forrestchang/andrej-karpathy-skills
这类规则文件尤其适合多人协作代码库。它不能让模型永远正确,但能让模型少做几类高风险动作:少猜、少扩展、少乱改、先验证。
claude-mem:给 Claude Code 补上长期记忆
Claude Code 默认更像一个“会话内聪明”的工具。当前会话里它能理解上下文,可一旦新开会话,很多项目细节、历史决策、踩过的坑都需要重新解释。
claude-mem 解决的是跨会话记忆问题。它会在会话过程中自动捕捉 Claude 做过的事情,然后使用 Claude 的 agent-sdk 做语义压缩。新会话启动时,再把相关上下文注入回来。
flowchart LR
A[Claude Code 会话] --> B[自动捕捉操作和上下文]
B --> C[AI 语义压缩]
C --> D[(SQLite 本地存储)]
C --> E[(Chroma 向量库)]
F[新会话启动] --> G[按任务检索相关记忆]
D --> G
E --> G
G --> H[注入上下文给 Claude Code]
它的几个设计点比较实用:
| 功能 | 作用 |
|---|---|
| 自动记录 | 不需要手工写笔记,也不需要手动整理上下文 |
| 语义压缩 | 把冗长会话压缩成可复用记忆,降低后续上下文成本 |
| skill-based 自然语言检索 | 用自然语言找历史记忆,不必记文件名或关键词 |
| 渐进式披露 | 按需展开记忆,并标注 token 成本 |
| 本地 Web Viewer | 在 localhost:37777 查看历史记录 |
<private> 标签 | 标记不希望被记住的敏感内容 |
| SQLite + Chroma | 本地存储结构化数据和向量索引 |
| Gemini CLI 支持 | 不只绑定 Claude Code |
安装命令很短:
npx claude-mem install
敏感内容可以用标签包起来:
<private>
这里是 API Key、客户信息、未公开需求或其他不希望进入长期记忆的内容。
</private>
仓库地址:
https://github.com/thedotmack/claude-mem
使用长期记忆工具时要把隐私规则提前定好。即使 claude-mem 使用本地 SQLite 和 Chroma,也不代表可以无脑记录所有内容。涉及密钥、客户数据、未公开商业计划、受监管代码时,需要明确哪些内容可以进入记忆,哪些必须用 <private> 排除。
ChinaTextbook:中文教材 PDF 资源仓库
ChinaTextbook 是一个中文教材 PDF 仓库,覆盖小学、初中、高中和大学阶段,包含人教版、五·四学制等多种课纲资源。数学教材覆盖范围较广,从低年级一直延伸到大学阶段。
它解决的是资料获取和集中整理问题。对家庭辅导、海外中文教育、基础知识补课、学习型知识库搭建来说,把教材资源按学段和学科集中起来,比零散搜索更容易使用。
文件主要是 PDF 格式。部分超过 50MB 的教材会被切成 35MB 左右的分段文件,仓库里提供了合并工具。
仓库地址:
https://github.com/TapXWorld/ChinaTextbook
使用这类资料仓库时建议注意三件事:
| 注意点 | 说明 |
|---|---|
| 版本核对 | 教材版本、课纲地区、出版年份可能影响内容 |
| 文件完整性 | 分段 PDF 需要合并后再检查页码是否完整 |
| 使用范围 | 教学、学习和研究用途要遵守仓库说明及相关版权要求 |
如果要把教材接入 AI 学习系统,常见流程是先下载 PDF,再用 OCR 或文档转换工具抽取文本,最后进入 RAG 知识库。
flowchart LR
A[教材 PDF] --> B[OCR / 文档解析]
B --> C[清洗标题、页码、章节]
C --> D[切分文本块]
D --> E[向量化]
E --> F[(知识库)]
F --> G[AI 助教问答 / 自动出题]
MarkItDown:把各种文件转成 Markdown
MarkItDown 是微软开源的 Python 工具,核心目标很直接:把多种格式的文件转换成 Markdown。
它支持的输入类型很广,包括 PDF、Word、PPT、Excel、图片、音频、HTML,甚至可以处理 YouTube 链接。对做大语言模型(Large Language Model,LLM)应用的人来说,这类工具经常出现在数据预处理阶段。
为什么要转 Markdown?因为 Markdown 对 LLM 很友好:
- 标题层级可以保留下来;
- 列表、表格、链接有明确结构;
- 相比复杂排版格式,token 浪费更少;
- 更适合切分、索引和送入 RAG 管道。
典型流程是这样:
flowchart LR
A[PDF / Word / PPT / Excel / 图片 / 音频 / HTML] --> B[MarkItDown]
B --> C[Markdown 文本]
C --> D[清洗与切分]
D --> E[Embedding 向量化]
E --> F[(向量数据库)]
F --> G[LLM 问答 / 摘要 / 检索]
安装命令:
pip install 'markitdown[all]'
命令行转换:
markitdown path-to-file.pdf -o document.md
Python API 示例:
from markitdown import MarkItDown
md = MarkItDown()
result = md.convert("path-to-file.pdf")
print(result.text_content)
它还支持一些更高级的能力,例如:
| 能力 | 用途 |
|---|---|
| LLM 图片描述 | 图片内容转成文本描述,方便进入知识库 |
| 音频转录 | 把语音资料变成可检索文本 |
| Azure 文档智能集成 | 处理更复杂的文档解析任务 |
| 插件扩展 | 通过第三方插件补 OCR 等能力 |
仓库地址:
https://github.com/microsoft/markitdown
使用时要特别注意扫描版 PDF 和复杂表格。扫描版 PDF 本质上是图片,需要 OCR;复杂表格转成 Markdown 后可能丢失合并单元格、跨页表头和精细排版,需要额外校对。
VoxCPM:本地可用的文本转语音大模型
VoxCPM 是面壁智能开源的文本转语音模型。TTS(Text-to-Speech,文本转语音)系统的目标是把文本变成自然语音,VoxCPM 的重点是大模型语音合成,并且强调端侧可运行。
它的关键信息包括:
| 指标 / 能力 | 说明 |
|---|---|
| 参数规模 | 2B 参数 |
| 训练数据 | 200 多万小时多语种语音 |
| 语言能力 | 支持 30 种语言自动识别和切换 |
| 输出质量 | 48kHz 音频 |
| Voice Design | 用文字描述生成音色,不需要参考音频 |
| 可控声音克隆 | 克隆声音后还能加入风格引导 |
| 实时流式推理 | RTX 4090 上 RTF 约 0.3 |
RTF(Real-Time Factor,实时率)可以理解成生成速度和音频时长的比例。RTF 为 0.3 时,生成 10 秒音频大约需要 3 秒,已经接近很多交互式场景的可用范围。
VoxCPM 的两个能力很有代表性。
一个是 Voice Design。传统声音克隆通常需要提供参考音频,而 Voice Design 允许直接用文字描述音色,例如“年轻女性、语速较慢、情绪温和、适合讲故事”,模型会生成符合描述的声音。
另一个是可控声音克隆。声音克隆解决“像谁”的问题,风格引导解决“怎么说”的问题。同一个声音可以表现出客服式、播客式、旁白式或情绪化表达。
flowchart LR
A[输入文本] --> B{合成模式}
B --> C[Voice Design: 文本描述音色]
B --> D[声音克隆: 参考音频]
C --> E[风格控制]
D --> E
E --> F[VoxCPM 推理]
F --> G[48kHz 语音输出]
仓库地址:
https://github.com/OpenBMB/VoxCPM
适合尝试 VoxCPM 的场景包括播客生成、视频旁白、智能客服、有声书和多语言语音内容生产。需要注意的是,声音克隆必须获得授权,不能用来冒充他人身份;如果部署在本地,还要提前评估显存、推理延迟和并发需求。
按场景选择工具
如果目标是搭一个能执行任务的 AI 系统,优先看 Rowboat 和 DeepTutor。Rowboat 更偏通用 Agent 工作流编排,DeepTutor 更偏学习系统和助教场景。
如果主要使用 Claude Code 写代码,andrej-karpathy-skills 和 claude-mem 可以一起用:前者约束模型怎么改代码,后者让模型记住长期上下文。
如果在做知识库或 RAG 管道,ChinaTextbook 可以作为中文教育资料来源,MarkItDown 负责把 PDF、Office 文档、音频和网页转换成 Markdown,再进入后续清洗、切分和向量化流程。
如果产品里需要语音输出,VoxCPM 适合评估端侧 TTS、声音设计和可控声音克隆能力。它不是简单的朗读工具,而是更接近可控语音生成模型。