Agent-Reach:让AI Agent真正“有手有脚”的触达与调度中间层
这两年我带过好几个Agent落地的项目有个问题几乎每次都出现模型本身挺聪明可真到要让Agent替用户办点事它就卡住了。卡点不在推理在“触达”——Agent够不到该够的东西。项目Agent-Reach就是为了解决这个问题立项的。Agent-Reach这个名字拆开看很直白Agent是智能体Reach是能触达的范围。在我们内部它被定位成一个轻量级的触达与调度中间层负责回答三个问题Agent能得到什么能力、能调用哪些工具、能把结果主动推给谁。这个项目适合两类人参考一类是已经在做Agent原型但要往生产环境推时发现工具很乱、渠道很杂的团队另一类是刚开始接触多Agent协作、对工具调用还没有体系化认知的开发者。这既不是模型层的东西也不是业务流程系统它就是让Agent“有手有脚”的那一层。1. 先搞清楚Agent-Reach到底解决什么问题1.1 从“模型会说话”到“Agent能办事”之间缺的是触达层很多团队第一次做Agent演示时都挺兴奋问一句天气Agent能答让写个周报Agent能生成。但一接到真实的业务需求就露馅了。比如客服场景“帮我查一下订单为什么还没发货”Agent要做的不是回复一句“建议您联系物流”而是真的去查订单库、查物流接口、拿到轨迹再把结果整理成人话发给用户。这个流程里每一步都依赖触达查订单需要触达业务数据库查物流需要触达第三方接口发消息需要触达聊天渠道。模型负责的是中间的“想”触达层负责的是前后的“做”。没有触达层模型连“做”的机会都没有。Agent-Reach就是把这些“做”的部分集中管理起来避免每个Agent各搞一套工具连接最后变成一地鸡毛。更麻烦的是上下文断层。一个Agent查完订单如果不把订单号、用户ID、物流状态存下来下一个Agent再想查后续就得让用户重新说一遍。Agent-Reach里专门有一层状态总线负责让工具调用的输入输出在多个任务之间流动这是很多自研Agent最容易忽略的部分。1.2 与Function Calling、RPA、API网关的区别我经常被问到已经有Function Calling了为什么还要Agent-Reach这个问题得说清楚不然容易重复造轮子。我把这几样东西放在一张表里对比过方案核心作用主要局限与Agent-Reach的关系Function Calling让模型从候选函数中选择并生成参数只解决“选哪个函数”不解决工具注册、权限、渠道触达可以接入Agent-Reach作为执行器API网关管理后端服务的静态路由、鉴权、限流面向服务不感知对话上下文和用户意图可作为Agent-Reach的后端依赖RPA模拟人在界面上的操作脆、慢适合遗留系统兜底可作为特殊“工具”注册进来Agent-Reach统一管理Agent的技能注册、语义路由、渠道触达和状态流转需要和模型层、业务系统配合本身不是模型是前面的调度层和触达层简单说Function Calling是模型侧的协议能力Agent-Reach是系统侧的编排能力。一个管“怎么跟模型对话”一个管“怎么把对话变成动作”两者是配合关系。而API网关解决的是南北向流量Agent-Reach更多解决的是Agent和工具、Agent和用户之间的“最后几米”。2. Agent-Reach的核心设计把“触达”当成一等公民2.1 四大组件技能注册表、语义路由、渠道适配器、状态总线Agent-Reach内部有四个核心组件在设计上我建议一开始就把它们分开不要混在一个模块里否则后面扩展的时候会非常痛苦。第一是技能注册表。所有能被Agent调用的工具都要在这里登记登记的内容不只是函数地址而是完整的结构化描述工具名称、用途说明、入参定义、出参定义、权限标签、超时时间。没有注册表的工具Agent-Reach默认“不存在”这是为了安全——宁可够不到也不能乱够。第二是语义路由。接到用户任务后不可能每次都由主模型遍历所有工具那样既慢又费token。语义路由先根据工具描述做一次粗筛把候选范围缩小到三到五个再交给模型做精确选择和参数填充。粗筛可以用向量召回也可以用规则关键是要快。第三是渠道适配器。同一个结果可能要发到Web端、企业微信、邮件或者短信每个渠道的消息格式和要求完全不同。渠道适配器把Agent产生的结果统一转成标准消息结构再由各渠道插件负责渲染和推送。这里有个容易踩的坑很多人觉得“发个消息而已”结果每个业务方都自己写一段推送代码最后渠道一多根本管不住。第四是状态总线。它记录每轮对话的上下文、已调用的工具、工具返回的结果摘要、还有当前会话的权限范围。状态总线不存完整的原始流量只存轻量级的摘要和引用避免存储压力过大。多Agent协作时状态总线就是它们之间的“共享便签”。2.2 为什么“描述即契约”是关键Agent-Reach里有一个很重要的理念工具的描述就是Agent能理解的全部契约。模型不会去看你后端的代码实现它只靠注册表里的描述来判断“这个工具适不适合当前任务”所以描述写得差模型要么不用要么乱用。举个反例。有个团队给订单查询工具写的描述是“根据订单号查询订单详细信息”听起来没问题但模型不知道“订单详细信息”包含什么也不知道什么情况下应该优先用这个工具而不是别的。改成这样会好很多工具名: query_order 用途: 当用户询问订单状态、物流信息、发货时间时使用此工具。 前置条件: 必须确保order_id存在且当前会话用户对该订单有查看权限。 入参: order_id: 字符串订单号格式为ORD开头加12位数字 出参: status: 枚举(pending/shipped/delivered) tracking_logs: 数组按时间排序的物流轨迹 注意: 如果order_id无效返回错误码4001不要尝试猜测。描述即契约还有另一层含义当工具出参结构变化时要重新评估描述是否仍然准确。很多团队升级了接口忘了更新注册表结果模型按旧参数生成调用线上疯狂报错。这就像你改了API的字段名却不更新文档调用方肯定崩。3. 实操从零搭一个Agent-Reach最小可用版3.1 准备与总体目录结构Agent-Reach本身并不依赖某个特定的大模型厂商我们用OpenAI兼容接口做演示但中间层完全解耦。技术栈选择上Python加FastAPI是最省事的组合生态成熟写起来也快。整个最小可用版我建议控制在五个文件以内先跑通链路再说。agent_reach/ ├── schema.py # 工具注册数据结构 ├── registry.py # 技能注册表 ├── router.py # 语义路由 ├── server.py # FastAPI入口与执行器 └── channels.py # 渠道适配器演示WebSocket这个结构对应前面说的四个组件registry对应技能注册表router对应语义路由channels对应渠道适配器schema里的会话状态先简单放内存里即可。为什么要拆这么细因为后续每个文件都可以单独演化为服务现在拆好了后面不用重构。3.2 核心代码技能注册与语义路由先定义工具的数据结构。这里我用dataclass不用太重的东西# schema.py from dataclasses import dataclass, field from typing import Any, Callable, Awaitable, Optional dataclass class ToolSignature: name: str description: str parameters_schema: dict required_permission: str user timeout_seconds: int 10 handler: Optional[Callable[..., Awaitable[Any]]] None dataclass class RoutingCandidate: tool_name: str score: float reason: str接着是注册表本身它负责保存工具也负责根据文本召回候选。最简单的召回方法是用词频重叠但实际项目里我建议大家直接用现成的向量库比如把工具描述embedding后做余弦相似度。为了演示我写一个同时支持关键词和向量接口的版本# registry.py from typing import List from schema import ToolSignature, RoutingCandidate import re class ToolRegistry: def __init__(self): self._tools: dict[str, ToolSignature] {} def register(self, tool: ToolSignature): if tool.name in self._tools: raise ValueError(fduplicate tool: {tool.name}) self._tools[tool.name] tool def _keyword_score(self, text: str, tool: ToolSignature) - float: text text.lower() tokens set(re.findall(r[a-z0-9], text.lower())) desc_tokens set(re.findall(r[a-z0-9], tool.description.lower())) return len(tokens desc_tokens) / max(1, len(tokens | desc_tokens)) def route(self, user_text: str, top_k: int 5) - List[RoutingCandidate]: scored [] for tool in self._tools.values(): score self._keyword_score(user_text, tool) if score 0: scored.append(RoutingCandidate(tool.name, score, keyword)) scored.sort(keylambda x: x.score, reverseTrue) return scored[:top_k]这里的keyword_score只是演示用的粗糙方法生产环境我会把工具描述加到embedding里然后做一个向量检索。OpenAI的函数调用本身也会做类似选择但Agent-Reach的语义路由是先做一轮粗筛减少传给主模型的候选数量省时间和token。在server.py里我们接收用户请求先做粗筛然后把候选工具描述塞给模型让模型产出最终函数调用。这一步需要调用大模型接口我只写关键的组装逻辑# server.py 关键片段 from registry import registry from fastapi import FastAPI from pydantic import BaseModel app FastAPI() class ChatRequest(BaseModel): session_id: str message: str class ChatResponse(BaseModel): reply: str used_tools: List[str] def build_function_schemas(tools: List[ToolSignature]) - List[dict]: return [ { type: function, function: { name: t.name, description: t.description, parameters: t.parameters_schema, } } for t in tools ] app.post(/chat, response_modelChatResponse) async def chat(req: ChatRequest): candidates registry.route(req.message, top_k5) candidate_tools [registry._tools[c.tool_name] for c in candidates] schemas build_function_schemas(candidate_tools) # 将schemas和req.message一起发给大模型让模型决定调用哪个工具 # 这里省略模型调用实际项目中可用openai.ChatCompletion等接口 ...有两点要在代码里说明白一是候选工具数量不要超过五个太多了模型容易选错二是每个候选工具都要完整带参数描述不要为了省token而裁剪裁剪会导致参数缺漏。我们实测下来五个工具加完整schema大概多花几百个token但调用成功率能明显提升。3.3 触达渠道适配一个WebSocket消息出口示例Agent触达用户不都是等用户来问还有主动推送的场景比如订单状态变更后要给用户发通知。我们用一个WebSocket通道演示渠道适配器如何工作# channels.py import asyncio from typing import Dict from fastapi import WebSocket class ChannelManager: def __init__(self): self._connections: Dict[str, WebSocket] {} async def connect(self, session_id: str, ws: WebSocket): await ws.accept() self._connections[session_id] ws def disconnect(self, session_id: str): self._connections.pop(session_id, None) async def push(self, session_id: str, message: dict): ws self._connections.get(session_id) if ws: await ws.send_json(message)这个类是渠道适配器的雏形。实际项目中这里可以扩展成多种渠道的抽象层比如定义一个BaseChannelWebSocket、企业微信、邮件各自实现send方法上层调用时根本不用关心用户当前在哪个渠道。这个抽象非常重要因为用户经常会在多端间切换如果渠道逻辑散落在业务代码里后期就是一场灾难。4. 实践中沉淀的关键规则与避坑指南4.1 给工具写描述的六个检查项技能注册表的描述写得好不好直接决定Agent行为准不准。我踩了半年坑后沉淀了六个检查项每次注册工具前都会过一遍场景触发条件必须写清楚写明“当用户询问X时使用”而不是泛泛地写“查询数据”。前置条件和失败场景要写明比如“如果查不到返回NOT_FOUND不要猜测”否则模型会编造结果。参数格式给死日期给YYYY-MM-DD枚举给可选列表不要留自由发挥空间。明确指出工具副作用比如是否发短信、是否改数据库让路由层可以做权限判断。出参结构简洁太长的返回要摘要后再返回给模型否则上下文很快被撑爆。写清“不要做什么”比如“不要在订单未发货时回复已发货”负向约束往往比正向约束更关键。这六项看着简单真正执行起来需要工具所有者配合。一开始我们把工具交付给Agent团队时没有这个规范后来每个工具上线的review都要求提交注册描述问题量立刻少了一大半。4.2 权限与安全边界要提前设计Agent-Reach最大的安全隐患不是模型胡说八道而是工具被滥用。一个Agent只要能用查询接口就可能被诱导去遍历用户数据。我们在设计权限时定了三条硬规则第一所有工具有权限标签只读与写操作强制分离第二对用户敏感数据查询必须校验会话归属不允许跨用户访问第三写操作必须二次确认不能只靠模型的一次判断。代码上比较简单就是在路由执行前加一层拦截器。比如读类工具走user级权限写类工具至少走admin权限并弹出确认消息给用户。我们还在Agent-Reach里设计了审计日志记录“哪个会话、什么时间、调了什么工具、传了什么参数”这个日志对排查线上疑难问题极其重要。刚开始觉得审计浪费存储后来发现没有审计根本没法定位多Agent之间的数据流问题。4.3 超时、重试和降级外部工具不会乖乖一直在线第三方接口时常慢如蜗牛甚至直接挂掉。Agent-Reach里每类工具都配了独立的超时时间查询类10秒写操作30秒对于超过阈值的一律按失败处理不要无限等。重试策略上幂等查询可以重试两次写操作默认不重试因为重试可能造成重复扣款、重复下单这种责任谁也担不起。降级策略也很重要。当核心工具不可用时Agent可以退而求其次比如查不了实时库存就告诉用户“系统正在维护稍后再试”或者引导用户转人工。注意这里的降级不能由模型自由发挥要由Agent-Reach的路由层根据工具健康状态强制指定。我们把工具健康状态做成一个简单的心跳表注册表里每个工具都记录最近成功时间连续三次失败就自动标记为不可用路由时直接排除。5. 常见问题排查实录5.1 Agent老是“沉默”或答非所问这是我们上线初期最头疼的问题。用户问“我的快递到哪了”Agent半天不回复或者回复一句“我无法查询”。查下来发现原因多半是候选工具列表里根本没有订单查询工具。我们的语义路由用的关键词召回用户说“快递”但工具描述里写的是“物流”词不匹配于是就没召回到。解决方法是给工具写多个别名和近义词在描述里把“快递、物流、包裹、发货、在途”都写上。另一个办法是把召回维度从关键词扩展到向量语义用embedding处理同义替换。这个改动之后工具召回率提升非常明显。如果你也遇到类似沉默问题先别怀疑模型去查路由日志看看候选工具到底给了哪些。5.2 工具调用成功了但结果没用上另一个高频问题后台日志显示工具确实被调用了也返回了正常数据但用户回复仍旧是空话套话。后来我们排查发现问题出在工具返回结果太大塞进上下文后把关键信息淹没了。比如物流接口返回了整个路径的所有轨迹点模型在压缩时把“已签收”这个关键状态丢了最后只能泛泛地说“您的快递正在转运中”。解决思路是工具出参先做摘要只把最关键的字段交给模型或者用结构化数据渲染成简短文本。我们在渠道适配器里增加了一个“结果语义压缩”环节每个工具都配一个结果精简器把几百行的物流轨迹压缩成一条“包裹已于6月18日签收”。这个经验我强烈建议你直接copy。5.3 多Agent之间的触达冲突在Agent-Reach上线多Agent后又发现了一个新问题两个Agent同时在处理一个会话一个刚给用户发了条关于优惠活动的消息另一个马上又发了退款进度用户被连番轰炸。状态总线里只有业务数据缺少“触达节奏”信息。我们在状态总线里加了触达时间约束每个渠道配置了最小消息间隔比如企业微信渠道两次主动推送间隔不能低于三秒还要加全局的会话级互斥锁同一时刻只能有一个Agent在进行主动推送。说白了就是给Agent的“手”装上节拍器不然手多了也容易打架。5.4 问题速查表现象可能原因处理动作Agent不调用工具描述缺触发词、候选被路由过滤检查语义路由日志补别名增强召回工具调用成功但结果没用上返回太大被上下文压缩掉关键字段增加结果摘要器确保关键状态保留参数错误、模型把参数拼错参数schema描述不够具体给默认值示例注明格式如日期为YYYY-MM-DD主动推送重复缺少会话互斥、渠道间隔控制加触达节奏约束敏感数据被越权访问权限校验缺失强制加会话归属校验和权限标签6. 用Agent-Reach后的效果与扩展方向6.1 内部实测效果在客服订单场景里我们内部迭代了三周先跑通单Agent加三个工具再扩展到五个Agent加二十个工具。粗算下来的数据是工具召回率从最初的65%左右提升到92%单次对话的模型调用token数量降了约30%因为语义路由帮主模型过滤掉了大量无关工具。更重要的是排障效率以前一个问题要翻好几个服务的日志现在直接在Agent-Reach的审计视图里就能看到完整调用链。这些数字算不上惊艳但生产环境里稳定比惊艳重要。Agent-Reach真正带来的变化不是单点能力的跃升而是把“Agent到底能干什么”变成了一张随时可查的动态清单。产品经理来问“能不能加个查发票功能”我们只需要在注册表里填一张新工具卡半天就能上线。6.2 还可以扩展的方向版本迭代中我已经看到几个值得深挖的方向。一是接入MCP这类工具协议让Agent-Reach的注册表可以直接消费外部生态的工具描述二是支持多租户不同业务线用不同的技能包和权限模型三是离线触达比如短信、邮件等异步渠道的编排。还有一个我们正在尝试的方向是把状态总线升级成事件流让Agent-Reach能听到更多系统的业务事件而不仅仅是响应用户提问。这几个方向本质都是同一个逻辑把触达范围做得更大、更可控、更可观测。工具越来越多渠道越来越杂这套中间层的价值只会越来越明显。这个项目做到现在我最大的体会是Agent工程的复杂度根本不在模型侧而在触达侧。模型选型、prompt调优固然重要但真正决定Agent能不能从一个demo变成生产服务拼的就是触达这层细活。如果你也被工具调用混乱、渠道对接繁琐、多Agent协作冲突这些问题困扰我建议别一上来就搭建宏大平台先按Agent-Reach的最小结构跑一个垂直场景把注册、路由、渠道、状态串起来再逐步扩展。现在很多人一提起Agent就谈模型但模型再好也架不住够不到东西先把路铺好Agent才走得远。

