01月07日
一、今日完成情况
- 导出快速保存推特选中内容到本地的快捷方法或插件
- 手机弹窗软件实现高级模式,使用CMD窗口链接
- iFlow CLI配置一下,能不能使用AI直接修改我的笔记(期望)–差不多配置好LibreChat,算是完成了
- 预定–trae的JSON文件配置,配置MCP服务,看看现在可以配置的JSON来源是什么样的,如何检索这些服务。–明天干,今天来不及了
- 使用快捷方法找到不少于30条中文/英文的推特消息。
- 推特消息是保存了,现在的问题如下:关于特殊的转义符\n这些需要过滤。然后关于英语内容需要翻译为的中文,这个需要使用APi接口或者离线模型,我都打算了解一下。如果使用API接口,我打算使用Gemini,如果是离线模型,看看huggingFace有什么好用的。
- 然后批量对内容进行翻译,并且保存到csv表格当中,实现数据的初步采集。接下来需要对数据进行筛选个过滤,把不符合要求的过滤掉,并且用大模型抽象提取出符合要求的数据,导出关系。 –待完成
- 今晚实现批量翻译,尝试一下。 –待完成
二、今日感悟
- 核心业务数据:
- 今天内容有些散,主要是四大块,第一是手机的root软件cmd控制,第二是简单配置MCP服务,跑历程,第三是Claude Desktop爬取数据,第四是LibreChat环境配置和问题解决,有待开发自定义MCP接口
- 今日工作总结:
- 非常充实,人给我干虚脱了,下次还是收着点,感觉精力确实不太够了
- 明日工作计划:
- 数据集制作方面:
- 批量翻译实现
- 数据清洗与过滤
- MCP技术栈方面
- Trae JSON文件配置
- LibreChat MCP接口开发
- Obsidian嵌入MCP继续探索
- 工位装修的事情
- 显示器需要想办法上下固定,让其可以横移,不会掉下拉
- HDMI连接线想办法更加漂亮一点,可以不这么赤裸裸
- 需要考虑购买一个增高架,因为设备的高度不够。
- 数据集制作方面:
- 今日学习成长:
- 不多说了,技术深度和广度不断优化,这下不是不务正业了吧,干的全是分内的事情。
三、备注
- 无
四、MCP服务接口和教程
这个项目非常完整,包括MCP server来源还有配置教程和协议:
https://github.com/punkpeye/awesome-mcp-servers/tree/main?tab=readme-ov-file#tutorials
这是搭建服务器的教程
https://modelcontextprotocol.io/docs/develop/build-server
Smithery 是一个专门围绕 Model Context Protocol (MCP) 技术构建的平台和中心枢纽
https://smithery.ai/
LibreChat 是目前最强大的开源 Web UI,一个开源的、可以自己部署在本地(Docker)的聊天界面。而且是最接近ChatGPT的,只需要部署完毕,相当于开通了ChatGPT会员,而且还省钱,项目地址
https://github.com/danny-avila/LibreChat
A、Claude Desktop作为客户端–服务器搭建
下面是MCP服务器搭建的例程,我按照教程跑通了,记录一下:
这是官方的环境配置方法:
# Create a new directory for our project
uv init weather
cd weather
# Create virtual environment and activate it
uv venv
source .venv/bin/activate
# Install dependencies
uv add "mcp[cli]" httpx
# Create our server file
touch weather.py
因为考虑到环境的问题,这里官方使用的是最精简的python包管理方法,但是因为个人有conda环境,所以使用conda环境的配置方法,基本类似
conda create -n weather python=3.11
conda activate weather
pip install "mcp[cli]"
pip install httpx
根据教程的示例代码,创建好weather的工作文件夹,导入官方的示例代码。
获取.py文件的路径,还有conda python环境的路径:
which python
获得conda解释器的路径/opt/anaconda3/envs/weather/bin/python
再复制当前.py文件的绝对路径,接下来在Claude Desktop的配置文件进行修改:
trae ~/Library/Application\ Support/Claude/claude_desktop_config.json
这是语法格式:
{
"mcpServers": {
"weather": {
"command": "/opt/anaconda3/envs/weather/bin/python",
"args": [
"/Users/kipley/weather/weather.py"
]
}
}
}
配置完成,打开Claude Desktop客户端,在设置页面进行配置
可以看到,已经在客户端检测到了,打通了整个链路了。因为我的MCP是用python编写的,所以command显示的事python,查看了另外两个,都是node控制,.js文件,也就是JavaScript编写的。
| 服务名称 | 运行语言 | 核心能力 | 典型用法 |
|---|---|---|---|
| Chrome Control | Node.js | 操作浏览器 | “帮我去知乎搜索关于 MCP 的最新文章并总结” |
| Desktop Commander | Node.js | 操作 MacOS 系统 | “帮我在桌面创建一个名为 ‘Project’ 的文件夹并初始化 Git” |
| 现在,在客户端测试一下: |
帮我看一下某个城市现在的天气
trae "/Users/kipley/Library/Application Support/Claude/Claude Extensions/ant.dir.gh.wonderwhy-er.desktopcommandermcp/dist/index.js"
这个方法可以看到Claude自带插件的控制mac系统的软件代码,一点都看不懂,不过代码不多,基本上是调用现有的库还有错误处理, 这个js可能只是一个入口而已。
import { FilteredStdioServerTransport } from './custom-stdio.js';
import { server, flushDeferredMessages } from './server.js';
import { configManager } from './config-manager.js';
import { featureFlagManager } from './utils/feature-flags.js';
import { runSetup } from './npm-scripts/setup.js';
import { runUninstall } from './npm-scripts/uninstall.js';
import { capture } from './utils/capture.js';
import { logToStderr, logger } from './utils/logger.js';
B、 LibreChat作为客户端–服务器搭建(Docker)
1. 环境准备
确保 macOS 已安装以下工具:
- Docker Desktop: 必须处于运行状态 (Running)。
- Git: 用于拉取代码。
2. 安装步骤
打开终端 (Terminal),执行以下命令拉取源码并进入目录:
# 1. 克隆官方仓库
git clone https://github.com/danny-avila/LibreChat.git
# 2. 进入项目目录
cd LibreChat
# 3. 创建基础配置文件
cp .env.example .env
3.高级模型配置 (librechat.yaml)
在根目录新建文件 librechat.yaml,用于自定义模型(如 DeepSeek、OpenRouter)并节省 Token 成本
默认省钱配置方法:
version: 1.0.0
cache: true
endpoints:
custom:
- name: "OpenRouter"
# 替换为你的 OpenRouter Key (支持 DeepSeek/Claude/Gemini)
apiKey: "sk-or-v1-......"
baseURL: "https://openrouter.ai/api/v1"
models:
default: ["deepseek/deepseek-chat", "anthropic/claude-3.5-sonnet"]
fetch: true # 自动获取模型列表
titleConvo: true
titleModel: "deepseek/deepseek-chat" # 使用便宜模型生成标题
summarize: true
summaryModel: "deepseek/deepseek-chat" # 使用便宜模型总结上下文
forcePrompt: false
iconURL: "https://openrouter.ai/icon.png"
# 如果仅使用 DeepSeek 官方 API
# - name: "DeepSeek"
# apiKey: "sk-......"
# baseURL: "https://api.deepseek.com"
# models:
# default: ["deepseek-chat", "deepseek-coder"]
5. 启动服务
在 LibreChat 目录下执行:
git pull
docker compose up -d --build
访问地址: [http://localhost:3080]
停止服务
docker compose down
修改保存文件后,在终端执行以下命令重启容器
docker compose restart
6、进阶配置
修改yaml文件为我的自己AI模型,并且设置api(绝密)
version: 1.0.0
cache: true
endpoints:
# ==========================================
# 通道 1: Google Gemini 官方直连
# ==========================================
google:
apiKey: "AIzaSyAkhD12ZjU7h2t9EfF9B_6a2hCElMXClWw"
models:
default:
- "gemini-1.5-pro-latest" # 综合最强
- "gemini-1.5-flash-latest" # 速度快/长文档
- "gemini-2.0-flash-exp" # 2.0 实验版,目前非常强
fetch: false # Google 官方通常只需手动指定这几个主流即可
titleConvo: true
titleModel: "gemini-1.5-flash-latest"
summarize: true
summaryModel: "gemini-1.5-flash-latest"
custom:
# ==========================================
# 通道 2: DeepSeek 官方直连
# ==========================================
- name: "DeepSeek Official"
apiKey: "sk-c07351b4337440a2b0bfb51320e3ae3c"
baseURL: "https://api.deepseek.com"
models:
default:
- "deepseek-chat" # 即 V3 模型
- "deepseek-reasoner" # 即 R1 深度思考模型
fetch: false # 官方目前就这俩主力,手动写死更稳
titleConvo: true
titleModel: "deepseek-chat"
summarize: true
summaryModel: "deepseek-chat"
iconURL: "https://chat.deepseek.com/favicon.svg" # 给个官方图标更好看
# ==========================================
# 通道 3: OpenRouter (仅作为补充库)
# ==========================================
- name: "OpenRouter (GPT/Claude)"
apiKey: "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"
baseURL: "https://openrouter.ai/api/v1"
models:
default:
# 既然 DeepSeek 和 Gemini 都有亲生父亲了,这里只留 OpenAI 和 Claude
- "openai/gpt-4o"
- "openai/gpt-4o-mini"
- "openai/o1-preview"
- "anthropic/claude-3.5-sonnet"
- "anthropic/claude-3-opus"
- "meta-llama/llama-3.3-70b-instruct" # 顺便加个 Meta 最强开源
fetch: true
forcePrompt: false
iconURL: "https://openrouter.ai/icon.png"
保存文件之后,重启Docker发现并没有生效:
需要修改这个文件,docker-compose.override.yml,如果没有在 LibreChat 目录下,则单独创建一个这样的目录:
version: '3.4'
services:
api:
volumes:
- ./librechat.yaml:/app/librechat.yaml
最后彻底重启服务:
# 1. 停止并移除旧容器
docker compose down
# 2. 重新启动(这时候它会挂载你的新配置文件)
docker compose up -d
再次访问,发现相关的AI模型已经被加入了,下面我尝试进阶MCP个性化操作:![]()
中间遇到了很多问题,这是日志:
LibreChat | 2026-01-07 14:59:59 error: Failed to fetch models from openAI API The server responded with status 401: Request failed with status code 401
LibreChat | 2026-01-07 14:59:59 error: Failed to fetch models from openAI API The server responded with status 401: Request failed with status code 401
LibreChat | 2026-01-07 15:00:00 error: Failed to fetch models from openAI API The server responded with status 401: Request failed with status code 401
LibreChat | 2026-01-07 15:01:22 _warn_: _[AgentStream] Job not found for streamId: 10afb27b-5e1d-4de7-9eb1-8cd7d6bb2fc9_
我一开始以为是网络的问题,后面又觉得是Gemini的API有问题,进行python单独测试之后,发现没问题,因此只能是配置文件的问题,我下面把文件放到这里,以免下次出错无据可依。
网络配置
# 代理配置:指向 Mac 宿主机的 Clash 端口
HTTP_PROXY=http://host.docker.internal:7897
HTTPS_PROXY=http://host.docker.internal:7897
# 服务器基础设置
HOST=localhost
PORT=3080
DOMAIN_CLIENT=http://localhost:3080
DOMAIN_SERVER=http://localhost:3080
模型通道管理
# 仅开启 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
API静态定义
# Google Gemini 官方 Key
GOOGLE_KEY=AIzaSyAkhD12ZjU7h2t9EfF9B_6a2hCElMXClWw
# OpenAI 占位符(防止系统初始化报错)
OPENAI_API_KEY=sk-123456789
记住这些配置,下次出现问题,照抄即可。
调试的时候指令请查看如下:
docker compose up -d
docker compose logs -f api
docker compose down
docker compose up -d --force-recreate
简略的写到这里吧,期间调试了很久,找问题是最麻烦的,幸好最后解决了,耐心很重要,要是之前的自己早就放弃了,现在经历这样的事情多了,心态反而变好了。
五、markdown 小技巧
这里添加一个小技巧,就是markdown的语法,在编写方面有如下五个类别,可以按照需要编写,
Note> [!NOTE]蓝色竖线,信息图标
Tip> [!TIP]绿色竖线,灯泡图标
Important> [!IMPORTANT]紫色竖线,感叹号图标
Warning> [!WARNING]黄色竖线,警告图标
Caution> [!CAUTION]红色竖线,危险图标
[!note]
Glama Chat is a multi-modal AI client with MCP support & AI gateway.
[!tip]
Glama Chat is a multi-modal AI client with MCP support & AI gateway.
[!important]
Glama Chat is a multi-modal AI client with MCP support & AI gateway.
[!warning]
Glama Chat is a multi-modal AI client with MCP support & AI gateway.
[!caution]
Glama Chat is a multi-modal AI client with MCP support & AI gateway.
六、Shizuku配置
背景
我之前安装了一个GKD软件,这个软件用来屏蔽其他软件开机广告,帮我节约时间。GKD启动有两种方式,一个是临时手动授权,还有一个是Shizuku永久授权。
当时配置的时候,因为时间有限,所以是临时手动授权。可是问题是,每次我关闭这个软件的线程的时候,临时手动授权就失效了,又要重新配置了,反而增加了麻烦,因此我今天尝试,永久授权,以免后顾之忧。
过程
永久授权是需要这个SHizuku软件的,众所周知,现在的安卓系统都是无法开启管理员模式的,因此,这个软件的作用,就是很大程度上,增加手机的权限,从而趋近于有管理员模式。
所以我在github上安装了这个软件的apk文件,并且安装。
安装好之后,软件需要和电脑配对,然后通过无线的方法连接,在电脑cmd终端使用adb指令进行授权,只有授权之后,才能正常启动。
于是我按照这个教程和电脑同一局域网实现adb无线连接,然后输入配对码:
adb pair <IP>:<PORT>
显示连接成功,接下来输入Shizuku软件的adb授权指令即可:
2742889857: 01-07 16:13:54 adb shell /data/app/~~X4DpCyZD6mjAUI3X68320w==/moe.shizuku.privileged.api-Ghv71HUmgqMUMoencorSbQ==/lib/arm64/libshizuku.so 2742889857: 01-07 16:18:34 [文件]
现在,只需要在这个软件当中,给其他的软件高级权限,最后就实现了GKD软件的永久授权,大功告成。
不过需要注意的是,SHizuku服务关闭之后,再次打开需要无线连接电脑,再次配对才行,还是比较麻烦的,现在记录下教程,未来再次链接的时候,可以抄答案,防止遗忘。
七、Claude Desktop 推特检索帖子脚本手册
步骤 1:启动 Chrome
cd ~/Desktop/Data
./start_chrome_debug.sh
步骤 2:登录 X (Twitter)
在打开的浏览器中登录你的账号
步骤 3:修改配置(可选)
编辑 twitter_scraper.py 的第 205-215 行:
python
KEYWORD = "你的关键词" # 修改这里
SCROLL_TIMES = 20 # 可选
LANGUAGES = ['en', 'zh'] # 只要英文和中文
步骤 4:运行脚本
cd ~/Desktop/Data
python3 twitter_scraper.py
步骤 5:查看结果
cat tweets_data.json
📊 语言筛选配置示例
python
# 只要英文
LANGUAGES = ['en']
# 只要中文
LANGUAGES = ['zh']
# 英文和中文(包括混合)
LANGUAGES = ['en', 'zh', 'mixed']
# 只要纯语言(排除混合)
LANGUAGES = ['en', 'zh']
⚡ 配置示例(来自 CONFIG_EXAMPLES.md)
抓取英文 AI 内容:
python
KEYWORD = "artificial intelligence"
SCROLL_TIMES = 25
LANGUAGES = ['en']
抓取中文科技资讯:
python
KEYWORD = "科技"
SCROLL_TIMES = 20
LANGUAGES = ['zh']
抓取中英文编程内容:
python
KEYWORD = "programming"
SCROLL_TIMES = 30
LANGUAGES = ['en', 'zh', 'mixed']
📍 文件位置
- 所有脚本:
~/Desktop/Data/ - 输出数据:
~/Desktop/Data/tweets_data.json
⚠️ 重要提醒
- 修改关键词:直接编辑
twitter_scraper.py第 205 行 - 语言筛选:修改第 213 行的
LANGUAGES列表 - 数据保存:每次运行会覆盖
tweets_data.json - 运行频率:建议间隔 10-15 分钟,避免被限制
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 kipleyarch@gmail.com