Agent-Reach实战:构建AI Agent与外部世界的可控触达层
做 AI Agent 项目的人越来越绕不开一个尴尬的场面模型能力已经够强了Agent 却总是“想得到、够不着”。想查个库存数据内部系统接口文档过时想调用审批流权限体系一团浆糊想让模型读一份业务报表结果连数据源地址都找不到。Agent-Reach 这种项目的价值恰好就落在这一层——它的字面意思就是“智能体触达层”把 Agent 与外部世界的连接集中成一个可控、可路由、可观测的中间层。这篇文章我会把自己实现 Agent-Reach 的过程、架构取舍和踩过的坑完整拆开讲适合正在做 Agent 落地的开发者、架构师也适合那些被“模型很强但 Agent 很笨”折磨过的团队参考。1. Agent-Reach 解决什么问题从一次失败的调用说起1.1 一次真实的翻车现场我之前帮一个团队做内部运营 Agent需求听起来很简单让 Agent 帮运营同学查一下某个商品的实时库存再顺便给供货商发一封补货提醒邮件。模型用的是当时公认很强的商用模型Prompt 也调了好几轮Agent 的“大脑”完全没问题但一跑真实场景就开始翻车。商品库存接口是另一个部门维护的参数名从product_id改成了sku_code接口文档完全没同步Agent 按旧文档传参服务端直接返回 400。更头疼的是查库存需要先调一个内部“统一鉴权服务”拿临时 token而这个 token 的有效期只有五分钟Agent 稍微多推导两步再执行token 就过期了。补货邮件那边也不省心邮件模板换了格式Agent 生成的邮件正文和附件结构全都不匹配。这一连串问题没有一个跟模型能力有关。模型很聪明但它对“外部系统发生了什么变化”完全无知。我当时的结论是Agent 的智商重要但它能触达什么、以什么方式触达、触达不到时怎么优雅处理是另一个必须被正视的系统性问题。这也是 Agent-Reach 这个项目最早的原型动力——把“外部世界”的所有复杂性收敛到一个独立层里让 Agent 专注决策让触达层负责连接。1.2 Agent-Reach 的定位Agent 与外部世界的连接中枢如果你把一个 Agent 应用拆开看无非三层最上面是模型与推理中间是规划与记忆最下面是工具与数据。Agent-Reach 的定位非常明确它属于最下面那一层但又不是简单地把几个 API 封装一下而已。它的核心职责有三块一是把 Agent 发出的“意图式请求”翻译成真正可执行的工具调用二是承载所有与外部系统的交互约定包括鉴权、限流、重试、超时、错误码转换三是把每次触达的过程变成结构化数据提供给上层做观测和评估。这也是它和普通 API Gateway 的区别。API Gateway 做的是标准 REST 接口的流量管理而 Agent-Reach 面对的是 Agent 这种“半结构化、不确定意图”的调用方。Agent 可能说“帮我看看库存还够不够”也可能说“给采购发个催货消息”这些语言层面的意图要先被转换成一个确定性的动作签名然后才能去执行。没有这层转换Agent 再强也是在盲人摸象。2. 整体设计与方案选型Agent-Reach 的架构骨架2.1 为什么非要单独做一个触达层而不是直接写在 Agent 逻辑里很多团队第一版做 Agent 集成习惯把工具调用直接写在 Agent 的编排代码里if 意图 query_stock: call_stock_api()。小 Demo 这么写没毛病几十行代码就能跑通但一旦工具数量超过十个、外部系统超过三个这种写法就会变成灾难。第一个问题是耦合。每新增一个工具你都要改 Agent 的编排逻辑重新测试、重新发布模型的 Prompt 也可能要跟着调。第二个问题是不可观测。工具调用成功还是失败、失败在哪里全靠日志里碰运气找没有统一的结构化记录。第三个问题是无法治理。谁在调这个工具、调用频率多少、是否需要审批完全不受控。我在设计 Agent-Reach 时第一原则就是“把触达能力从 Agent 逻辑里剥出来”。这样做的好处是Agent 侧只面向一个抽象的“能力入口”外部系统的一切变化都被拦截在触达层内部。比如说某个库存接口换了鉴权方式我只需要更新 Agent-Reach 里的一个连接器配置Agent 和上层业务代码完全不用动。这就是独立触达层最直接的价值。2.2 四大核心模块协议层、路由层、执行层、治理层Agent-Reach 的整体架构我是按四个层次拆的。协议层负责统一 Agent 与触达层的通信语言我参考了社区里 MCP 这类工具协议的一些思路但做了更面向业务侧的简化路由层负责根据 Agent 的自然语言意图选择一个合适的工具和参数模板执行层负责真正调用外部系统处理所有技术细节治理层则管理注册、鉴权、限流、审计、观测这些横切能力。这四个层级虽然代码融在同一个服务里但概念边界必须清晰。我见过不少触达层项目最终做崩就是因为把路由规则、执行逻辑和治理配置全揉在一起结果改一个超时参数都得翻半天代码。模块化做清楚之后扩展一个工具、调整一个策略、排查一次故障都能在固定的位置快速完成。这一条我建议任何想自研触达层的人都先想明白。3. Agent-Reach 的三个关键设计概念理解原理才能用好它3.1 Agent 消息协议不是 API 的 API触达层要同时服务 Agent 这种“模糊调用方”和外部系统这种“确定性服务方”所以通信协议必须两头适配。我的做法是定义了一套结构化的 Agent 消息格式核心就三个字段意图标识、参数对象、上下文引用。from dataclasses import dataclass, field from typing import Any, Dict, Optional dataclass class AgentMessage: intent: str # 意图标识如 query_inventory params: Dict[str, Any] # 参数尽量使用扁平化的键值对 context: Optional[Dict[str, Any]] field(default_factorydict) trace_id: Optional[str] None这套协议看似简单但有个很关键的原则参数必须由路由层产出而不是由 Agent 直接拍脑袋生成。Agent 只负责表达粗糙的意图例如“查库存”真正的参数模板sku_code、warehouse_id来自路由层的配置。这样设计是为了把模型幻觉对参数的影响降到最低。你总不希望 Agent 自己发明一个不存在的product_id字段吧消息协议的重点不是复杂而是它能给路由和执行提供一个稳定的中间表示。3.2 工具路由规则从意图到能力的映射路由是 Agent-Reach 里最容易让新人困惑的部分。我理解的路由分两层第一层是意图归一化把“看看库存”“查一下货”“库存够不够”这些不同说法归到一个标准意图上第二层是能力匹配在标准意图发生后根据上下文选择具体执行哪个工具。在第一版实践里我没有依赖复杂的自然语言理解模型而是用了一个相对轻量的方案意图词典加上关键词加权。每个工具注册时声明自己支持哪些同义短语和触发关键词路由层计算匹配度。实测发现只要词典维护得仔细80% 以上的请求都能准确命中。剩下那些模糊请求就进入人工确认流程由用户在下拉框里选一下具体工具。这种做法虽然没那么“炫”但对内外部系统对接来说可维护性比端到端语义理解重要得多。3.3 执行上下文与隔离触达层必须守的安全边界触达层因为要和大量外部系统交互安全边界的设计不能偷懒。“执行上下文”这个概念我是在做了两三个连接器之后才真正重视起来的。简单说每一个外部工具调用都必须有一个明确的身份体包括操作者、来源系统、权限级别和审计追踪号。Agent 或者用户通过触达层调接口不应该直接拿着外部系统的底层凭证到处跑而应该换取一个受限的临时凭证。我设计了一个很朴素的规则所有外部调用都走统一凭证代理底层系统不感知 Agent 是谁它只知道“有个经过 Agent-Reach 认证的调用方在请求”。这样在出问题追责的时候所有记录都能落到 Agent-Reach 的审计日志里不会出现“某个调用到底是哪个用户还是哪个 Agent 发起的”这种理不清的账。另一个细节是执行超时和资源隔离每个工具调用单独分配执行槽位和超时预算一个慢接口拖垮整个触达层的情况我在前期版本里遇到过后来加了超时熔断才根治。4. 落地实操Agent-Reach 第一版实现记录4.1 环境准备与依赖选型实现 Agent-Reach 第一版我用的是 Python 技术栈因为团队原本就有 Python 服务而且 AI 生态的对接库更丰富。核心依赖只有四个FastAPI 用来暴露触达层自身的 HTTP 接口Pydantic 做消息与参数的校验Redis 做路由缓存和限流计数PostgreSQL 存工具注册信息和审计日志。这里我给一个特别注意不要一上来就去选一个很重的分布式工作流引擎。触达层早期最重要的是快速验证协议和路由思路单体服务单库完全够用。等到工具数超过三四十、QPS 有明显压力的时候再把执行器拆成独立服务都不迟。踩过这个坑的人会明白过度设计比设计不足对项目的伤害更大。4.2 核心代码实现路由注册与工具执行我把第一版的实现拆成三个核心文件来写路由注册器、工具执行器、主入口。路由注册器维护一张工具表每个工具包含元信息、参数模板和实际执行函数工具执行器负责解析 AgentMessage、加载参数模板、调用外部系统并统一包装返回主入口则把 FastAPI 服务和这两个模块串起来。# route_registry.py from typing import Callable, Dict, List, Optional class ToolSpec: def __init__(self, name: str, intent: str, param_template: dict, handler: Callable, timeout: int 10): self.name name self.intent intent self.param_template param_template self.handler handler self.timeout timeout class RouteRegistry: def __init__(self): self._intent_map: Dict[str, List[ToolSpec]] {} def register(self, spec: ToolSpec): self._intent_map.setdefault(spec.intent, []).append(spec) def match(self, intent: str, params: dict) - Optional[ToolSpec]: candidates self._intent_map.get(intent, []) if not candidates: return None if len(candidates) 1: return candidates[0] for spec in candidates: if all(k in params for k in spec.param_template): return spec return None# executor.py import time, traceback from dataclasses import dataclass dataclass class ExecResult: ok: bool data: dict error_code: str elapsed_ms: int 0 class ToolExecutor: def __init__(self, registry: RouteRegistry): self.registry registry def execute(self, msg) - ExecResult: spec self.registry.match(msg.intent, msg.params) if spec is None: return ExecResult(okFalse, data{}, error_codeROUTE_NOT_FOUND) filled_params {k: msg.params.get(k) for k in spec.param_template} if any(v is None for v in filled_params.values()): return ExecResult(okFalse, data{}, error_codePARAM_MISSING) start time.time() try: data spec.handler(**filled_params) elapsed int((time.time() - start) * 1000) return ExecResult(okTrue, datadata, elapsed_mselapsed) except Exception as exc: elapsed int((time.time() - start) * 1000) return ExecResult(okFalse, data{}, error_codefHANDLER_ERROR:{type(exc).__name__}, elapsed_mselapsed)这段代码看起来不复杂但已经包含了触达层最核心的骨架。注册器里我特意要求每个参数模板必须是扁平化键值对不用嵌套对象因为 Agent 的输入天然是松散结构嵌套对象会显著增加参数校验的复杂度。执行器里所有异常都会被捕获并统一转换成error_code这样上层返回给模型的信息就是机器可读的再配合补充的自然语言描述模型的下一步决策会稳定很多。4.3 关键参数设计与计算不是拍脑袋定的触达层最容易被低估的是参数设计。我在第一版里对三类参数做了专门推演超时时间、重试次数和并发上限。超时时间的设计逻辑不是看某个接口的平均耗时而是看它的 P99 耗时。假设库存查询接口 P99 是 3 秒那超时至少要设到 5 秒留出网络抖动余量但如果是聊天机器人场景整个交互链路的超时要控制在 8 秒以内Agent-Reach 单次触达就不能把预算耗尽。重试次数我遵循一个“单次链路最多重试两次”的硬规则同时只允许对幂等操作做重试。查库存这种读接口重试是安全的但“发送邮件”“创建订单”这类写接口一旦失败必须进入人工确认队列绝不能盲目重试。不然一个超时引发的重复下单会让你凌晨三点爬起来收拾烂摊子。并发上限的计算就更直接了我按“外部系统能承受的 QPS 乘以一个 0.7 的保守系数”来定宁可让 Agent 排队等待也不能把下游系统打挂。参数设置值设定依据单次工具调用超时P99 耗时 2s覆盖网络抖动避免尾部延迟拖垮交互重试策略最多 2 次仅幂等操作写操作重试风险过高必须人工介入并发上限下游可承受 QPS × 0.7为突发流量留出缓冲限流窗口Redis 滑动窗口 60s平滑突发集中调用这些参数不是一次性写死就完事我建议上线后至少要观察两周根据真实的流量分布去校准。前期宁可参数偏保守比如超时稍微长一点、并发稍微低一点也不要一上来就追求极致性能稳定性永远优先。5. 场景实战配置一个数据查询 Agent 的完整流程5.1 从注册工具到意图标定的配置过程光讲架构还不够我拿一个真实的“数据查询 Agent”场景走一遍配置流程。假设我们要让 Agent 帮业务同学查询订单数据外部系统是公司的数据服务提供一个get_orders接口。第一步是在 Agent-Reach 的注册表里新增一个工具工具名称orders_query意图标识query_order_data参数模板固定为user_id和date_rangehandler 指向数据服务的 SDK 调用函数。第二步是配置意图路由。我在意图词典里加上“查订单”“订单情况”“看看单量”等短语全部映射到query_order_data。这里有个细节同一个意图下面可能挂多个工具比如“查订单”既可能是查订单列表也可能是查订单金额汇总。我的做法是为两个工具分配不同名称并给参数模板加上更严格的必填项比如汇总查询必须传metricamount这样路由匹配时可以根据参数差异自动选择。5.2 联调验证与效果观察配置完成后联调阶段我一般从“最直白的指令”开始测。先输入“帮我查一下用户 12345 昨天的订单”看路由是否正确命中orders_query参数是否被正确填充成user_id12345、date_rangeyesterday。然后故意测一些模糊表达比如“我昨天的单多吗”这句话的关键词命中率不高路由层可能会返回模糊候选。我在第一版里做了一个兜底方案返回候选列表给上层让用户选择到底要查订单列表还是订单汇总。整个流程验证下来我最大的感受是触达层的调优相当依赖“坏样本”。不要只跑顺利的路径要刻意构造参数缺失、意图模糊、下游超时这些情况看路由和执行层能否给出合理反馈。我甚至建议在测试环境做一次故障注入把下游接口随机变成 500 错误看重试、熔断和错误码链路是否按预期工作。这些测试做完Agent-Reach 才算是真正可上线的状态。6. 踩坑实录Agent-Reach 落地中的常见问题与排查技巧6.1 高频问题速查表高频问题典型表现排查方向路由频繁不命中Agent 反馈“找不到可用工具”检查意图词典是否覆盖真实说法关键词权重是否合理参数频繁缺失工具报PARAM_MISSING查看 Agent 上游是否按参数模板传参还是路由层抽取逻辑太严下游系统偶发超时交互链路整体变慢触达层超时设置过短或未按外部系统 P99 配置预算重复执行写操作订单、邮件被创建多次检查重试策略是否错误覆盖了非幂等操作审计日志查不到调用方日志里只有触达层服务名链路中未传递trace_id与操作者身份上下文工具更新后旧请求失败下游改参数名、改签名注册表未做工具版本管理新旧版本路由冲突这些问题基本覆盖了触达层在初期的典型痛点。我印象最深的是工具版本问题外部接口升级后我用新签名替换了旧 handler结果旧请求还在按旧意图词典匹配参数直接错位。后来我给工具注册表加了版本字段同一工具允许多版本并存路由时按调用方传入的兼容性偏好选择。这个改动很小但避免了后期大量联调和回归的麻烦。6.2 排查思路与避坑心得排查触达层问题时我的习惯是先找“错误码是否结构化”。如果 Agent 返回的只是一句“系统错误请稍后重试”上层根本不知道问题出在哪里。Agent-Reach 执行器里我强制要求每个失败路径都返回error_code加debug_msg前者给系统判断用后者给开发人员排查用两者严格分离。这样模型能拿到友好的错误信息不会把技术报错当聊天空洞处理。另一个贴身体会是不要盲目堆重试。我碰到过一位同事为了让触达层更“稳”把重试次数调到五次每个超时请求都叠加重试结果下游系统在故障期间被连续打了好几轮故障恢复时间反而更长了。后来我把重试策略改成“首次失败快速失败第二次重试放在退避窗口后”同时接入熔断器。这个改动上线后系统稳定性立竿见影地提升。避坑清单我总结下来其实就一句话触达层优先要的不是聪明而是可控。每加一个工具就问三件事它在意图上是否唯一参数模板是否能覆盖真实情况失败时上层怎么理解这三个问题回答清楚了Agent-Reach 的复杂度和稳定性就都有底了。7. 我的个人体会与下一步扩展方向Agent-Reach 这种触达层项目本质上是在给 Agent 规划一条通往外部世界的“高速公路”。模型负责决定去哪触达层负责保证路上不出事、出事了有人能查。我在实际推进过程中最深的一点体会是“克制比堆功能重要”。不要第一版就把所有能想到的协议、标准、插件全部接进来先把路由、执行、治理这条主链路跑稳再谈扩展。最后分享一个每次讲 Agent-Reach 我都会强调的小技巧把你所有能想到的坏请求、错参数、超时场景做成一组自动化测试用例每改一次触达层代码就全量跑一遍。这套回归用例在前期看起来“收益不明显”但等你接的工具超过十几个、团队又陆续加入新人之后它的价值会无限放大。触达层属于典型的“平时不显山露水、一出问题就是大事”的基础设施把底子打好、把流程固化比写再多炫酷功能都更值得投入。

