deepseek本地部署(在线、离线)、知识库搭建(个人、组织)与代码接入
本文主要介绍deepSeek本地化容器化部署知识库搭建与springAI接入。因笔者工作内容原因也会介绍内网部署方式。一、deepSeek本地化部署本地部署方式我们采用ollama简化部署、内网迁移流程。1.1 windows与mac部署首先我们访问ollama官方网站ollama.com.下载相应版本安装包注意如果没有梯子下载较慢可以直接通过网盘链接下载windowsmacOS配置环境变量配置模型存储位置Ollama会默认将模型存储到C:\Users%username%.ollama\models,防止影响性能我们将模型路径修改到D盘配置跨域请求Ollama默认只允许来自127.0.0.1和0.0.0.0的跨域请求,这里因为笔者Open WebUI在内网其他服务器配置OLLAMA_ORIGINS为*点击models导航栏并选择deepseek-r1这里因为是测试服务器搭建我们选择一个较小的模型如果是本机部署没有显卡的情况下建议选择1.5b15亿参数的蒸馏模型。具体模型配置可参考[DeepSeek模型各版本硬件要求]参考量显存需求显卡推荐命令1.5B通常4GB左右GTX 1050ollama run deepseek-r1:1.5b8B一般8-10GBGTX 1660ollama run deepseek-r1:8b14B12GB以上16GB以上运行流畅RTX 3060ollama run deepseek-r1:14b32B16GB以上21GB以上运行流畅RTX 3060ollama run deepseek-r1:32b70B24GB以上40GB以上运行流畅RTX 3090、RTX 4090ollama run deepseek-r1:70b671B1342GB16张NVIDIA A100 80GB显卡ollama run deepseek-r1:671b在本地命令行终端执行如下命令在ollma安装deepseek模型我这里有一张英伟达4090卡24G显存选择了32b的模型。ollama run deepseek-r1:${tag} // ollama run deepseek-r1:32bwindows内网迁移在互联网机器模型下载成功后打包ollama安装包与模型模型我们之前是配置在D:\ollama\models拷贝到内网后安装ollama特别注意要重启命令行工具与 ollama。 这里因为我们需要查看具体的token速率执行ollama run deepseek-r1:32b --verbose // --verbose拍照后截图图片比较模糊请谅解。安装完成输出success后输入问题进行测试在这里插入图片描述可以看到成功返回token rate为38.46tokens/s。查看显卡占用 这里我们是英伟达的显卡输入nvidia-smi或者使用任务管理器-性能模块可以看到GPU显存占用在22G左右。1.2 linux部署容器化基础可参考第四小节——附录。1.2.1 部署deepseek运行如下代码sudo docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/ollama/ollama sudo docker run -d -v ollama:/ollama -p 11434:11434 --name ollama swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/ollama/ollama这里因为没有梯子会比较慢我们使用华为云的ollama镜像。等待执行完成后使用如下命令进入容器docker ps | grep ollama // 确认容器状态 docker exec -it ${containerId} /bin/bash // 进入容器 ollama run deepseek-r1:${tag} // ollama run deepseek-r1:7b 安装deepseek模型测试deepseek服务二、知识库搭建用于内部资料的检索因为模型训练成本要求较高这里我们搭建本地的个人与组织知识库不过文档的解析、检索因分段策略与数据向量化的原因差强人意。对外提供服务可基于LlamaIndex或LangChain进行开发。如需训练模型可考虑全参数微调或者loRA等方式。2.1 个人知识库搭建个人知识库RAG应用搭建可以借助anythingLLM等工具这里我们介绍使用anythingLLM进行个人知识库的搭建。安装聊天客户端也可以直接使用AnythingLLM进入Chatbox官网:chatboxai.app/zh下载客户端并安装安装完成后配置本地deepseek地址测试聊天工具安装知识库工具安装AnythingLLM配置工作区点击聊天设置LLM提供者选择ollama设置模型地址 这里Ollama Base URL配置我们本地部署的模型地址上传知识库文件点击工作区文件上传按钮添加知识库文件这里我们添加一个测试文件添加完成后点击Move to Workspace然后右下角点击Save and Embed进行向量化处理测试知识库 点击new thread提问张三的原名是答案是王五测试完成。2.2 组织知识库搭建组织知识库的搭建我们使用Open WebUI,提供一个简洁、好看的页面。Open WebUI项目地址Open WebUI.部署Open WebUIdocker run -d -p 3030:8080 --add-hosthost.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.nju.edu.cn/open-webui/open-webui:main这里我们不使用梯子仍旧使用国内南京大学的镜像。访问Open WebUI浏览器输入http://${webUI-deploy-ip}:3030/首次进入需要注册这里我已经注册直接进入配置模型进入管理员面板点击设置配置外部链接设置模型权限点击设置-模型便于测试这里我们直接设置成public测试对话测试知识库依次点击工作空间 - 知识库即可构建组织知识库文档上传、使用过程按下不表与个人知识库类似。docker compose一键部署前面我们使用docker部署了ollma和Open WebUI这里我们将两个容器通过docker compose编排一键部署也为后续离线部署降低工作量。 整合容器配置如下version: 3 services: ollama: image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/ollama/ollama container_name: ollama restart: always ports: - 11434:11434 volumes: - ollama:/ollama networks: - app-network open-webui: image: ghcr.nju.edu.cn/open-webui/open-webui:main container_name: open-webui restart: always ports: - 3030:8080 volumes: - open-webui:/app/backend/data depends_on: - ollama extra_hosts: - host.docker.internal:host-gateway networks: - app-network volumes: ollama: name:ollama-ds external: true open-webui: name: webui-ds external: true networks: app-network: external: true name: ds-net启动服务使用docker-compose up -d关闭服务使用docker-compose down内网服务器离线部署我们先转储镜像docker save -o ollama_image.tar swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/ollama/ollama docker save -o open-webui_image.tar ghcr.nju.edu.cn/open-webui/open-webui:main2. 接下来我们备份数据卷sudo tar -czvf ollama-backup.tar.gz -C /var/lib/docker/volumes/ollama-ds/_data . sudo tar -czvf webui-backup.tar.gz -C /var/lib/docker/volumes/webui-ds/_data .3. 将数据转移到内网服务器后恢复数据// 恢复数据卷 sudo tar -xzvf ollama-backup.tar.gz -C /var/lib/docker/volumes/ollama-ds/_data sudo tar -xzvf webui-backup.tar.gz -C /var/lib/docker/volumes/webui-ds/_data // 加载镜像 docker load -i ollama.tar docker load -i open-webui.tar // 创建数据卷和网络 docker volume create --nameollama-ds docker volume create --namewebui-ds docker network create ds-net // 启动服务 docker-compose up -d // 验证服务 docker ps三、代码接入依赖配置// 主pom ... properties spring-ai.version1.0.0-SNAPSHOT/spring-ai.version /properties ... /dependencyManagement /dependencies dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-bom/artifactId version${spring-ai.version}/version typepom/type scopeimport/scope /dependency /dependencies /dependencyManagement ... // ai模块 ... dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-ollama-spring-boot-starter/artifactId /dependency ...springAI接入公共调用组件封装Component public class Completion { Resource private OllamaChatModel aiClient; /** * 最大消息记录数 */ private final static Integer MAX_SIZE 10; /** * 消息记录 */ private ListMessage messages new ArrayList(); /** * 初始化存入系统消息 */ PostConstruct private void addSystemMessage() { String message 李白701年2月28日—762年12月字太白号青莲居士出生于蜀郡绵州昌隆县今四川省绵阳市江油市青莲镇一说出生于西域碎叶 祖籍陇西成纪今甘肃省秦安县。唐朝伟大的浪漫主义诗人凉武昭王李暠九世孙 。 为人爽朗大方乐于交友爱好饮酒作诗名列“酒中八仙” 。曾经得到唐玄宗李隆基赏识担任翰林供奉赐金放还后游历全国先后迎娶宰相许圉师、宗楚客的孙女。唐肃宗李亨即位后卷入永王之乱流放夜郎辗转到达当涂县令李阳冰家。上元二年去世时年六十二 。 著有《李太白集》代表作有《望庐山瀑布》《行路难》《蜀道难》《将进酒》《早发白帝城》《黄鹤楼送孟浩然之广陵》等。李白所作词赋就其开创意义及艺术成就而言享有极为崇高的地位后世誉为“诗仙”与诗圣杜甫并称“李杜”。; Message systemMessage new SystemMessage(message); messages.add(systemMessage); } /** * 存储用户发送的消息 */ private void addUserMessage(String message) { Message userMessage new UserMessage(message); messages.add(userMessage); } /** * 存储AI回复的消息 */ private void addAssistantMessage(String message) { Message assistantMessage new AssistantMessage(message); messages.add(assistantMessage); } /** * 聊天接口 */ public String chat(String message) { addUserMessage(message); String result aiClient.call(new Prompt(messages)).getResult().getOutput().getText(); addAssistantMessage(result); update(); return result; } /** * 流式聊天接口 */ public FluxString chatStream(String message) { addUserMessage(message); StringBuffer fullReply new StringBuffer(); FluxString fluxResult aiClient.stream(new Prompt(messages)) .flatMap(response - { String reply response.getResult().getOutput().getText(); //拼接回复内容 fullReply.append(reply); return Flux.just(reply); }) .doOnComplete(() - { //监听流式响应完成完整回复存入消息记录 System.out.println(fullReply); addAssistantMessage(String.valueOf(fullReply)); }); update(); return fluxResult; } /** * 更新消息记录 */ private void update() { if (messages.size() MAX_SIZE) { messages messages.subList(messages.size() - MAX_SIZE, messages.size()); } } }2. 创建测试用controllerSlf4j RestController RequestMapping(/api) public class OllamaTestController { Autowired private OllamaChatModel ollamaChatClient; RequestMapping(/chat) public String chat(){ String systemPrompt {prompt}; SystemPromptTemplate systemPromptTemplate new SystemPromptTemplate(systemPrompt); String userPrompt 广州有什么特产; Message userMessage new UserMessage(userPrompt); Message systemMessage systemPromptTemplate.createMessage(MapUtil.of(prompt, you are a helpful AI assistant)); Prompt prompt new Prompt(List.of(userMessage, systemMessage)); ListGeneration response ollamaChatClient.call(prompt).getResults(); String result ; for (Generation generation : response){ String content generation.getOutput().getText(); result content; } return result; } RequestMapping(/stream) public SseEmitter stream(HttpServletResponse response){ response.setContentType(text/event-stream); response.setCharacterEncoding(UTF-8); SseEmitter emitter new SseEmitter(); String systemPrompt {prompt}; SystemPromptTemplate systemPromptTemplate new SystemPromptTemplate(systemPrompt); String userPrompt 广州有什么特产; Message userMessage new UserMessage(userPrompt); Message systemMessage systemPromptTemplate.createMessage(MapUtil.of(prompt, you are a helpful AI assistant)); Prompt prompt new Prompt(List.of(userMessage, systemMessage)); ollamaChatClient.stream(prompt).subscribe(x - { try { log.info(response: {},x); ListGeneration generations x.getResults(); if(CollUtil.isNotEmpty(generations)){ for(Generation generation:generations){ AssistantMessage assistantMessage generation.getOutput(); String content assistantMessage.getText(); if(StringUtils.isNotEmpty(content)){ emitter.send(content); }else{ if(StringUtils.equals(content,null)) emitter.complete(); // Complete the SSE connection } } } } catch (Exception e) { emitter.complete(); log.error(流式返回结果异常,e); } }); return emitter; } }3. 测试四、附录4.1 容器化基础(有基础可跳过)4.1.1 Docker安装step 1卸载已有资源yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine.step 2添加 Docker 安装源yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo.如果提示yum-config-manager不存在,执行yum -y install yum-utils.step 3 安装最新版本Dockeryum install docker-ce docker-ce-cli containerd.io.如果想要安装指定版本的Docker可以使用以下命令yum list docker-ce --showduplicates | sort -r.yum install docker-ce-VERSION_STRING docker-ce-cli-VERSION_STRING containerd.io.step 4 启动dockersystemctl start docker启动完成后运行hello world容器检查是否安装正确,命令如下docker run hello-worldDocker 首先会检查本地是否有hello-world这个镜像如果发现本地没有这个镜像Docker 就会去Docker Hub官方仓库下载此镜像然后运行它。最后输出 “Hello from Docker!” 并退出。如需卸载docker执行yum -y remove docker-engine,如需删除镜像、容器、卷以及自定义文件可执行以下命令rm -rf /var/lib/docker4.1.2 Docker基础操作拉取镜像使用docker pull命令拉取远程仓库的镜像到本地 命令格式docker pull [Registry]/[Repository]/[Image]:[Tag]重命名镜像使用docker tag命令“重命名”镜像 命令格式docker tag [SOURCE_IMAGE](#) [TARGET_IMAGE](#)查看镜像使用docker image ls或docker images命令查看本地已经存在的镜像 删除镜像使用docker rmi命令删除镜像 构建镜像构建镜像有两种方式。第一种方式是使用docker build命令基于Dockerfile构建镜像也是我比较推荐的镜像构建方式第二种方式是使用docker commit命令基于已经运行的容器提交为镜像。Dockerfile常用指令egFROM centos:7 ​ COPY nginx.repo /etc/yum.repos.d/nginx.repo ​ RUN yum install -y nginx ​ EXPOSE 80 ​ ENV HOSTiotnginx ​ CMD [nginx,-g,daemon off;]第一行表示基于 centos:7 这个镜像来构建自定义镜像。这里需要注意每个 Dockerfile 的第一行除了注释都必须以 FROM 开头。第二行表示拷贝本地文件nginx.repo文件到容器内的/etc/yum.repos.d目录下。这里拷贝nginx.repo文件是为了添加 nginx 的安装源。第三行表示在容器内运行yum install -y nginx命令安装 nginx 服务到容器内执行完第三行命令容器内的 nginx 已经安装完成。第四行声明容器内业务nginx使用 80 端口对外提供服务。第五行定义容器启动时的环境变量HOSTiotnginx容器启动后可以获取到环境变量 HOST 的值为 iotnginx。第六行定义容器的启动命令命令格式为 json 数组。这里设置了容器的启动命令为 nginx 并且添加了 nginx 的启动参数 -g ‘daemon off;’ 使得 nginx 以前台的方式启动。4.2 单机服务编排入门有基础可跳过单机服务编排工具Docker-compose这里我们介绍他的安装与基础命令。curl -L https://github.com/docker/compose/releases/download/${release_tag}/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose替换release_tag为对应版本这里我们使用最新的v2.6.0.curl -L https://github.com/docker/compose/releases/download/v2.6.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose常用命令启动docker-compose up -d注意这里需要在yml配置文件路径执行其他路径执行需要-f指定配置文件地址。查看日志docker-compose logs -f ${compose-contatainer-name}停止docker-compose stop停止并删除容器docker-compose down其他命令帮助docker-compose --help深入学习容器化与服务编排请查阅参考资料。零基础如何学习AI大模型领取方式在文末为什么要学习大模型学习大模型课程的重要性在于它能够极大地促进个人在人工智能领域的专业发展。大模型技术如自然语言处理和图像识别正在推动着人工智能的新发展阶段。通过学习大模型课程可以掌握设计和实现基于大模型的应用系统所需的基本原理和技术从而提升自己在数据处理、分析和决策制定方面的能力。此外大模型技术在多个行业中的应用日益增加掌握这一技术将有助于提高就业竞争力并为未来的创新创业提供坚实的基础。大模型典型应用场景①AI教育智能教学助手和自动评分系统使个性化教育成为可能。通过AI分析学生的学习数据提供量身定制的学习方案提高学习效果。②AI医疗智能诊断系统和个性化医疗方案让医疗服务更加精准高效。AI可以分析医学影像辅助医生进行早期诊断同时根据患者数据制定个性化治疗方案。③AI金融智能投顾和风险管理系统帮助投资者做出更明智的决策并实时监控金融市场识别潜在风险。④AI制造智能制造和自动化工厂提高了生产效率和质量。通过AI技术工厂可以实现设备预测性维护减少停机时间。…这些案例表明学习大模型课程不仅能够提升个人技能还能为企业带来实际效益推动行业创新发展。一、 AI大模型学习路线图整个学习分为7个阶段二、AI大模型实战案例涵盖AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师还是对AI大模型感兴趣的爱好者皆可用。三、视频和书籍PDF合集从入门到进阶这里都有跟着老师学习事半功倍。四、LLM面试题五、AI产品经理面试题六、deepseek部署包技巧大全领取方式我会放在下面希望领取了的朋友不要忘了下方名片放心添加