相关新闻

Linux下Oracle 11g R2安装全攻略:环境准备到排错实战

Linux下Oracle 11g R2安装全攻略:环境准备到排错实战

简介:针对Linux环境安装Oracle 11gR2的详细图解文档,适合具备一定Linux命令行与数据库管理基础的运维工程师、DBA,或有部署需求的技术人员;因步骤拆解清晰,新手也能按图索骥完成单机环境搭建。资源为单个doc文档&#…

2026/10/14 0:01:41 阅读更多 →
Logistic回归在时间序列预测中的应用与实践

Logistic回归在时间序列预测中的应用与实践

1. 项目背景与核心价值时间序列预测在金融风控、医疗诊断、工业设备维护等领域具有广泛应用价值。传统线性回归在面对二分类预测问题时往往力不从心,而Logistic回归凭借其独特的Sigmoid函数转换,能够将线性回归结果映射到(0,1)区间,完美适配概…

2026/10/14 0:01:41 阅读更多 →
8种电弧模型MATLAB实现:从Mayr到Cassie的断路器仿真指南

8种电弧模型MATLAB实现:从Mayr到Cassie的断路器仿真指南

简介:8种电弧模型的MATLAB实现包,面向电气工程专业学生、研究人员及电力系统工程师,用于电弧放电现象的原理验证、特性分析与工况仿真。压缩包共6个文件,含2个Simulink模型可分别演示集成与单模型运行;2份PDF文献阐述大…