相关新闻

Ghidra 10 Windows安装配置与反编译实战指南

Ghidra 10 Windows安装配置与反编译实战指南

简介:这是一份Ghidra 10.1.2 Windows端离线安装包,目标是让安全研究人员、软件开发者与逆向工程师在Windows环境下顺利完成二进制代码分析。Ghidra由NSA开源维护,集反汇编、函数边界识别、类型重建、图形化调用链展示、Python/Java脚本扩展等…

2026/10/9 16:08:17 阅读更多 →
Moq在.NET单元测试中的高效应用与工程实践

Moq在.NET单元测试中的高效应用与工程实践

1. 为什么Moq不是“又一个Mock框架”,而是.NET测试工程化的分水岭在某公司重构遗留订单系统时,我接手过一个典型场景:核心服务依赖外部支付网关、库存中心和用户画像API,三个接口全部走HTTP调用。单元测试跑一次要等8秒——不是因…

2026/10/9 16:08:17 阅读更多 →
从需求分析到测试建模:状态机、正交表与AI缺陷预测的实战方法

从需求分析到测试建模:状态机、正交表与AI缺陷预测的实战方法

做了十多年软件测试,我见过太多人拿到需求文档的第一反应是:打开Word,从头到尾读一遍,然后开始写测试用例。结果呢?用例写了上百条,上线前还是漏了一个关键场景——因为那条隐藏的业务规则藏在第38页的脚注…