相关新闻

Combustion + RSpec完美组合:编写Rails引擎测试的最佳实践

Combustion + RSpec完美组合:编写Rails引擎测试的最佳实践

Combustion RSpec完美组合:编写Rails引擎测试的最佳实践 【免费下载链接】combustion Simple, elegant testing for Rails Engines 项目地址: https://gitcode.com/gh_mirrors/co/combustion Combustion是一款为Rails引擎测试设计的轻量级工具,它…

2026/10/19 19:45:41 阅读更多 →
1881个开发者作品集终极灵感库:解决技术展示难题的完整解决方案

1881个开发者作品集终极灵感库:解决技术展示难题的完整解决方案

1881个开发者作品集终极灵感库:解决技术展示难题的完整解决方案 【免费下载链接】developer-portfolios A list of developer portfolios for your inspiration 项目地址: https://gitcode.com/GitHub_Trending/de/developer-portfolios 在当今竞争激烈的技术…

2026/10/20 12:49:03 阅读更多 →
WebDevsCom社区价值:为什么这个项目对开发者如此重要

WebDevsCom社区价值:为什么这个项目对开发者如此重要

WebDevsCom社区价值:为什么这个项目对开发者如此重要 【免费下载链接】webDevsCom :heart_eyes: All kinds of resources for Developers :trident: in one place. 项目地址: https://gitcode.com/gh_mirrors/we/webDevsCom WebDevsCom(GitHub 加…

