Perplexity集成OpenRouter:多模型路由策略降低AI应用成本
1. 先搞清楚 Perplexity 和 OpenRouter 到底解决什么问题如果你在找降低 AI 应用开发成本的方法Perplexity 和 OpenRouter 这两个名字大概率会出现在你的备选清单里。但很多人容易把它们的功能混在一起谈结果就是配置了半天发现成本没降下来或者功能没跑通。Perplexity 本身是一个问答搜索工具它帮你快速获取信息但如果你要做应用开发、模型调用或批量任务它并不是一个直接的成本控制方案。而 OpenRouter 是一个模型路由平台它把几十个主流模型比如 GPT、Claude、Llama 等统一到一个接口里让你能按需切换模型从而根据任务类型、响应速度、价格和可用性选择最划算的选项。所以“Perplexity 集成 OpenRouter”这个组合实际要解决的是如何在信息获取工具里嵌入多模型路由能力让每次查询或任务自动匹配成本最低、效果最合适的模型。比如简单问题用便宜模型复杂分析用高价模型而不是所有请求都走同一个高价接口。这种集成最适合两类人已经在用 Perplexity 做信息检索但希望把结果生成、内容总结或数据提取环节的成本降下来开发多模型应用的团队想通过路由策略平衡效果和开销。但要注意这不是一个“一键降价”的方案。你需要先理解 OpenRouter 的计费方式、模型差异、接口限制再根据你的任务类型设计路由规则。下面我会按实际落地顺序拆解。2. 低成本运行的前提环境、账号和路由策略2.1 账号和权限准备OpenRouter 需要注册账号并获取 API Key。注册后建议先查看模型列表和价格页。不同模型的计费方式差异很大有的按 token 收费有的按请求次数收费有的还有每分钟请求数限制。Perplexity 目前主要面向终端用户如果你要做集成通常需要通过其 API 或 SDK如果提供来接入。但更常见的做法是把 Perplexity 作为信息源然后用 OpenRouter 处理后续任务。例如用 Perplexity 搜索最新技术文档再用 OpenRouter 选择合适模型进行摘要或代码生成。关键准备步骤注册 OpenRouter 账号在仪表盘生成 API Key。确认你的使用场景是直接替换现有模型调用还是新增多模型路由层。如果涉及 Perplexity检查其 API 文档如有或考虑用爬虫方式获取公开结果注意合规性。2.2 路由策略设计不是所有任务都适合便宜模型OpenRouter 的核心价值是模型路由但如果你不问场景直接选最便宜的模型可能会得到无法使用的输出。比如代码生成任务选了一个纯聊天模型或者需要高推理能力的分析任务选了一个基础模型。我一般会先按任务类型拆解路由策略任务类型推荐模型特性OpenRouter 可选模型示例成本考量简单问答、摘要低成本、快响应GPT-3.5-Turbo, Claude-Haiku优先选每 token 价格低的代码生成、调试代码能力强、支持长上下文Claude-Sonnet, CodeLlama可以接受稍高价格但要求输出稳定复杂推理、数据分析高精度、强逻辑GPT-4, Claude-Opus仅在必要时使用可设使用上限多语言任务语言覆盖广Llama-2-多语言, GPT-4多语言根据语言选择专有模型设计策略时不要只看单价还要看最小计费单位、请求超时设置和错误重试机制。比如有些模型便宜但超时时间短适合短文本有些模型支持长上下文但价格高适合文档处理。2.3 本地开发环境配置OpenRouter 提供标准 HTTP API所以任何支持 HTTP 请求的语言都能调用。我这里以 Python 为例因为大多数成本敏感的应用场景会用 Python 做集成。先准备基础环境# 创建虚拟环境可选但推荐 python -m venv openrouter_env source openrouter_env/bin/activate # Linux/macOS # 或 openrouter_env\Scripts\activate # Windows # 安装请求库 pip install requests # 如果处理复杂数据可以加装 pandas 或 numpy pip install pandas环境检查重点Python 3.7确保 f-string 等语法支持网络能正常访问 OpenRouter API国内用户可能需要确认网络连通性有足够的配额或预付金额OpenRouter 需要先充值或设置额度3. 从单次请求到批量任务代码实现和成本控制3.1 最小可运行示例发一次请求看效果先从最简单的单次请求开始确认接口能通、计费正确、返回可用。import requests import json # OpenRouter API 配置 OPENROUTER_API_KEY your-api-key-here OPENROUTER_URL https://openrouter.ai/api/v1/chat/completions def openrouter_request(model: str, messages: list, max_tokens: int 500): headers { Authorization: fBearer {OPENROUTER_API_KEY}, Content-Type: application/json } data { model: model, # 指定模型如 openai/gpt-3.5-turbo messages: messages, max_tokens: max_tokens } response requests.post(OPENROUTER_URL, headersheaders, jsondata) if response.status_code 200: result response.json() # 记录使用量用于成本监控 usage result.get(usage, {}) print(f本次消耗: {usage.get(total_tokens, 0)} tokens) return result[choices][0][message][content] else: print(f请求失败: {response.status_code}, {response.text}) return None # 测试调用 messages [ {role: user, content: 用一句话解释什么是机器学习} ] response_text openrouter_request(openai/gpt-3.5-turbo, messages) print(response_text)第一次运行这个脚本时重点关注是否正常返回内容不是错误信息控制台输出的 token 消耗是否合理OpenRouter 仪表盘里的使用记录和扣费是否匹配3.2 成本监控不要等账单出来才发现问题OpenRouter 的计费是实时扣除的所以必须在代码里加入用量监控。我习惯在每次请求后记录这些信息def openrouter_request_with_cost(model: str, messages: list, max_tokens: int 500): # ... 同上请求代码 ... if response.status_code 200: result response.json() usage result.get(usage, {}) prompt_tokens usage.get(prompt_tokens, 0) completion_tokens usage.get(completion_tokens, 0) total_tokens usage.get(total_tokens, 0) # 记录到日志或数据库 cost_record { model: model, prompt_tokens: prompt_tokens, completion_tokens: completion_tokens, total_tokens: total_tokens, timestamp: datetime.now().isoformat() } print(f模型: {model}, 输入token: {prompt_tokens}, 输出token: {completion_tokens}, 总token: {total_tokens}) return result[choices][0][message][content] else: # 记录错误 print(f请求失败: {response.status_code}) return None对于长期运行的项目建议把这些记录写入文件或数据库方便后续分析哪个模型、哪种任务类型最烧钱。3.3 批量任务处理控制并发和错误重试单次请求跑通后批量任务才是成本控制的关键。但不要一上来就开高并发先确认单任务稳定性和计费准确性。import time from concurrent.futures import ThreadPoolExecutor, as_completed def batch_process_questions(questions: list, model: str, max_workers: int 3): 批量处理问题列表 questions: 问题字符串列表 model: 使用的模型 max_workers: 最大并发数初期建议设小一点 results [] def process_single_question(question): messages [{role: user, content: question}] try: response openrouter_request_with_cost(model, messages) return {question: question, response: response, status: success} except Exception as e: return {question: question, response: None, error: str(e), status: failed} # 控制并发数避免超额请求或超额扣费 with ThreadPoolExecutor(max_workersmax_workers) as executor: future_to_question {executor.submit(process_single_question, q): q for q in questions} for future in as_completed(future_to_question): question future_to_question[future] try: result future.result() results.append(result) except Exception as e: results.append({question: question, response: None, error: str(e), status: failed}) # 统计成功率和使用量 success_count sum(1 for r in results if r[status] success) print(f批量处理完成: 共{len(questions)}条, 成功{success_count}条, 失败{len(questions)-success_count}条) return results # 示例批量任务 questions [ 解释深度学习的基本概念, 写一个Python函数计算斐波那契数列, 什么是RESTful API?, 如何优化数据库查询性能? ] # 先用低成本模型测试 results batch_process_questions(questions, openai/gpt-3.5-turbo, max_workers2)批量任务要注意的几个成本控制点并发数初期建议 2-3稳定后再逐步增加超时设置在请求函数里加入 timeout 参数避免卡死错误重试对于网络错误可以重试但模型错误通常不需要重试会重复扣费结果验证检查返回内容是否完整可用不是空值或错误信息4. 路由策略实现智能选择模型降成本4.1 基于任务复杂度的自动路由单纯的手动指定模型还不够智能真正降成本需要根据任务内容自动选择模型。我的经验是先按文本长度和关键词做简单判断def estimate_task_complexity(text: str) - str: 简单评估任务复杂度 返回: simple, medium, complex word_count len(text.split()) # 复杂任务关键词可根据实际场景调整 complex_keywords [代码, 算法, 数学, 推理, 分析, 比较, 优缺点] medium_keywords [解释, 定义, 如何, 步骤, 方法] has_complex any(keyword in text for keyword in complex_keywords) has_medium any(keyword in text for keyword in medium_keywords) if word_count 100 or has_complex: return complex elif word_count 50 or has_medium: return medium else: return simple def get_appropriate_model(task_complexity: str) - str: 根据复杂度推荐模型 model_mapping { simple: openai/gpt-3.5-turbo, # 低成本 medium: anthropic/claude-3-haiku, # 平衡型 complex: anthropic/claude-3-sonnet # 高能力 } return model_mapping.get(task_complexity, openai/gpt-3.5-turbo) # 智能路由示例 def smart_router_request(question: str): complexity estimate_task_complexity(question) model get_appropriate_model(complexity) print(f问题: {question[:50]}... | 复杂度: {complexity} | 选用模型: {model}) messages [{role: user, content: question}] return openrouter_request_with_cost(model, messages) # 测试不同复杂度的问题 test_questions [ 你好, # 简单 如何学习Python, # 中等 请比较Transformer和CNN在自然语言处理中的优缺点 # 复杂 ] for q in test_questions: response smart_router_request(q) print(f回答: {response}\n)这种路由策略能显著降低成本因为大部分日常任务其实用中等或简单模型就够了。4.2 成本预算和熔断机制对于生产环境必须设置成本控制机制避免意外超支class CostController: def __init__(self, daily_budget: float, token_price_map: dict): self.daily_budget daily_budget # 每日预算单位美元 self.token_price_map token_price_map # 各模型的千token价格 self.daily_cost 0.0 self.last_reset_date datetime.now().date() def check_budget(self, model: str, estimated_tokens: int) - bool: 检查本次请求是否超预算 # 每日重置 if datetime.now().date() ! self.last_reset_date: self.daily_cost 0.0 self.last_reset_date datetime.now().date() # 获取模型价格美元/千token price_per_k self.token_price_map.get(model, 0.01) estimated_cost (estimated_tokens / 1000) * price_per_k if self.daily_cost estimated_cost self.daily_budget: print(f预算不足: 今日已花费{self.daily_cost:.4f}, 本次预估{estimated_cost:.4f}) return False return True def record_cost(self, model: str, actual_tokens: int): 记录实际花费 price_per_k self.token_price_map.get(model, 0.01) actual_cost (actual_tokens / 1000) * price_per_k self.daily_cost actual_cost print(f记录花费: {actual_cost:.4f}美元, 今日累计: {self.daily_cost:.4f}) # 使用示例 price_map { openai/gpt-3.5-turbo: 0.0015, # 实际价格以OpenRouter为准 anthropic/claude-3-haiku: 0.0008, anthropic/claude-3-sonnet: 0.0030 } cost_controller CostController(daily_budget1.0, token_price_mapprice_map) def budget_aware_request(question: str, model: str): # 简单估算token数实际应该用tiktoken等库精确计算 estimated_tokens len(question) * 1.5 100 # 粗略估算 if not cost_controller.check_budget(model, estimated_tokens): return 今日预算已用完请明天再试 messages [{role: user, content: question}] response openrouter_request_with_cost(model, messages) # 记录实际花费需要从返回结果获取实际token数 if response: # 这里需要根据实际返回的usage记录 actual_tokens estimated_tokens # 简化处理实际应该用API返回的usage cost_controller.record_cost(model, actual_tokens) return response5. 与 Perplexity 的集成思路和实际考量5.1 信息检索 内容处理的组合方案Perplexity 的核心优势是实时信息检索而 OpenRouter 擅长内容生成和处理。两者的集成可以这样设计Perplexity 获取信息通过 API 或爬虫获取最新、最相关的信息OpenRouter 处理信息根据信息类型和复杂度选择合适模型进行摘要、分析、翻译或代码生成def perplexity_openrouter_workflow(question: str): 模拟 Perplexity OpenRouter 工作流 # 步骤1: 获取信息这里用模拟数据 print(步骤1: 从Perplexity获取相关信息...) search_results simulate_perplexity_search(question) # 步骤2: 分析问题复杂度选择模型 complexity estimate_task_complexity(question search_results[:200]) model get_appropriate_model(complexity) # 步骤3: 用OpenRouter处理 print(f步骤2: 使用{model}处理信息...) context f基于以下信息回答问题{search_results}\n\n问题{question} messages [{role: user, content: context}] response openrouter_request_with_cost(model, messages) return response def simulate_perplexity_search(query: str) - str: 模拟Perplexity搜索结果 # 实际集成时需要调用Perplexity API或使用合法爬虫 return f关于{query}的搜索结果示例。这是从网络获取的最新相关信息摘要。 # 测试完整流程 result perplexity_openrouter_workflow(最新的机器学习框架有哪些特点) print(最终结果:, result)5.2 集成时的技术考量实际集成时要注意几个关键点网络和延迟Perplexity 和 OpenRouter 都是在线服务双重API调用会增加延迟建议设置合理的超时时间并考虑异步处理国内用户要确认网络连通性和响应速度错误处理一个服务失败时要有降级方案比如 Perplexity 失败时可以直接用 OpenRouter 回答OpenRouter 某个模型不可用时要能自动切换到备用模型成本分摊清晰区分信息获取成本Perplexity和内容处理成本OpenRouter避免重复计算或重复请求对结果进行去重和缓存减少不必要调用6. 生产环境部署和监控建议6.1 配置管理和安全实际项目中不要硬编码 API Key使用环境变量或配置文件import os from dotenv import load_dotenv load_dotenv() # 从 .env 文件加载配置 OPENROUTER_API_KEY os.getenv(OPENROUTER_API_KEY) PERPLEXITY_API_KEY os.getenv(PERPLEXITY_API_KEY) # 如果有的话 # 配置文件示例config.py class Config: OPENROUTER_API_KEY os.getenv(OPENROUTER_API_KEY) DAILY_BUDGET float(os.getenv(DAILY_BUDGET, 10.0)) DEFAULT_MODEL os.getenv(DEFAULT_MODEL, openai/gpt-3.5-turbo) MAX_CONCURRENT_REQUESTS int(os.getenv(MAX_CONCURRENT_REQUESTS, 5))6.2 监控和日志生产环境必须要有完善的监控import logging from datetime import datetime # 配置日志 logging.basicConfig( levellogging.INFO, format%(asctime)s - %(levelname)s - %(message)s, handlers[ logging.FileHandler(openrouter_integration.log), logging.StreamHandler() ] ) def logged_request(model: str, messages: list, user_id: str unknown): 带日志记录的请求函数 start_time datetime.now() logging.info(f用户{user_id} 请求模型{model}, 输入长度: {len(str(messages))}) try: response openrouter_request(model, messages) end_time datetime.now() duration (end_time - start_time).total_seconds() logging.info(f请求成功, 耗时: {duration:.2f}秒) return response except Exception as e: logging.error(f请求失败: {str(e)}) return None6.3 性能优化建议根据实际使用经验这几个优化点最能影响成本和效果缓存策略对相同或相似的请求结果进行缓存设置合理的缓存过期时间比如1小时避免对实时性要求高的内容使用缓存批量优化将多个小请求合并为一个大请求如果模型支持合理安排请求时间避开高峰期使用流式响应减少等待时间模型调优定期评估各模型的实际效果和成本根据业务变化调整路由策略关注新模型上线可能会有性价比更高的选择7. 常见问题排查和成本异常处理7.1 请求失败排查顺序当遇到请求失败时按这个顺序排查检查API Key和权限Key是否正确、是否过期账户是否有足够余额是否达到速率限制检查网络连接是否能正常访问 OpenRouter API是否有防火墙或代理问题DNS解析是否正常检查请求参数模型名称是否正确区分大小写和命名空间消息格式是否符合要求token数量是否超限检查服务状态查看 OpenRouter 状态页如果有检查特定模型是否临时不可用7.2 成本异常处理如果发现成本异常偏高立即检查使用记录在 OpenRouter 仪表盘查看详细使用记录识别异常请求模式比如同一请求重复发送分析token使用情况检查是否有请求发送了过长的文本确认是否错误使用了高成本模型检查代码逻辑确认是否有无限循环或重复请求检查缓存机制是否正常工作验证预算控制逻辑是否生效临时控制措施降低并发数设置更严格的预算限制暂时切换到低成本模型7.3 效果不满意时的调整如果成本降下来了但效果不理想重新评估路由策略可能某些任务需要更高能力的模型调整复杂度判断标准优化提示词工程更清晰的指令往往能提升便宜模型的效果提供更具体的上下文和要求分层处理策略先用便宜模型生成初稿只在必要时用昂贵模型进行优化或验证这种集成方案真正落地时最该盯住的不是功能列表而是输入格式、资源占用和失败重试。我一般会建议团队先小规模测试1-2周收集足够的用量数据后再制定正式的路由策略。

