2026-01-08

01月08日

一、今日完成情况

  • 完成LibreChat环境配置和MCP嵌入服务,并且效果测试(系统修改-Obsidian修改-浏览器修改)
  • 预定–对爬取数据进行处理(筛选换行符、模型翻译、评论长度筛选)
  • 显示器保存支架购买 + HDMI线优雅防止设计。(亚克力板 + 刻刀 + 胶水可以实现理想当中的效果)
  • 快速了解Agent RAG开发的平台–LangChain,这是我接下来的重点。

二、今日感悟

  • 核心业务数据​:
  • ​今日工作总结:​
  • ​明日工作计划:
  • ​今日学习成长:​

三、备注

四、LibreChat

配置了一下快速运行Librechat脚本,不然每次运行都要打开Docker之后,运行至少三条指令,非常麻烦,然后还要到浏览器当中运行,不少于4步。

现在我把所有指令步骤制作为一个脚本,并且修改.sh文件的默认启动方式,默认在终端当中运行,从而简化所有步骤:

Pasted image 20260108094224

当然关闭服务的话,还得跑一个指令,因为只有一步,就没必要做成脚本了

cd /Users/kipley/Documents/code/Docker/LibreChat
docker compose down

下面是具体的MCP配置方法入门:

不幸的是,我当前配置MCP服务的目标是,可是实现对计算机内部资源的访问,从而极大的优化和提高我的生产力,可是在Docker容器下运行的LibreChat无法满足这一点,因为Docker是严格的隔离的,是申不到我的系统里面的,所以我要进行这个项目唯一能够做的就是,在本地再次部署,那么就需要安装依赖,相对来讲比Docker麻烦不少,因为Docker是打包好了的。

需要打通的环节是,网页依赖,数据库依赖,还有最后项目的拉取这几个方面。

A、本地卡快速启动/关闭

1. 开启“魔法” (必须)

  • 打开你的 Hysteria / Vultr 代理软件
  • 确认开启 TUN 模式 / 增强模式 (这是你解决网络问题的关键)。

2. 启动数据库 (Docker)

打开终端 (Terminal),输入:

docker start mongodb

3. 启动 LibreChat 主程序

进入你的项目目录并启动:

cd /Users/kipley/Documents/code/MCP/LibreChat  
npm run backend

http://localhost:3080/

关闭方式如下:

npm run backend 的终端窗口,按下组合键 Ctrl + C

停止数据库

docker stop mongodb

关闭代理: 退出你的代理软件。

B、本地部署尝试(理论路径)

第一阶段:准备地基 (环境安装)

在 Docker 版里,环境是自动配好的;但在本地版里,我们需要自己安装 Node.js (运行环境) 和 MongoDB (数据库)。

请打开你的 Mac 终端,依次执行以下检查和安装:

1. 检查 Node.js 版本

LibreChat 对 Node.js 版本有要求(建议 v20 或更高)。

Bash

node -v
  • 如果显示 v20.x.x 或更高,直接跳过。

  • 如果没安装或版本太低,请去 Node.js 官网 下载安装 LTS 版本,或者用 brew install node

2. 安装并启动 MongoDB (这是唯一的难点)

LibreChat 需要一个数据库来存聊天记录。在 Mac 上最简单的办法是用 Homebrew 安装。

安装:

brew tap mongodb/brew
brew install mongodb-community
    ```

 **启动服务:**

 ``` bash
brew services start mongodb-community

(看到 Successfully started 字样就算成功。)

使用Docker的数据库比本地配置方便许多,这里我尝试在Docker配置数据库

docker run -d --name mongodb -p 27017:27017 mongo:latest

这里之前没有拉取过没关系的,系统会自动拉取的。

docker ps

验证成功!

npm run backend

启动即可。

第二阶段:安装 LibreChat (本地源码版)

找一个你喜欢的文件夹(比如 ~/Documents),我们开始从零安装。

1. 下载源码
# 进入文档目录
cd ~/Documents

# 克隆代码
git clone https://github.com/danny-avila/LibreChat.git

# 进入项目文件夹
cd LibreChat
2. 配置基础环境 (.env)

我们需要复制一份配置文件。

cp .env.example .env

关键动作:虽然默认配置就能跑,但为了确保它能连上你刚才装的本地数据库,建议你用文本编辑器打开 .env 文件看一眼。

  • 找到 MONGO_URI
  • 确保它是 mongodb://127.0.0.1:27017/LibreChat (通常默认就是这个,不用改)。
3. 安装依赖并构建 (这步需要几分钟)

这是最耗时的一步,它会下载所有需要的库。

# 安装后端和前端的依赖
npm ci

# 构建前端页面
npm run frontend
4. 第一次启动!
npm run backend
  • 当看到终端显示 Server listening on port 3080 时,打开浏览器访问 http://localhost:3080
  • 注册一个管理员账号(第一个注册的就是管理员)。
5.系统配置文件修改

新建librechat,yaml文件并且输入下面信息(和Docker版本一致)
librechat 1

.env 加入信息如下:

HTTP_PROXY=http://127.0.0.1:7897
HTTPS_PROXY=http://127.0.0.1:7897