2026/10/14 0:01:41 阅读更多 →

最新新闻

尖叫声音样本数据集eva:从包结构到训练基线的完整实践

尖叫声音样本数据集eva:从包结构到训练基线的完整实践

简介:EVA尖叫声音样本数据集是一份面向音乐信息检索(MIR)与音频分类研究的人声尖叫样本库,由台湾清华大学MIR课程项目整理,旨在为尖叫检测、异常声音识别、SVM分类等实验提供稀缺的领域数据。压缩包共63个文件&#xf…

2026/10/14 0:47:55 阅读更多 →
现代C++多线程编程实践与优化指南

现代C++多线程编程实践与优化指南

1. 现代C多线程编程的核心价值十年前我刚接触多线程编程时,还在用pthread这类原始接口手动管理线程生命周期。现代C11标准引入的库彻底改变了游戏规则——现在我们可以用更安全、更直观的方式构建并发程序。举个例子,过去需要几十行代码实现的线程同步&a…

2026/10/14 0:47:55 阅读更多 →
Neo4j驱动的RAG:从向量检索到知识图谱推理的工程跃迁

Neo4j驱动的RAG:从向量检索到知识图谱推理的工程跃迁

1. 这份“日报”不是资讯汇编,而是工程实践的切片快照你点开这份标题为《Agent / LLM 技术精选日报 2026-09-28(知乎版)》的文档时,大概率会下意识把它当成一份轻量级技术资讯摘要——类似科技媒体每日推送的“今日AI圈发生了什么…