相关新闻

测试文章 001617 - 请忽略

测试文章 001617 - 请忽略

这是一篇测试文章,用于验证账号状态,将立即删除。

2026/10/5 14:27:58 阅读更多 →
HarmonyOS开发实战:小分享-使用hilog实现Ability生命周期日志埋点

HarmonyOS开发实战:小分享-使用hilog实现Ability生命周期日志埋点

前言 在生产环境中,App 的启动崩溃、页面跳转失败等问题,往往只能靠日志排查。HarmonyOS 提供了 hilog 日志系统,支持分级、过滤、脱敏。本篇以小分享 App 的 EntryAbility 为例,演示如何用 hilog 建立规范的日志埋点体系。详细 …

2026/10/5 14:28:01 阅读更多 →
SECDED ECC原理与FMC诊断模式在功能安全系统中的应用

SECDED ECC原理与FMC诊断模式在功能安全系统中的应用

1. 项目概述:SECDED ECC与FMC诊断模式深度解析在嵌入式系统,尤其是汽车电子和工业控制领域,数据的完整性就是系统的生命线。想象一下,一辆高速行驶的汽车,其发动机控制单元(ECU)的Flash存储器中…

2026/10/5 14:59:06 阅读更多 →

最新新闻

开源健身教练平台Workout.cool:训练计划与进度追踪实战解析