# 仅开启 Google 和自定义端点(屏蔽默认 OpenAI)
ENDPOINTS=google,custom

# 强制使用后台 Key,禁用前端手动输入(解决 no_user_key 报错)
USER_PROVIDE_OPENAI_API_KEY=false
USER_PROVIDE_GOOGLE_API_KEY=false
USER_PROVIDE_CUSTOM_API_KEY=false

# Google Gemini 官方 Key
GOOGLE_KEY=AIzaSyAkhD12ZjU7h2t9EfF9B_6a2hCElMXClWw

# OpenAI 占位符(防止系统初始化报错)

且注释掉openai的apikey选项:

# OPENAI_API_KEY=user_provided

还是不行报错,显示网络无法连接问题,现在是最后的解决方案:

注释掉.env当中的所有关于代理的配置,clash verge开启 tun模式,这样的话会开启虚拟网卡,本地项目在尝试网络连接的时候会以为自己就是在7897端口运行,而不是代理模式:

再次重启项目,运行成功了:

Pasted image 20260108112503

且如果报错,信息也是变化了

2026-01-08 11:19:18 error: [api/server/controllers/agents/client.js #sendCompletion] Operation aborted [GoogleGenerativeAI Error]: Error fetching from https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-001:streamGenerateContent?alt=sse: [400 Bad Request] Unable to submit request because thinking is not supported by this model. Learn more: https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/gemini

是400报错

  1. 你的网络(TUN模式)完全修好了! LibreChat 已经成功连上了 Google 的服务器。
  2. 验证通过了! 你的 API Key 也是正确的,Google 认出了你的身份。

现在的报错 不是网络问题,而是 “参数配置不匹配” 的问题。

其实已经没问题了,跑成功了就可以了。

本地部署遇到问题

安装数据库报错

安装指令

brew tap mongodb/brew

遇到问题

fatal: unable to access 'https://github.com/mongodb/homebrew-brew/': Failed to connect to github.com port 443 after 75084 ms: Couldn't connect to server

Error: Failure while executing; `git clone https://github.com/mongodb/homebrew-brew /opt/homebrew/Library/Taps/mongodb/homebrew-brew --origin=origin --template= --config core.fsmonitor=false` exited with 128.

Warning: No available formula with the name "mongodb-community". Did you mean mongodb-atlas-cli?

看起来是网络的问题,也就是无法链接到服务器,现在就需要思考,我的代理对于这个github的指令是否有用,是否是因为代理在终端没有生效的缘故。

问题解决

核心原因:macOS 的终端(Terminal/iTerm2)默认不走系统代理。 即使你在系统设置里开了代理,或者 Hysteria 客户端开了“系统代理模式”,绝大多数命令行工具(如 curl, git, brew)依然会直连,所以才会报错 Failed to connect

clash verge的系统代理端口是7897,所以需要进行修改:

# 设置 git 使用 http 代理 (将 7890 换成你的端口)
git config --global http.proxy http://127.0.0.1:7897
git config --global https.proxy http://127.0.0.1:7897

验证: 配置后,再次尝试安装数据库:

brew tap mongodb/brew
(base) kipley@kipleys-MacBook-Air LibreChat % brew tap mongodb/brew

✔︎ JSON API formula.jws.json                                         Downloaded   32.1MB/ 32.1MB

✔︎ JSON API cask.jws.json                                            Downloaded   15.3MB/ 15.3MB

==> **Tapping mongodb/brew**

Cloning into '/opt/homebrew/Library/Taps/mongodb/homebrew-brew'...

remote: Enumerating objects: 1729, done.
remote: Counting objects: 100% (661/661), done.
remote: Compressing objects: 100% (262/262), done.
remote: Total 1729 (delta 569), reused 401 (delta 399), pack-reused 1068 (from 2)
Receiving objects: 100% (1729/1729), 382.72 KiB | 22.51 MiB/s, done.
Resolving deltas: 100% (1070/1070), done.
Tapped 13 formulae (32 files, 493.2KB).

安装成功,继续推进度吧。

一劳永逸解决方法

curl, npm install, wget 等命令都能走代理,可以把代理写入 Shell 配置文件

临时测试(当前窗口生效): 在终端输入

export https_proxy=http://127.0.0.1:7897 http_proxy=http://127.0.0.1:7897 all_proxy=socks5://127.0.0.1:7897

然后测试一下 IP:

curl ipinfo.io
(base) kipley@kipleys-MacBook-Air MCP % export https_proxy=http://127.0.0.1:7897 http_proxy=http://127.0.0.1:7897 all_proxy=socks5://127.0.0.1:7897

(base) kipley@kipleys-MacBook-Air MCP % curl ipinfo.io

{

  "ip": "66.42.63.252",
  "hostname": "66.42.63.252.vultrusercontent.com",
  "city": "Singapore",
  "region": "Singapore",
  "country": "SG",
  "loc": "1.3215,103.6957",
  "org": "AS20473 The Constant Company, LLC",
  "postal": "627753",
  "timezone": "Asia/Singapore",
  "readme": "https://ipinfo.io/missingauth"
}**%**

是我服务器的IP地址,没有问题。

永久生效(写入 .zshrc): 每次打开终端都自动连上代理,可以把这两个功能写入配置文件。

使用命令打开配置文件:

nano ~/.zshrc

在文件底部黏贴下面信息:

# 代理开关控制
function proxy_on() {
    export http_proxy="http://127.0.0.1:7897"
    export https_proxy="http://127.0.0.1:7897"
    export all_proxy="socks5://127.0.0.1:7897"
    echo -e "\033[32m代理已开启 (Port: 7897)\033[0m"
    # 验证一下
    curl -I https://www.google.com
}

function proxy_off() {
    unset http_proxy
    unset https_proxy
    unset all_proxy
    echo -e "\033[31m代理已关闭\033[0m"
}

最后让配置生效:

source ~/.zshrc

未来需要再终端开启代理的话,就直接使用快捷指令即可:

proxy_on

切换为直连模式

proxy_off

五、LibreChat MCP 插件

最常用的MCP Client:
cursor,Claude Code, Claude Desktop, ChatGPT, Codex, LibreChat,GeminiCLI,vscode,cline,Goose……

梯队 模型代表 MCP 适配性 评价
T0 (王者) Claude 3.5 Sonnet 🌟🌟🌟🌟🌟 MCP 的亲爹。目前公认工具调用最强、最准、最稳定的模型。它能处理复杂的工具链,几乎不会弄错参数格式。
T1 (标杆) GPT-4o / 4o-mini 🌟🌟🌟🌟🌟 行业标准。OpenAI 的 Function Calling 非常成熟,LibreChat 对它的支持也是最完美的。
T1.5 (能用) DeepSeek-V3 (Chat) 🌟🌟🌟 官方 API 支持工具调用,但在复杂场景下参数提取不如 T0 精准。LibreChat 通过 OpenAI 兼容模式可以支持。
T2 (挑剔) Gemini 1.5 Pro/Flash 🌟🌟 支持工具,但 API 格式比较独特。LibreChat 做了适配,但稳定性不如前两者,经常出现 “Fetch Error” 或格式错误。
T3 (不支持) DeepSeek-R1 (Reasoner)
不支持。 这类“深度思考/推理”模型专注于生成思维链(CoT),目前架构上通常屏蔽了外部工具调用,或者因为输出了 <thinking> 标签打乱了工具调用的 JSON 格式。
所以,现在的我尝试使用的Deepseek和Gemini不是这么合适,需要修改一下API接口和模型了。
Pasted image 20260108145400

不过经过尝试,发现Gemini的flash插件勉强可以使用,只不过效果没有这么好,甚至有点笨笨的,似乎是联网功能没有打开。

smithery MCP 插件市场API:177c50e8-db63-43a2-b547-981e645dcdf8

目前为止尝试的插件如下:

Pasted image 20260108173319

还是基本可以模拟Claude Desktop的效果,既然它要收钱,我就自己集成吧,可以自定义API,也可以自定义MCP,挺灵活的,而且模型看下来需要优化一下,ClaudeAPI还是省不了的,这个模型是这方面做的最好的。

这里看到一个Context7插件

Pasted image 20260108173750

如果你是以下情况,强烈建议尝试:

  1. 你经常使用 更新极快 的库(比如 LangChain, Pydantic, Next.js, 或者各种 AI 相关的 SDK)。

  2. 你发现 AI 经常给你写过时的代码(比如用 v1 的写法写 v2 的库)。

  3. 你是一个全栈开发者,经常要现学现卖一个新的框架。

六、Ragflow和LangChain简单了解

LangChain快速上手:
https://reference.langchain.com/v0.3/python/langchain/index.html

Ragflow
https://github.com/infiniflow/ragflow?tab=readme-ov-file

为什么需要Ragflow一个专门存储和检索数据的框架,而不是使用插件,像Obsidian一样,嵌入模型即可?

如果数据在 Obsidian 插件里: 只有当你打开 Obsidian 时,这套知识库才能用。如果你想在 VS Code 里写代码时问一下你的知识库,或者在终端里让 Agent 查一下资料,你做不到。数据被“锁”在 Obsidian 这个软件里了。

如果数据在 RAGFlow 里: RAGFlow 是一个独立的 API 服务。

  • Obsidian 可以调它。
  • 你的 VS Code 插件可以调它。
  • 你的 MCP Server 可以调它。
  • 你的微信机器人可以调它。
  • 你的知识库变成了“中台”,而不是“软件附属品”。

所以对于企业来讲,RAGFLow就像一个数据中台,可以提供相应的API接口来调用,从而打破了各个知识库之前的壁垒。

需要处理大量 PDF、论文、Excel,追求检索高精准度。

RAGFlow的一个特点,就是他的DeepDoc模型技术,会把资料当中的文档提前建立索引,从而把各种类型的文档进行处理,可是插件却只能应付单一格式(markdown)这样的简单情况。

七、批量翻译模型尝试

这里开摆了,明天再做。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 kipleyarch@gmail.com
Obsidian