2026/10/20 6:36:38 阅读更多 →

最新新闻

上下文工程实战指南:从提示词到高质量大模型应用

上下文工程实战指南:从提示词到高质量大模型应用

1. 上下文工程到底是什么,为什么大家都在提1.1 从“提示词”到“上下文工程”先用大白话把这件事说清楚。过去我们聊得最多的是“提示词”,就是告诉模型“帮我写一篇周报”“总结这段文字”,这像是到一个陌生摊位前报菜名。你只说了一句“来碗…

2026/10/20 12:48:35 阅读更多 →
千万级CSV流式导出:零拷贝写入与JVM内存规避方案

千万级CSV流式导出:零拷贝写入与JVM内存规避方案

简介:本资源是一套面向Java中高级开发者的高性能CSV大数据导出实战方案,专为解决千万级数据导出时内存溢出、响应迟滞等生产痛点而设计。方案采用分批处理多线程并行流式写入核心策略,整合Apache Commons CSV或原生BufferedWriter逐行操作&am…

2026/10/20 12:48:35 阅读更多 →
Flutter StatelessWidget vs StatefulWidget 决策指南:状态边界与性能优化

Flutter StatelessWidget vs StatefulWidget 决策指南:状态边界与性能优化

1. 为什么这个问题值得花一整篇来聊——从三个真实翻车现场说起在 Flutter 开发中,“该用 StatelessWidget 还是 StatefulWidget”看起来是个入门级问题,但恰恰是这个看似简单的问题,让不少有 React 或 Vue 经验的开发者栽了跟头。我见过太多…