开源健身教练平台Workout.cool:训练计划与进度追踪实战解析

最近逛GitHub的时候翻到一个挺有意思的项目:Workout.cool,定位是“现代化开源健身教练平台”。顺手把仓库拉下来跑了一遍,又把文档和代码过了一遍,今天这篇就把这个项目掰开揉碎聊一聊——它到底解决了什么问题、训练计划和进度追…

2026/10/5 15:48:18 阅读更多 →
ADS1.2“Cannot obtain license”报错排查:从FLEXlm机制到环境变量

ADS1.2“Cannot obtain license”报错排查:从FLEXlm机制到环境变量

1. 报错背后的许可证机制:ADS1.2到底在检查什么最近帮一位朋友倒腾老实验箱,在一台Windows 11电脑上装完ADS1.2,兴冲冲打开命令行敲了一句armcc -v,结果屏幕直接弹出一行红字:Cannot obtain license for Compiler (fea…

2026/10/5 15:48:18 阅读更多 →
YOLOv5遥感目标识别:从环境复现到数据切图全流程解析

YOLOv5遥感目标识别:从环境复现到数据切图全流程解析

简介:面向遥感图像目标识别场景的YOLOv5完整项目包,涵盖卫星图像目标检测的Python程序代码、训练好的模型权重、网络结构配置及配套说明文档,适配高分项目与科研实训需求。项目代码经过验证运行稳定,适合计算机视觉相关专业学生用…

2026/10/5 15:48:18 阅读更多 →
开源免费Open-Shell:恢复Win10/11经典开始菜单与任务栏

开源免费Open-Shell:恢复Win10/11经典开始菜单与任务栏

如果你跟我一样,从Win7甚至XP一路用过来,再切到Win10、Win11,大概率会经历一段“找不准开始菜单”的暴躁期。新版开始菜单不是不好看,而是交互逻辑变了,鼠标用户尤其吃亏:磁贴挤、图标大、常用功能藏得深&a…

2026/10/5 15:48:17 阅读更多 →
Java IO流与文件操作:从原理到实战,避开常见坑

Java IO流与文件操作:从原理到实战,避开常见坑

很多人学Java时,对文件操作和IO流的感受就俩字:头疼。File类、InputStream、OutputStream、Reader、Writer……一套体系下来名词多、概念抽象,再加上编码、缓冲、异常处理这些细节,写起来总是不顺。但说实话,文件操作和…

2026/10/5 15:48:17 阅读更多 →
Python实时2D流体模拟:从Navier-Stokes到GPU加速的完整实现

Python实时2D流体模拟:从Navier-Stokes到GPU加速的完整实现

1. 这个项目到底想解决什么问题 先说结论:我这次折腾的目标,是纯粹用 Python 从零实现一个能实时交互的 2D 流体模拟器,核心基于 Navier-Stokes 方程,最终通过 GPU 加速把计算规模拉到肉眼可见的流畅帧率,整套流程覆盖…

2026/10/5 15:47:17 阅读更多 →

日新闻

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

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

2026/10/5 0:00:22 阅读更多 →
AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

1. 从“plugins”这个词说起:它到底在解决什么问题如果你最近在折腾 AI 编程工具,尤其是 Cursor、Codex CLI、Claude Code 这类带 CLI 的编辑器或命令行助手,那你大概率绕不开一个词——plugins。这个词本身不新鲜,从浏览器到 IDE…

2026/10/5 0:00:23 阅读更多 →
第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

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

2026/10/5 0:00:23 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/5 5:06:42 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/5 1:10:22 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/5 3:06:17 阅读更多 →

月新闻

我发现了一个新思路:用 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/4 11:40:45 阅读更多 →
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/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练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/4 20:14:29 阅读更多 →