2026/10/9 16:08:17 阅读更多 →

最新新闻

Func、Skill 与 MCP:Agent 工具调用三层架构实战指南

Func、Skill 与 MCP:Agent 工具调用三层架构实战指南

最近在折腾 Agent 开发时,被一个概念问题搞得有点上头:工具到底该用 func、skill 还是 MCP?搜索引擎的结果五花八门,有说 skill 是未来,有说 MCP 才是标准,还有的直接把 function calling 当成全部。等我把…

2026/10/9 17:18:14 阅读更多 →
Android HTML答题引擎:Kotlin+Java双语言深度集成方案

Android HTML答题引擎:Kotlin+Java双语言深度集成方案

简介:这是一份面向Android开发初学者与进阶学习者的HTML整合型答题APP完整源码项目,适用于移动应用开发实践、混合式界面设计及Kotlin/Java协同开发场景。资源共786个文件,总大小47.87MB,涵盖182个Java与8个Kotlin源文件&#xff…

2026/10/9 17:18:14 阅读更多 →
手写BP神经网络实现鸢尾花和红酒分类:从原理到避坑

手写BP神经网络实现鸢尾花和红酒分类:从原理到避坑

简介:这是一份面向高校机器学习课程的BP神经网络实验资源,以鸢尾花与红酒数据集为对象,完成二分类/多分类建模练习,适合正在学习前馈神经网络、反向传播算法或需要快速搭建课程实验的学生参考。压缩包共收录18个文件,包…