2026/10/14 0:47:55 阅读更多 →
JVM元空间内存泄漏排查与防护实战指南

JVM元空间内存泄漏排查与防护实战指南

1. 面试题背后的技术深度剖析当这个面试题出现在阿里巴巴Java技术面试中时,它实际上考察的是候选人对JVM内存管理的系统化理解能力和复杂问题排查经验。元空间(Metaspace)内存泄漏不同于传统的堆内存问题,它的隐蔽性更强且往往在应用运行较长时间后才显现…

2026/10/14 0:47:55 阅读更多 →
老虎数据集2055张VOC+YOLO格式:目标检测训练与标注避坑指南

老虎数据集2055张VOC+YOLO格式:目标检测训练与标注避坑指南

简介:本资源为面向目标检测学习者的老虎数据集,采用Pascal VOC与YOLO双格式标注,适合从事单类别目标检测训练、模型验证及算法对比的研究人员与开发者使用。压缩包共约2000个文件,以1999个xml标注文件和1个说明txt为主&#xff0c…

2026/10/14 0:47:55 阅读更多 →
开题报告是研究旅程的导航图,科迅捷AI帮你把路线画清楚

开题报告是研究旅程的导航图,科迅捷AI帮你把路线画清楚

如果把博士阶段的研究比作一段长途旅行,开题报告就是出发前画好的导航图。导航图不决定你路上的每一个细节,但它决定了方向:往哪走、经过哪些站点、预计什么时候到达。没有这张图,你很容易在路上迷路,或者走很远才发现…

2026/10/14 0:46:55 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 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/13 22:01:27 阅读更多 →
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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →