01月15日
一、今日完成情况
- 如何搭建AI 工作流批量的实现PDF文章的翻译,参考这个项目 https://www.bilibili.com/video/BV1MHk9Y2Ef7 –已完成,Docker跑一下很方便
- AI B站视频内容总结解决问题
- Gemini联网问题,尝试GLM新模型调用。 –未完成
- whisper使用API调用而不是本地模型调用。 –已完成
- 网页项目配置到Ubuntu,mac局域网登录尝试 –已完成
- 网页项目配置到JD云服务器,使用服务器IP登录 –已出错 –已完成
- 配置Obsidian的仓库图片批量管理功能插件 https://github.com/AlbusGuo/albus-imagine?tab=readme-ov-file 仓库功能,可以对笔记软件根据目录、修改时间等对图片进行批量检索和定位。
二、今日感悟
- 核心业务数据:
- 系统网页成型,局域网公网测试
- PDF翻译搭建,实现自定义不需要到处找
- 今日工作总结:
- 今天就是不断碰壁的过程,不过明天我需要尝试系统性学习配置新东西了,高并发多线程的思想Java我是早点要学习的,所以我始终知道学习什么东西有作用,这样才能学有所用。
- 明日工作计划:
- 跑一下rag项目把,顺便熟悉一下jubter notebook的环境
- 今日学习成长:
- 耐心和节奏才是最重要的,而不是追求速度。
三、备注
- 无
四、PDF翻译
https://github.com/PDFMathTranslate/PDFMathTranslate
Docker的快速启动方式(Docker指令):
docker pull byaidu/pdf2zh
docker run -d -p 7860:7860 byaidu/pdf2zh
查看正在运行的容器
docker ps
查看所有容器,包括未启动的:
docker ps -a
停止容器:
docker stop <容器ID或名字>
再次启动 (已停止的) 容器:
docker start <容器ID或名字>
五、AI B站视频总结项目配置
1、siliconflow接口
阿里研制的免费模型:
FunAudioLLM/SenseVoiceSmall,SenseVoice 是一个具有多种语音理解能力的语音基础模型,包括自动语音识别(ASR)、口语语言识别(LID)、语音情感识别(SER)和音频事件检测(AED)。SenseVoice-Small 模型采用非自回归端到端框架,具有非常低的推理延迟。它支持 50 多种语言的多语言语音识别,在中文和粤语识别方面表现优于 Whisper 模型。此外,它还具有出色的情感识别和音频事件检测能力。该模型处理 10 秒音频仅需 70 毫秒,比 Whisper-Large 快 15 倍。
https://api.siliconflow.cn/v1/audio/transcriptions
调用了siliconflow的API(语法如下):
curl --request POST \
--url https://api.siliconflow.cn/v1/audio/transcriptions \
-H "Authorization: Bearer <YOUR_API_KEY>" \
-F "file=@path/to/your/audio.mp3" \
-F "model=FunAudioLLM/SenseVoiceSmall"
核心代码如下:
transcription = self.client.audio.transcriptions.create(
model=self.model_name,
file=audio_file
)
继续代码修改,增加用户体验感,加入时间估计方法:
采集音频处理时间:
- 在
module_audio_extractor.py中增加了获取音频时长的方法get_audio_duration(使用ffprobe)。 - 修改了
extract_audio方法,使其返回音频文件路径的同时也返回音频时长。
- 在
预估处理时间:
- 在
main.py中增加了_load_processing_stats、_save_processing_stats和_estimate_processing_time方法。 - 程序会读取
processing_stats.json文件(自动创建),根据历史数据(音频时长与处理耗时的比例)来预估当前任务的处理时间,并在终端显示。 - 在音频提取完成后,程序会记录开始时间;在笔记保存完成后,记录结束时间,并将
(音频时长, 实际处理耗时)保存到统计文件中。
- 在
自动删除音频文件:
- 在
main.py的流程最后(保存笔记后),增加了自动删除音频文件的逻辑,以释放磁盘空间。
- 在
使用方法: 像往常一样运行命令即可,程序会自动收集数据并在后续运行中提供时间预估。
python main.py <B站视频URL>
2、网页封装
这一步全程AI帮我实现的,效果非常好,网页这部分的逻辑不是我研究的重点,直接修改好代码,我粗略审核一下,就可以启动了,在本地运行效果如图所示:
我直接把项目移动到Ubuntu游戏本上面,然后让AI帮我编写.sh环境配置脚本,我连接游戏本,配置好脚本环境之后,运行,然后再mac网页端访问,没有任何问题:
查看局域网IP:
运行项目:
3、部署到云服务器
开放端口:
# 检查 ufw 状态
sudo ufw status
# 允许 5001 端口流量
sudo ufw allow 5001/tcp
# 重新加载配置
sudo ufw reload
在本地端口移动文件夹到云服务主目录当中,我这里单独配置过端口是22022,所以需要专门设置好端口才行:
scp -P 22022 -r /Users/kipley/Documents/code/Python/BiliSummarize/ root@117.72.201.198:/
然后登录云服务器,安装基本环境:
sudo apt-get update
sudo apt install python3-pip
pip install -r requirements_web.txt
准备运行项目环境配置.sh文件:![]()
给.sh赋予权限且运行:
chmod +x deploy_linux.sh
./deploy_linux.sh
安装完毕:![]()
啊偶,发现端口被占用了
root@lavm-l0dlwdvvxv:~/BiliSummarize# python web_app.py
File "web_app.py", line 4
SyntaxError: Non-ASCII character '\xe5' in file web_app.py on line 5, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
root@lavm-l0dlwdvvxv:~/BiliSummarize# python3 web_app.py
🚀 BiliSummarize Web App 启动中...
📍 访问地址: http://localhost:5001
📊 API 地址: http://localhost:5001/api/tasks
* Serving Flask app 'web_app'
* Debug mode: on
Address already in use
Port 5001 is in use by another program. Either identify and stop that program, or start the server with a different port.
查看什么进程占用了端口,并且关闭它:
lsof -i :5001
pkill gunicorn
重新启动:
python3 web_app.py
访问公网IP,成功:
开始解析数据,突然就报错了,好烦:
[诊断] 执行命令中 (正在下载并转换为 MP3)...
[yt-dlp 错误]:
ERROR: [BiliBili] 1XBi5BJEoE: Unable to download webpage: HTTP Error 412: Precondition Failed (caused by <HTTPError 412: Precondition Failed>)
❌ yt-dlp 执行失败
218.194.44.59 - - [15/Jan/2026 16:16:44] "GET /status/83115105-c008-4c92-b032-4d2ab7beab86 HTTP/1.1" 200 -
218.194.44.59 - - [15/Jan/2026 16:17:10] "GET /status/83115105-c008-4c92-b032-4d2ab7beab86 HTTP/1.1" 200 -
218.194.44.59 - - [15/Jan/2026 16:17:40] "POST /submit HTTP/1.1" 200 -
音频将保存到: /root/BiliSummarize/downloads/audio
▶️ 初始化语音转文本模块,选用模型: FunAudioLLM/SenseVoiceSmall...
STT 模型属于提供商: 'siliconflow'
SiliconFlow 客户端初始化成功。
▶️ 初始化文本总结模块,选用模型: deepseek-chat...
模型属于提供商: 'deepseek'
DeepSeek 客户端初始化成功。
▶️ 初始化笔记生成模块。
▶️ 正在从 https://www.bilibili.com/video/BV133rhBrEyB?spm_id_from=333.1007.tianma.6-1-19.click 提取音频...
4、问题解决
我稍微修改一下数据包头,模拟是浏览器的发送之后,服务器报错还是412,所以给我整不会了。
初始化笔记生成模块。
▶️ 正在从 https://www.bilibili.com/video/BV133rhBrEyB?spm_id_from=333.1007.tianma.6-1-19.click 提取音频...
[诊断] 执行命令中 (正在下载并转换为 MP3)...
[yt-dlp 错误]:
ERROR: [BiliBili] 133rhBrEyB: Unable to download webpage: HTTP Error 412: Precondition Failed (caused by <HTTPError 412: Precondition Failed>)
❌ yt-dlp 执行失败
218.194.44.59 - - [15/Jan/2026 16:23:59] "GET /status/60b0689a-af8b-470b-a689-6e71b1cdc629 HTTP/1.1" 200 -
147.185.132.67 - - [15/Jan/2026 16:33:28] code 400, message Bad request version ('À\x13À')
修改了请求头(Referer 和 User-Agent)后依然报 412 错误,这说明 B 站已经完全锁定了你的云服务器公网 IP。
在 B 站的风控逻辑中,云服务商(如腾讯云、阿里云等)的机房 IP 权重非常低,一旦被判定为爬虫,单纯靠模拟浏览器头已经无法绕过。
问题是这样的,B站触发了风控,对于我的云服务的审核是非常严格的(防止爬虫),这就导致我的这个yt-dlp音频获取方法失效了。
问题解决尝试:
要是没法让服务器来执行我的B站内容总结项目,那这个项目的意义就没有这么大了,所以这个环节我尽量尝试打通。
既然只是这个部分出现问题,我调试的时候不需要整个代码调试,只需要使用yt-dlp指令快速调试,查看是否可以拉取资源就可以了:
# 直接在服务器终端输入(带上代理和UA)
yt-dlp --proxy "http://127.0.0.1:7897" \
--user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" \
--referer "https://www.bilibili.com/" \
--add-header "Cookie: SESSDATA=你的TOKEN" \
-v "https://www.bilibili.com/video/BV133rhBrEyB"
方法1:
使用Chrome插件保存我的全部cookie,我在浏览器的调试模式当中获得的cookie其实是不完整的,不完整在于,有时候仅仅传递 SESSDATA 这一项是不够的,B 站会检查全套 Cookie 关联性(如 buvid3, b_lsid 等)。所以,我使用插件拉出了和cookie相关的文件如下:
- 在本地电脑安装插件:安装 Chrome 插件
Get cookies.txt LOCALLY。 - 导出文件:在 B 站页面点击插件,导出
cookies.txt。 - 上传服务器:把文件传到你的项目根目录
/root/folder/cookies.txt。
yt-dlp -v \
--cookies ~/folder/cookies.txt \
--user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36" \
--referer "https://www.bilibili.com/" \
--client-certificate "" \
--impersonate "chrome" \
"https://www.bilibili.com/video/BV133rhBrEyB"
依然显示报错,保存信息如下:
Traceback (most recent call last):
File "/usr/local/bin/yt-dlp", line 8, in <module>
sys.exit(main())
File "/usr/local/lib/python3.10/dist-packages/yt_dlp/__init__.py", line 1079, in main
_exit(*variadic(_real_main(argv)))
File "/usr/local/lib/python3.10/dist-packages/yt_dlp/__init__.py", line 981, in _real_main
with YoutubeDL(ydl_opts) as ydl:
File "/usr/local/lib/python3.10/dist-packages/yt_dlp/YoutubeDL.py", line 764, in __init__
raise YoutubeDLError(
yt_dlp.utils.YoutubeDLError: Impersonate target "chrome" is not available. Use --list-impersonate-targets to see available targets. You may be missing dependencies required to support this target.
说明模拟电脑浏览器的方法失败了,现在不清楚是浏览器的配置问题(版本)还是这个方法模拟本来就不可以了。
方法2:
据说使用手机模拟,风控的管制会少很多,所以现在采用手机模拟的方法,修改包头如下:
yt-dlp -v \
--cookies ~/folder/cookies.txt \
--extractor-args "bilibili:format=mp4" \
--user-agent "Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Mobile/15E148 Safari/604.1" \
"https://www.bilibili.com/video/BV133rhBrEyB"
[BiliBili] Extracting URL: https://www.bilibili.com/video/BV133rhBrEyB
[BiliBili] 133rhBrEyB: Downloading webpage
[generic] Extracting URL: https://m.bilibili.com/video/BV133rhBrEyB
[generic] BV133rhBrEyB: Downloading webpage
WARNING: [generic] Falling back on generic information extractor
[generic] BV133rhBrEyB: Extracting information
[debug] Looking for embeds
ERROR: Unsupported URL: https://m.bilibili.com/video/BV133rhBrEyB
Traceback (most recent call last):
File "/usr/local/lib/python3.10/dist-packages/yt_dlp/YoutubeDL.py", line 1696, in wrapper
return func(self, *args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/yt_dlp/YoutubeDL.py", line 1831, in __extract_info
ie_result = ie.extract(url)
File "/usr/local/lib/python3.10/dist-packages/yt_dlp/extractor/common.py", line 762, in extract
ie_result = self._real_extract(url)
File "/usr/local/lib/python3.10/dist-packages/yt_dlp/extractor/generic.py", line 980, in _real_extract
raise UnsupportedError(url)
yt_dlp.utils.UnsupportedError: Unsupported URL: https://m.bilibili.com/video/BV133rhBrEyB
发现使用手机模拟,这个链接会自动更改,并且无法识别,所以手机模拟行不通,尝试新方法。
方法3:
因为使用电脑浏览器包头方法显示是版本问题,所以我尝试修改浏览器版本,看看能不能躲过风控,现在尝试curl_cffi这个库:
yt-dlp --list-impersonate-targets
此指令,查看可用的浏览器,发现均不可以使用:
[info] Available impersonate targets
Client OS Source
--------------------------------------------
Tor - curl_cffi>=0.11 (unavailable)
Edge - curl_cffi (unavailable)
Firefox - curl_cffi>=0.10 (unavailable)
Safari - curl_cffi (unavailable)
Chrome - curl_cffi (unavailable)
我尝试了很多方法,打算更新这个包,让浏览器可以变成available,可是都失败了,所以此方法无果。
方法4:
既然 yt-dlp 无法自动通过 curl_cffi 绕过,我们可以换个思路:既然你服务器上无法模拟指纹,那我们就把指纹“固定”在数据包里送过去。
B 站最近加强了对 w_rid 和 w_ts 的校验。如果这些动态参数对不上,即便有 SESSDATA 也会 412。
请尝试下面这个完全不依赖 impersonate 的“深度欺骗”指令:
yt-dlp -v \
--cookies ~/folder/cookies.txt \
--user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" \
--referer "https://www.bilibili.com/video/BV1Ydv8BFEWD/" \
--add-header "Sec-Ch-Ua:\"Not_A Brand\";v=\"8\", \"Chromium\";v=\"120\", \"Google Chrome\";v=\"120\"" \
--add-header "Sec-Ch-Ua-Mobile:?0" \
--add-header "Sec-Ch-Ua-Platform:\"Windows\"" \
--add-header "Sec-Fetch-Dest:document" \
--add-header "Sec-Fetch-Mode:navigate" \
--add-header "Sec-Fetch-Site:same-origin" \
--add-header "Sec-Fetch-User:?1" \
"https://www.bilibili.com/video/BV1Ydv8BFEWD"
这一串参数的作用是: 强行在普通的 Python 请求里塞进只有现代浏览器(Chrome 120+)才会发送的 Sec- 系列属性。B 站的 WAF 防火墙经常通过检查这些 Header 的存在来判断是否为真实浏览器。
因为这个指令只能是高级浏览器版本才能模拟出来的,所以我成功绕过了B站的风控,日志如下:
[BiliBili] Extracting URL: https://www.bilibili.com/video/BV1Ydv8BFEWD
[BiliBili] 1Ydv8BFEWD: Downloading webpage
[BiliBili] BV1Ydv8BFEWD: Extracting videos in anthology
[BiliBili] Format(s) 1080P 高码率 are missing; you have to become a premium member to download them. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies
[BiliBili] 115807266801084: Extracting chapters
[debug] Formats sorted by: hasvid, ie_pref, lang, quality, res, fps, hdr:12(7), vcodec, channels, acodec, size, br, asr, proto, vext, aext, hasaud, source, id
[debug] Default format spec: bestvideo*+bestaudio/best
[info] BV1Ydv8BFEWD: Downloading 1 format(s): 100026+30280
[debug] Invoking http downloader on "https://upos-sz-mirrorcos.bilivideo.com/upgcxcode/21/63/35073426321/35073426321-1-100026.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&trid=c9c16a53cfeb4f46a2615621f493ac0u&mid=1920949412&deadline=1768484795&os=cosbv&og=cos&platform=pc&nbs=1&oi=1967704518&gen=playurlv3&upsig=8a00586bd143b0f110911b2ce1a27e5e&uparams=e,uipk,trid,mid,deadline,os,og,platform,nbs,oi,gen&bvc=vod&nettype=0&bw=524595&f=u_0_0&qn_dyeid=d356500d4ce0d50c00bffa796968d39a&agrr=0&buvid=A6CD86A0-BB47-E998-D11C-29C60E7D0A2F94130infoc&build=0&dl=0&orderid=0,3"
[download] Destination: 如何比大多数人更清晰地表达你的想法 [BV1Ydv8BFEWD].f100026.mp4
[download] 100% of 65.73MiB in 00:00:38 at 1.70MiB/s
[debug] Invoking http downloader on "https://upos-sz-mirrorcos.bilivideo.com/upgcxcode/21/63/35073426321/35073426321-1-30280.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&nbs=1&oi=1967704518&mid=1920949412&gen=playurlv3&og=cos&deadline=1768484795&os=cosbv&uipk=5&platform=pc&trid=c9c16a53cfeb4f46a2615621f493ac0u&upsig=05c87426b63818ec9c840d24249a315e&uparams=e,nbs,oi,mid,gen,og,deadline,os,uipk,platform,trid&bvc=vod&nettype=0&bw=125389&f=u_0_0&qn_dyeid=d356500d4ce0d50c00bffa796968d39a&agrr=0&buvid=A6CD86A0-BB47-E998-D11C-29C60E7D0A2F94130infoc&build=0&dl=0&orderid=0,3"
[download] Destination: 如何比大多数人更清晰地表达你的想法 [BV1Ydv8BFEWD].f30280.m4a
[download] 100% of 15.71MiB in 00:00:09 at 1.69MiB/s
[Merger] Merging formats into "如何比大多数人更清晰地表达你的想法 [BV1Ydv8BFEWD].mp4"
我成功拉取了B站的视频和音频,至此,所有问题都解决了,我只需要使用python代码对这个指令的原理进行封装即可,现在开始编辑python原来的代码。
5、代码修改
只需要修改此代码逻辑即可,把Command进行打包:
# 【关键修改2】构建深度伪装命令
command = [
'yt-dlp',
'--ignore-config',
'--no-cache-dir',
'-f', 'bestaudio/best',
'-x', # 提取音频
'--audio-format', 'mp3', # 强制转换为 mp3
'--audio-quality', '64K', # 压缩比特率,加快处理速度
'-o', output_template,
'--print', 'after_move:filepath',
'--no-progress',
# 基础伪装
'--user-agent', "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
'--referer', "https://www.bilibili.com/",
# 深度欺骗 Header (让 Python 请求看起来像 Chrome)
'--add-header', 'Sec-Ch-Ua:"Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"',
'--add-header', 'Sec-Ch-Ua-Mobile:?0',
'--add-header', 'Sec-Ch-Ua-Platform:"Windows"',
'--add-header', 'Sec-Fetch-Dest:document',
'--add-header', 'Sec-Fetch-Mode:navigate',
'--add-header', 'Sec-Fetch-Site:same-origin',
'--add-header', 'Sec-Fetch-User:?1'
]
直接访问公用IP,还是按照刚才的方法一样,输入自己的token,然后输入B站链接,开始解析,解析过程当中我的心跳加速,害怕再次报错,万幸的事,这次没有,成功把笔记解析出来了,效果如下:
服务器方面网络正常,没有任何报错:
音频将保存到: /root/BiliSummarize/downloads/audio
▶️ 初始化语音转文本模块,选用模型: FunAudioLLM/SenseVoiceSmall...
STT 模型属于提供商: 'siliconflow'
SiliconFlow 客户端初始化成功。
▶️ 初始化文本总结模块,选用模型: deepseek-chat...
模型属于提供商: 'deepseek'
DeepSeek 客户端初始化成功。
▶️ 初始化笔记生成模块。
▶️ 正在从 https://www.bilibili.com/video/BV1rxvWBxEXW?spm_id_from=333.1007.tianma.7-2-24.click 提取音频...
ℹ️ 检测到 cookies.txt,将使用完整 Cookie 绕过风控。
[诊断] 执行命令中 (深度伪装下载模式)...
218.194.44.59 - - [15/Jan/2026 20:11:55] "GET /status/70607f9d-1618-464b-ad4d-75a2e6aca6bd HTTP/1.1" 200 -
218.194.44.59 - - [15/Jan/2026 20:11:57] "GET /status/70607f9d-1618-464b-ad4d-75a2e6aca6bd HTTP/1.1" 200 -
218.194.44.59 - - [15/Jan/2026 20:11:59] "GET /status/70607f9d-1618-464b-ad4d-75a2e6aca6bd HTTP/1.1" 200 -
218.194.44.59 - - [15/Jan/2026 20:12:01] "GET /status/70607f9d-1618-464b-ad4d-75a2e6aca6bd HTTP/1.1" 200 -
218.194.44.59 - - [15/Jan/2026 20:12:03] "GET /status/70607f9d-1618-464b-ad4d-75a2e6aca6bd HTTP/1.1" 200 -
✅ 音频提取成功!
文件: /root/BiliSummarize/downloads/audio/BV1rxvWBxEXW.mp3
时长: 393.33秒
▶️ 正在上传并转录音频: BV1rxvWBxEXW.mp3...
☁️ 正在请求云端接口 (SenseVoice),速度通常很快...
218.194.44.59 - - [15/Jan/2026 20:12:05] "GET /status/70607f9d-1618-464b-ad4d-75a2e6aca6bd HTTP/1.1" 200 -
218.194.44.59 - - [15/Jan/2026 20:12:07] "GET /status/70607f9d-1618-464b-ad4d-75a2e6aca6bd HTTP/1.1" 200 -
218.194.44.59 - - [15/Jan/2026 20:12:09] "GET /status/70607f9d-1618-464b-ad4d-75a2e6aca6bd HTTP/1.1" 200 -
218.194.44.59 - - [15/Jan/2026 20:12:11] "GET /status/70607f9d-1618-464b-ad4d-75a2e6aca6bd HTTP/1.1" 200 -
218.194.44.59 - - [15/Jan/2026 20:12:14] "GET /status/70607f9d-1618-464b-ad4d-75a2e6aca6bd HTTP/1.1" 200 -
218.194.44.59 - - [15/Jan/2026 20:12:15] "GET /status/70607f9d-1618-464b-ad4d-75a2e6aca6bd HTTP/1.1" 200 -
218.194.44.59 - - [15/Jan/2026 20:12:17] "GET /status/70607f9d-1618-464b-ad4d-75a2e6aca6bd HTTP/1.1" 200 -
218.194.44.59 - - [15/Jan/2026 20:12:19] "GET /status/70607f9d-1618-464b-ad4d-75a2e6aca6bd HTTP/1.1" 200 -
✅ 音频转录成功!
▶️ 正在将摘要升华为结构化笔记...
在手机端进行尝试,依然没有任何问题,我太开心了:
7、项目总结:
当一个客户端连接并且分析笔记的时候,不可以有其他客户端发送指令,不然就会发生304的情况,所以说,这是我未来工作的方向,就是高并发,因为现在我只有一个线程来处理这些请求,而要真正可以用的话,至少多个客户端使用,我的服务器都可以响应过来,Java刚好可是实现这一点,这就是新的知识点了,不是今天的工作内容。
总体来说,打通了各个环节,一直在试错和解决问题,对于动手实践能力的提升是非常有好处的,还有一个就是,这个工具肉眼可见对我是有帮助的,我只是喜欢做能够满足需求的事情,以技术作为工具而已。
六、半月工作总结
好的,根据您在1月份上半月的每日笔记,我为您梳理了这段时间的学习情况,并提供了一些建议,希望能帮助您更有条理地推进工作。
2026年1月上半月学习情况总结
总的来说,这半个月是您技术探索和实践能力飞速提升的时期。您不仅在宏观概念上深入学习了AI前沿技术,更重要的是,您展现了极强的动手能力,将想法迅速落地为具体项目和高效的工作流。
您的学习和工作主要围绕以下几个核心展开:
1. 核心项目成果:从理论到落地
- AI B站视频总结系统 (主要成就): 这是您这半个月最亮眼的成果。您独立完成了从项目构思、技术选型(
yt-dlp,whisper, LangChain)到编码实现、问题排查(如代理问题、库版本问题)的全过程。最终不仅成功运行,还形成了标准化的笔记输出格式,记录在 [[2026-01-14]] 中。这充分证明了您具备端到端的项目交付能力。 - 个人AI工作流搭建: 您成功在本地部署了 LibreChat,并深度配置了多种大模型(Gemini, DeepSeek, Claude),解决了网络、环境配置等一系列复杂问题。这为您后续的AI Agent开发和实验打下了坚实的基础,详见 [[2026-01-08]] 和 [[2026-01-07]]。
2. 关键技术栈探索:深度与广度兼备
- AI核心概念深入理解: 您系统性地学习并用自己的语言总结了 Agent、RAG、MCP 和知识图谱等核心概念,并理解了它们之间的递进关系,记录在 [[2026-01-13]]。这表明您不满足于只当“调包侠”,而是在构建自己的知识体系。
- MCP (模型上下文协议) 的探索: 您从用户(Claude Desktop)、配置(JSON)、开发(Python Server)三个层面理解并实践了MCP,这是非常前沿且有价值的技术方向。
- LangChain 快速上手: 您已经成功跑通了 LangChain 的基础代码,并理解了其核心组件和LCEL的编程思想,为后续构建更复杂的AI应用铺平了道路([[2026-01-12]])。
3. 工具链与效率提升:工欲善其事,必先利其器
- 系统与网络能力: 您独立解决了VPS服务器的多次故障,并成功配置了高阶的反向SSH隧道,实现了随时随地远程访问内网电脑,这是一项非常实用的DevOps技能([[2026-01-04]])。
- 自动化脚本: 您利用AI编写并实践了多个自动化脚本,如文件整理、Obsidian笔记分析等,将AI真正融入了日常工作流,提升了个人效率。
- 软件环境配置: 您熟练配置了 VSCode、Obsidian AI 插件、Alfred 等一系列生产力工具,并对 mitmproxy、Proxifier 等网络工具有了深入的了解和实践。
4. 个人生活与思考
- 您不仅关注技术,也注重生活品质(如制定衣物整理计划)和深度思考(撰写了关于“上岸与嫁人”、“工作与自驱力”等文章),展现了良好的平衡能力。
给您的相关建议
您目前的状态非常好,充满了探索精神和强大的执行力。但正如您在 [[2026-01-14]] 中提到的,有时会感觉“搞得事情不太专一”。为了让您的工作更有头绪,避免精力分散,我提出以下几点建议:
1. 确立一个核心项目作为“主线任务”
- 您已经有了“B站视频总结”这个成功的项目。接下来可以将其作为主干进行深化。例如:
- 产品化: 将其包装成一个可以部署到服务器的前端应用(您已有此计划)。
- 功能扩展: 增加对YouTube、本地视频等更多来源的支持。
- Agent化: 将这个总结能力封装成一个MCP工具,集成到您的LibreChat中。这样您就可以在聊天时直接说:“
@BilibiliSummarizer帮我总结一下这个视频”,实现AI工作流的闭环。
2. 将“碎片化学习”转为“项目驱动学习”
- 您计划学习Java,但感觉进度不快。可以尝试将它与您的AI项目结合。例如,设定一个目标:“用Java写一个简单的后端服务,来接收B站URL,并调用您现有的Python总结脚本”。这样学习Java就有了明确的目标和即时反馈,而不是停留在看语法。
3. 建立“技术债”清理清单
- 您在探索过程中遇到了很多问题并解决了它们(如代理配置、API Key管理、LangChain库升级)。建议您在Obsidian中创建一个名为
[[技术配置手册]]的笔记。 - 将这些解决方案(如
proxy_on/off函数、LibreChat的.env关键配置、SSH连接别名等)标准化、文档化。这不仅能备忘,未来在搭建新项目时,可以直接“复制粘贴”,极大节约时间。
4. 设定“理论学习日”和“动手实践日”
- 您目前宏观理论和微观实践结合得很好。可以尝试每周安排1-2天专注于理论学习(如深入LangChain文档、学习一篇关于RAG的论文),其余时间则全力投入到核心项目的编码和实现中。这样既能保证知识深度,又能确保项目进度,让您更有成就感和方向感。
总而言之,您上半月的学习成果斐然。现在需要做的,是在众多可能性中选择一个方向进行深耕,将您的各项技能串联起来,打造一个更完整、更强大的个人AI系统。继续保持这股冲劲,您会取得更大的进步!
七、显卡修理视频总结(学习新概念)
摘要
本期视频中,一位视频作者接到了一张客户回收的RTX 5090显卡,该卡价值1.8万元,但存在间歇性花屏、无法点亮等不稳定问题。经过反复测试和排查,发现显卡的核心和显存都存在问题,特别是核心下方残留的导热硅脂和严重氧化的PCB板。作者最终决定进行板级维修,拆卸所有显存和核心进行清洁、重置,并将所有元件移植到一块新的PCB板上,最终成功修复了显卡,并通过了各项压力测试。
亮点
- 🤔 客户描述显卡能正常点亮,但开机用一会儿就花屏,之前尝试更换散热后故障依旧,显示出显卡存在不稳定性 [00:00:36]。
- 💻 在初期测试中,显卡在作者的老电脑上偶尔蓝屏或无法复现花屏问题,但在更换到高端平台后,显卡立即出现花屏,表明其间歇性故障的特性 [00:03:00]。
- 🔍 经过显存超频测试,发现C0显存报错,初步怀疑是显存问题,但由于显卡的不稳定性,难以精准定位故障根源,客户也透露此卡是他以1.8万元回收的故障卡 [00:08:44]。
- ⚠️ 拆开显卡后,发现核心晶体有划痕,且核心周围的电容都被打了胶,同时核心区域有明显的焊油痕迹,结合PCB板泛白的现象,作者推断该显卡曾被大修或水洗过,存在铅锡重置的核心 [00:13:30]。
- ⚙️ 在更换C0显存后,显卡彻底无法点亮,卡在B2,表明核心下方可能存在短路,最终确认核心下方有残留的导热硅脂和严重的氧化,所有显存焊盘也都有残留,PCB板已不适合使用 [0019:00]。
- ✅ 经过繁琐的搬板(将所有元件移植到新PCB板)和多次加焊核心、显存后,显卡成功点亮并通过了甜甜圈和3D Mark的压力测试,运行稳定,成功修复 [00:34:00]。
#显卡维修 #RTX5090 #故障排查 #板级维修 #核心重置
思考
- 这张显卡的不稳定性导致其故障现象具有间歇性。在作者的老电脑上,由于性能限制,可能无法达到引发故障的条件,所以有时不花屏;而在高端平台上,显卡可以全速运行,更容易触发其内部的潜在问题,从而迅速出现花屏。
- 作者在视频中解释道,由于该显卡的核心之前可能被重置过,并且PCB板存在严重氧化和导热硅脂残留,当显卡再次加热更换显存时,可能会导致核心下方的锡球虚焊或短路,从而引发新的、更严重的问题,使得显卡彻底无法点亮。
术语解释
- 花屏 (Mosaic Screen / Artifacts): 指显卡在运行时,屏幕上出现异常的图案、颜色或乱码,通常是显存或核心故障的表现。
- 清灰换硅脂 (Dust Cleaning & Thermal Paste Replacement): 显卡日常保养的一部分,清理散热器上的灰尘,并更换核心和散热器之间的导热硅脂,以提高散热效率。
- 跑甜甜圈 (Running FurMark): 一种高强度的显卡压力测试软件,能让显卡长时间处于高负载状态,用于测试显卡的稳定性和散热性能。
- 3D Mark: 一款专业的图形性能测试软件,通过运行多种场景来评估显卡的3D渲染性能,包括压力测试以检验显卡在高负载下的稳定性。
- 搬板 (Board Transplant): 显卡维修中的一种高级操作,指将旧的、有问题的PCB板上的核心、显存等主要芯片拆卸下来,重新安装到一块新的或完好的PCB板上,以解决旧板子本身的问题。
视频章节总结 | 💰1.8万回收的“巨型5090”竟是定时炸弹?挑战大修卡,从花屏到完美复活!
本视频详细记录了UP主维修一张号称“巨型5090显卡”(实为RTX 4090)的全过程,该显卡以1.8万元回收,但存在不定时花屏、点不亮等疑难故障。视频首先对显卡进行初步检测,发现其存在点亮但花屏的间歇性问题。通过反复更换测试平台、进行多轮显存超频和压力测试,最终锁定故障点为C0显存报错,并进一步发现显卡核心区域有被重置和大量导热介质残留的问题。UP主决定进行搬板维修,重置了核心和所有显存,并将其移植到新的PCB板上。然而,搬板后又遭遇了新的显存报错,经过反复排查和加焊核心,最终成功修复了显卡。视频展示了显卡维修的复杂性、不确定性以及面对二手大修卡时可能遇到的各种挑战和风险,强调了细致排查和耐心测试的重要性,最终成功让这张“天塌了”的显卡恢复健康。
00:00 - 🤔 显卡疑难杂症:天价“5090”到手即故障
视频开篇,UP主介绍了一张以1.8万元回收的“超级雕5090”显卡,客户描述其能点亮但会不定时花屏,且曾自行尝试更换散热无效。UP主指出这类不稳定故障最令人头疼,因为维修后容易复发。初步检测发现显卡外观霸气,但客户描述的故障现象令人担忧,UP主决定进行全面的上机测试。
01:29 - 🔬 初步排查:多平台测试与假性蓝屏
UP主在测试平台对显卡进行供电检测,确认无短路后上机。首次开机出现蓝屏,但被判断为系统问题而非显卡故障。更换系统后,显卡成功进系统并识别到RTX 5090,显存32GB。然而,在进行3DMark和甜甜圈压力测试时,显卡并未立即复现花屏问题,UP主感叹老旧测试平台无法让故障重现,决定更换更高端的平台进行测试。
06:33 - 💥 故障复现:不稳定花屏与显存报错初现
在高端测试平台上,显卡终于在甜甜圈测试启动前和运行时多次出现花屏,确认了客户描述的间歇性故障。UP主尝试运行3DMark压力测试,结果却意外通过,进一步印证了显卡时好时坏、不稳定的“神经病”特性。为找出确切原因,UP主决定进行显存超频测试,最终成功检测到C0显存出现报错,初步锁定故障范围。
09:34 - 📞 沟通与风险:大修卡背后的故事
UP主与显卡原主人通话,了解到这张卡是对方1.8万元回收的二手卡,收回时未发现问题,后续测试才出现故障。UP主向对方详细说明显卡问题具有不稳定性,并告知检测到C0显存报错。由于显卡有大修过的痕迹,UP主强调维修存在极高风险,可能越修越坏甚至彻底报废,建议先更换显存,若无效可能需要动核心。
14:21 - 🕵️♀️ 深入诊断:大修痕迹与核心问题
拆开显卡后,UP主发现散热器上的液晶屏已丢失,导热凝胶也被更换且涂抹不均。更令人震惊的是,显卡核心晶体有划伤,周围电容被打胶,核心边缘有明显的焊油残留,且存在泛白现象,综合判断核心曾被重置或加焊。这进一步增加了维修的复杂性和风险。UP主决定先更换报错的C0显存,但更换后显卡彻底无法点亮,卡B2,最担心的事情还是发生了。
21:16 - 🔄 彻底搬板:核心显存的涅槃重生
显卡彻底点不亮后,重新检测仍显示C0显存报错,UP主推断核心下方存在虚焊或短路,因为按压核心数据线能导通。与客户沟通后,UP主决定拆掉核心进行重置。拆下核心后,发现焊盘上有大量导热硅脂残留和严重氧化,所有显存下方也有类似残留,确定原PCB板已无法使用。因此,决定将核心和所有16颗显存全部重置,并移植到一块新的PCB板上,进行彻底的“搬板”维修。
28:26 - 🚀 最终修复:克服重重难关,显卡完美康复
搬板完成后,UP主先测试新板所有供电正常,然后逐一安装显存和核心。首次点亮仍卡B2并出现大电流,表明显存仍有报错。经过反复测量、拆卸、加焊核心和重新安装显存,最终排除所有显存报错,显卡成功点亮并显示华硕logo,宣告维修成功。最后,UP主更换了散热器垫子和硅脂,并在高端平台进行长时间的甜甜圈、3DMark压力测试和游戏测试,所有指标稳定正常,这张曾”天塌了”的显卡终于完美康复,展现了UP主高超的维修技艺。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 kipleyarch@gmail.com