2026/10/9 17:18:14 阅读更多 →
Ubuntu下zip压缩解压指南:命令行操作、乱码解决与tar.gz选型

Ubuntu下zip压缩解压指南:命令行操作、乱码解决与tar.gz选型

我最近在整理一批旧项目的归档文件,同事从Windows那边发过来的压缩包在Ubuntu下面解压时又是一堆乱码文件名,加上自己这边要批量打包日志目录上传,来来回回折腾了好几次。索性把在Ubuntu下用zip压缩和解压文件夹的完整操作、踩坑记录和替代方…

2026/10/9 17:18:14 阅读更多 →
MySQL新手避坑指南:从命令行实操到生产级排错

MySQL新手避坑指南:从命令行实操到生产级排错

简介:本资源是一份面向数据库初学者与Web开发入门者的MySQL基础教学课件,聚焦关系型数据库核心概念、设计方法与SQL实践,特别适合高校计算机课程教学、自学备考及后端开发岗新人夯实基础。课件以PPTX格式呈现,共1个文件&#xff0…

2026/10/9 17:18:13 阅读更多 →
抽象工厂与原型模式对比:从产品族到对象复制的创建型模式选型指南

抽象工厂与原型模式对比:从产品族到对象复制的创建型模式选型指南

说实话,我最早把抽象工厂和原型模式放在一起对比,并不是因为它俩长得像,恰恰相反,它俩一个是"批量生产新对象",一个是"复制已有对象",从设计思路上八竿子打不着。但最近在给几个做技术…

2026/10/9 17:17:10 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

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/8 15:26:32 阅读更多 →
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/8 15:26:40 阅读更多 →
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/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 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/8 21:13:17 阅读更多 →
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/8 15:26: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/9 6:17:20 阅读更多 →