2026/10/20 12:48:35 阅读更多 →
AI对话落下闳:用大模型重算太初历的时间智慧

AI对话落下闳:用大模型重算太初历的时间智慧

做"AI中国故事"这个系列的时候,我的目标一直很明确:不做一个挂着历史文化名字的语音助手,而是真正把那些被现代人忽略的名字、被算法时代遗忘的计算智慧,用对话的方式重新"活"一遍。系列第一期,我…

2026/10/20 12:48:35 阅读更多 →
AI营销操盘手能力模型与十大品牌选型实战指南

AI营销操盘手能力模型与十大品牌选型实战指南

1. 操盘手和品牌之间,差着一条完整的交付闭环最近总有做企业的朋友问我,AI营销是不是已经变成“买工具就能跑”的赛道了。我做了多年的营销咨询,也在多个项目里亲自下场带过AI营销的完整链路,说实话,这波AI能力升级之后…

2026/10/20 12:48:35 阅读更多 →
2026网络安全就业全景:岗位趋势、薪酬地图与技能风向

2026网络安全就业全景:岗位趋势、薪酬地图与技能风向

1. 为什么我会在年底啃这份招聘数据:调研背景与样本口径每年四季度都是观察次年就业市场最好的窗口期,因为各大公司的HC预算、校招指标、社招编制基本都在这个阶段定调。我做了近十年的安全行业职业发展相关调研,今年选了2025年10月到2026年1…

2026/10/20 12:47:34 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →