Agent-Reach:构建智能体执行层,打通工具与数据可达性
最近身边好几个做 Agent 应用的朋友跑来问我同一个问题模型明明越来越强为什么真正落地的时候智能体还是像个“手脚不灵便”的人工具散落在各个系统里API 格式五花八门权限规则暧昧不清上下文窗口被无关信息塞爆——最后模型是聪明的但 Agent 够不到它该够到的东西。我后来把这一整层能力单独拎出来做了一套组件取名就叫 Agent-Reach。它解决的问题很朴素让智能体真正“触达”它需要的工具、数据和执行能力而不是只停留在“对话很好”的阶段。这篇就完整拆一下这个项目的设计思路、核心实现和实操过程给正在做 Agent 落地的人一个可直接参考的样本。1. Agent-Reach 的核心价值与设计思路1.1 为什么“可达性”才是 Agent 落地的真瓶颈很多人一开始做 Agent 的时候重心全扑在模型选型和 Prompt 调优上。GPT 级别的模型当然重要但真到生产环境你就会发现80% 的故障都出在模型之外工具调用超时、返回结构解析失败、鉴权不通过、权限过大不敢放开、上下文被历史记录撑爆导致指令丢失。这些问题本质上都指向一件事Agent 的执行层没有把“意图”和“真实系统”之间的桥搭稳。我习惯用一个类比来解释 Agent-Reach 的定位模型是 Agent 的大脑Reach 是它的手和脚。大脑可以想出完美的计划但如果手够不到工具、脚踩不到接口计划永远是纸上的。RAG 解决的是“知识可达”Function Calling 解决的是“模型能输出结构化调用意图”但谁来保证这个调用意图真正安全、稳定、可观测地到达目标系统这就是 Agent-Reach 这种执行层组件存在的意义。在设计 Agent-Reach 之前我梳理了现有 Agent 项目里反复出现的几个痛点每个工具都要单独写适配代码换了服务商就要改业务逻辑工具的输入输出结构千奇百怪模型返回的参数经常落在 schema 之外权限控制要么一刀切全放开要么层层审批导致 Agent 根本跑不动出了问题只能看模型输出猜原因缺少从意图到实际执行的全链路追踪。Agent-Reach 的全部设计都是围绕消除这四个痛点展开的。它做的是“执行基础设施”不关心你的模型是哪家也不限制你接什么工具它只负责一件事把 Agent 的动作意图翻译成对真实世界的可靠调用。1.2 设计目标从“一次调用”到“一条链路”Agent-Reach 的核心抽象只有三个Action、Connector、Boundary。Action 是智能体的意图单元比如“查询天气”“创建日程”“发送消息”Connector 是连接外部系统或工具的统一适配层Boundary 则是权限与安全边界。这三个概念对应到实际运行时是一条完整的链路模型输出一个结构化 Action比如search_flights带上出发地、目的地、日期Reach 的调度器收到 Action去 Connector 注册表里找到匹配的连接器Connector 执行前先经过 Boundary 校验——这个 Agent 有没有权限调用这个 Action参数是否符合定义通过后Connector 把 Action 翻译成具体的 HTTP 请求、数据库查询或命令行调用执行结果被归一化成统一结构回传给模型模型再决定下一步动作。这个链路的每一步都可以被记录、追踪、重放。这也是 Agent-Reach 和普通工具脚本最大的区别它不只是把动作做完而是把动作变成一条可观测的流水线。你在调试一个失败的 Agent 时能精确看到是意图识别错了、参数校验没过、还是外部接口 5xx 了而不是像以前那样抓瞎。从技术选型上我当时特别纠结要不要自己写调度逻辑还是直接用现成的 workflow 引擎。最后决定轻量实现理由也很简单Agent 的执行链路是动态的依赖模型每一步的决策传统 workflow 那种预先画好的 DAG 并不适合。Action 的串联、分支、回退需要一套更灵活的解释器而不是一个死板的流程定义。2. 核心细节解析与实操要点2.1 Connector工具接入的统一协议Connector 是整个 Agent-Reach 里最值得花功夫的部分。它规定了每个工具必须向外暴露四件事name唯一标识、schema输入输出参数结构、auth鉴权方式、handler实际执行逻辑。下面是一个真实 HTTP 工具接入时的 Connector 定义示例name: flight_search description: 查询航班价格和时刻 schema: input: - name: origin type: string required: true description: 出发城市三字码 - name: destination type: string required: true - name: date type: string required: true description: 日期格式 YYYY-MM-DD output: type: list items: flight_no: string price: number departure_time: string arrival_time: string auth: type: api_key source: env:AVIATION_API_KEY handler: type: http method: GET url: https://api.example.com/v1/flights params: from: {origin} to: {destination} date: {date}这套协议最大的好处是隔离了“工具本身的差异”和“Agent 的调用习惯”。模型不需要关心 API 的 query param 叫from还是source它只按照统一的 Schema 输出意图Connector 负责把意图翻译成目标系统认识的语言。实际操作中有几个很容易踩的坑。第一是参数嵌套问题很多工具的输入不是扁平结构而是嵌套对象比如创建订单需要customer和items两个子对象。我在 Schema 里支持了对象类型的字段但要求描述写得足够清楚否则模型会漏填嵌套字段。第二是返回结构的归一化不同工具的响应结构差异极大有的包在data里有的直接返回数组有的带分页字段。我建议在 Connector 里强制加一个normalize步骤把结果统一成{ success: bool, data: any, error: { code, message } }的结构这样上层的 Agent 逻辑就不用写一堆兼容分支了。还有个经验是鉴权方式越多越要把鉴权从 handler 里抽出来。最开始我把 API Key 直接写在 handler 的请求头里后来发现每个工具的服务方不同有的用 Bearer Token有的用 Basic Auth有的要签名。现在我让 Connector 声明auth.type由 Reach 的认证中心统一完成凭据注入和刷新handler 里只关心业务参数。这一步重构之后再新的工具只需要写业务请求逻辑鉴权几乎零成本。2.2 Context Manager上下文是 Agent 最大的隐形杀手模型上下文窗口是 Agent 项目里最稀缺的资源。很多 Agent 跑着跑着效果就变差不是模型笨了而是上下文里塞了太多历史工具调用结果、日志和中间推理过程。Agent-Reach 里做了一个专门的 Context Manager负责管住“模型看到什么”这件事。我采用的策略是把上下文分成三层工作记忆当前任务必须保留的信息比如目标、关键参数、最近一次工具结果压缩记忆早期对话和工具调用的摘要由模型在空闲时异步生成永久知识不占主上下文的长期信息放在向量库里按需检索。具体实现上每个 Action 执行完后Context Manager 会先判断这条结果还“热不热”。比如用户问“帮我把明天的会议改到下午三点”那会议原始详情、修改后的确认结果就是热数据必须留着但中间查询日历列表返回的十几条无关日程就是冷数据可以立即压缩成一句“已查询日历共 12 个日程含目标会议”。Token 预算分配上我一般遵循一个比例系统指令占 10%当前用户目标占 15%工作记忆占 40%最近一次工具结果占 20%剩余 15% 留给模型推理空间。如果一次任务的对话历史太长超出预算就先压缩冷数据而不是粗暴丢弃因为 Agent 容易在后续步骤中回看之前的决策依据全丢了会导致它“失忆”。这个模块的难点不在“摘要”本身而在于什么该留、什么该压的判断标准。我的做法是给每个 Action 打标签比如critical、normal、transient。查询类结果通常标记为 transient执行类结果如“已成功创建日程”标记为 critical模型生成 Action 时也会自动带上这个标签Context Manager 根据标签处理。2.3 Boundary权限控制必须前置不能等出事再补做 Agent 的人可能都有这种感觉权限管严了吧Agent 动不动就卡住需要人工确认放开了吧一旦模型产生幻觉可能调用了不该调用的接口。Agent-Reach 里把权限控制设计成执行链路的一道闸门而不是写在某个业务函数里。Boundary 模块接收几个关键信息当前 Agent 的身份标识、要调用的 Action 名称、携带的参数、以及当前的置信度。它基于规则判断规则有两种白名单和条件限制。白名单很好理解就是声明这个 Agent 允许使用哪些 Action。条件限制更有意思比如- action: send_email condition: recipients.length 10 require_approval: false - action: delete_project condition: project.status archived require_approval: truedelete_project 这类危险操作即使条件满足也要求人工审批。审批通过后 Reach 会颁发一个短期 token只有持 token 的 Action 才能执行token 默认 5 分钟过期。这里我要强调一个设计原则幂等性优先。凡是 Boundary 判定需要重试的 Actionhandler 必须实现幂等逻辑。比如创建订单这个动作如果网络超时导致重复调用就可能出现双订单。解决方案是让 Action 携带一个request_id服务端按request_id去重。Agent-Reach 在每次调度时自动生成request_id并随请求一起发送这个细节能救你于水火。另一个容易忽略的点是沙箱执行。不是所有工具都必须放在同一台机器上跑的。我在 Reach 里支持了三种执行模式本地函数、HTTP 调用、子进程沙箱。对于执行不可信代码或需要隔离依赖的工具强制丢进沙箱子进程即使崩溃也不影响主流程。安全永远不能事后补在一开始就要给 Agent 配好笼子。3. 实操过程与核心环节实现3.1 环境准备与最小配置Agent-Reach 本身是一个 Python 包我建议用独立虚拟环境跑。初始化方式很简单pip install agent-reach reach init my-agentreach init会生成一个最小的项目骨架包含config.yaml、connectors/目录和agent.py入口文件。config.yaml是全局配置里面至少要写三块模型接入信息、Boundary 规则、Context Manager 参数。我第一次跑的时候用的是本地一个开源模型做测试配置如下model: provider: ollama name: qwen2.5:7b temperature: 0.2 boundary: approval_timeout: 300 default_policy: deny context: max_tokens: 8000 hot_threshold: 0.6 auto_summarize: true注意default_policy: deny这意味着没有明确授权的 Action 一律拒绝执行。很多人习惯反过来先 allow 再按需 deny这个思路在 Agent 场景下很危险。保持默认拒绝每接入一个新工具就显式加一条授权虽然前期麻烦但长期看是最安全的。3.2 接入第一个真实工具天气查询我以天气 API 为例完整走一遍接入流程。假设目标接口是 OpenWeather 的/data/2.5/weather需要传城市名和 API Key。第一步写 Connector 定义文件connectors/weather.yamlname: weather_query description: 查询指定城市的当前天气 schema: input: - name: city type: string required: true description: 城市中文名如 北京 output: type: object fields: temperature: number condition: string humidity: number auth: type: api_key source: env:OPENWEATHER_API_KEY handler: type: http method: GET url: https://api.openweathermap.org/data/2.5/weather params: q: {city} appid: {api_key} units: metric第二步实现一个简单的 normalize 函数放在connectors/weather.pydef normalize(raw_response): if raw_response.get(cod) ! 200: return { success: False, data: None, error: {code: UPSTREAM_ERROR, message: raw_response.get(message)}, } main raw_response[main] weather raw_response[weather][0] return { success: True, data: { temperature: main[temp], condition: weather[description], humidity: main[humidity], }, error: None, }第三步在boundary配置里给这个 Action 开白名单allowed_actions: - weather_query然后启动 Agent 跑一次对话输入“北京现在多少度”你会看到 Reach 的日志里依次出现Action 识别 → 参数校验 → Boundary 鉴权 → Connector 执行 → 结果归一化 → 上下文写入。整个链路在 3 秒内完成。这里有个细节值得多说一句Handler 里不要做任何重试逻辑。重试策略应该由 Reach 调度器统一控制因为调度器知道当前执行阶段、超时时间和幂等状态而 handler 只知道自己的业务逻辑。我在早期版本里把重试写进了 handler结果不同工具的失败策略完全不一致有的重试 3 次有的重试 5 次行为不可预期。3.3 编排一个多工具协作任务单工具接入只是热身Agent-Reach 真正发力的场景是多个工具联动。我拿一个实际例子说明用户说“明天下午想从北京飞上海帮我看看航班并提醒我”。这个任务涉及三个 Actionflight_search查航班、schedule_create创建日程、reminder_set设置提醒。调度器收到模型输出的三个 Action 后不是一次性全执行而是按依赖顺序执行先搜航班拿到结果后把时间和航班号传给日程创建日程创建成功后再设提醒。执行链路的伪逻辑是这样的result await executor.execute(flight_search, {origin: PEK, destination: SHA, date: 2025-06-01}) if not result.success: return await generate_fallback(航班查询失败请调整日期或选择邻近城市) flight result.data[0] schedule_result await executor.execute( schedule_create, {title: 飞上海航班, start: flight.departure_time, end: flight.arrival_time}, ) if schedule_result.success: await executor.execute( reminder_set, {target: 2025-06-01 12:00, content: 明天下午航班 flight.flight_no}, )这里最考验设计的是失败回退。比如航班查询成功但时间非常早用户可能想重新选航班这时候执行器需要支持“撤销已创建的日程”并回到上一个决策点。我在 Agent-Reach 里引入了一个简单的回退栈每个成功的 Action 都记录undo_handler。调度器可以根据模型后续决策调用undo或者走人工确认流程。多工具联调中最容易出现的问题不是单个工具报错而是工具间的数据格式不匹配。比如航班 API 返回的是时间戳日程 API 要求 ISO 8601 字符串如果 Connector 不统一做字段转换模型就会把原始时间戳直接塞给日程创建导致执行失败。所以我的建议是所有 Connector 的 output schema 一律使用业务语义明确的字段类型比如时间统一为YYYY-MM-DD HH:mm格式金额统一为数字类型。这个约定一开始就要定好后续接入的工具越多收益越大。4. 常见问题与排查技巧实录4.1 工具调用超时与重试风暴我遇到的最典型故障是某个外部 API 响应变慢从 200ms 涨到 8 秒而 Agent 每个步骤都要调用它导致整条任务链全部超时。更糟的是有些重试逻辑没有退避退化成重试风暴直接把上游服务打到限流。排查思路是这样走的先看全局追踪日志确认超时集中在哪个 Connector用reach inspect --connector flight_search查看这个连接器的平均耗时和错误率确认是上游问题后把该 Connector 的timeout从默认 5 秒调到 15 秒并开启指数退避重试同时设置熔断连续 5 次失败后该 Connector 进入open状态直接拒绝后续调用避免任务卡死。handler: type: http timeout: 15 retry: max_attempts: 3 backoff: exponential initial_delay: 1.0 circuit_breaker: failure_threshold: 5 cooldown: 60这里给个提示不要把熔断后的失败当成普通错误传回模型。模型看到“上游服务不可用”之后可能自作聪明地换一个不存在的参数重试导致更多无意义的请求。我在返回给模型的错误信息里加了明确的动作建议比如“请告知用户服务暂时不可用建议稍后重试”把模型的自由度收窄到安全范围。4.2 上下文截断导致 Agent “失忆”另一个高发问题是任务执行到一半Context Manager 把之前的重要信息给压缩了导致模型忘记用户最初的目标。我有一次跑一个“对比三款产品价格并推荐”的任务模型在查询第二个产品的过程中把第一个产品的结果摘要压缩得太狠最后推荐时连价格都记错了。这个问题的根源在于我当初的压缩策略太激进所有超过 30 分钟的对话片段都进入自动摘要。后来我调整了两个参数context: hot_threshold: 0.6 min_hot_items: 5hot_threshold表示相关性打分超过 0.6 的上下文片段保持原样min_hot_items保证即使相关性不高最近 5 条关键记录也绝不压缩。本质上就是给“重要信息”设了一条硬底线与时间长短无关。还有一个技巧就是让模型在生成 Action 时显式标注关键信息。比如在系统指令里要求“当用户提到金额、时间、人名时必须复制到工作记忆区不能依赖上下文隐式携带”。这相当于让模型自己给信息上了保险比事后靠规则补救可靠得多。4.3 权限误判与越权风险Boundary 规则写得不够细的时候容易出现权限误判。我遇到过一个场景Agent 可以根据用户指令给联系人发邮件但某次模型把邮件内容生成了一个恶意 HTML 链接而 Boundary 只检查了收件人数量没有检查内容。那次之后我把条件限制升级成支持内容级别的检查。具体做法是给敏感 Action 增加一个校验钩子- action: send_email validate: - type: regex field: body pattern: (?i)script|javascript:|data:text/html reject_message: 邮件内容包含风险代码已拦截这种内容校验不能依赖模型自律必须放在 Boundary 层做硬校验。我后来还加了一个策略凡是调用外部写操作的 Action无论规则是否通过都会在日志里打上WRITE_OP标记方便事后审计。4.4 调试利器一次完整的链路追踪Agent-Reach 里我最满意的功能其实是链路追踪。每次任务执行都会生成一个trace_id从用户输入到模型决策、Action 选择、Boundary 鉴权、Connector 执行、上下文更新全部以结构化日志落地。排查问题的时候我通常直接搜trace_id把中间过程原样拉出来看哪个环节慢、哪个环节错、模型当时看到了什么一目了然。我建议所有做 Agent 的同学都养成一个习惯不是只看最终成败而是把每次任务的追踪信息保留下来。因为 Agent 的很多失败是概率性的同样用户输入可能这次成功、下次失败。只有把追踪数据攒成样本集你才能系统地发现哪类意图容易误识别、哪个 Connector 的失败率突然飙升。Agent 项目到了一定复杂度之后比拼的已经不是谁的模型更强而是谁的调试手段更高效。这个项目我到现在还在持续迭代最近在做的方向是把回退栈从“单个 Action 撤销”升级成“子任务回溯”也就是让 Agent 能在一条执行链路上退回任意历史节点重新规划。如果你也在做 Agent 基础设施建议先从最小的执行层开始验证别一上来就堆各种编排框架。把 Action、Connector、Boundary 这三个根基打稳了后续加什么功能都不会乱。

相关新闻

加密PDF浏览器加注释实战:pdfAnnotate与RC4/Flate机制深度解析

加密PDF浏览器加注释实战:pdfAnnotate与RC4/Flate机制深度解析

客户发来一个加密的PDF,权限设置得死死的,既不能复制也不能编辑,但你就想在上面圈几笔、写几个字。用Acrobat?免费版根本不让改。在线工具?要么收费要么怕泄密。后来我接了pdfAnnotate这个库,在浏览器里直接…

2026/10/7 13:26:36 阅读更多 →
i5128 U盘主控原理图详解:从芯片识别到量产ROM模式

i5128 U盘主控原理图详解:从芯片识别到量产ROM模式

手里拿着一块丝印着i5128的主控U盘板子,想量产、想修复、想改容量,结果连原理图都看不太明白——这应该是很多刚接触U盘维修和量产的朋友最头疼的事。市面上关于U盘主控的教程大多停留在"用什么工具开卡"的层面,很少有人系统讲清楚…

2026/10/6 4:43:08 阅读更多 →
开源免费 OpenShell 指南:重获高效开始菜单与搜索体验

开源免费 OpenShell 指南:重获高效开始菜单与搜索体验

不想被Windows 11那个越来越臃肿的"居中开始菜单"绑架?又或者你的电脑配置不高,每次点开系统自带搜索都要卡三秒等索引重建?我聊聊OpenShell。OpenShell(原Classic Shell的延续项目)是Windows平台上最有名的…

2026/10/6 4:42:03 阅读更多 →

最新新闻

Agent工程实践:从Harness运行循环到Skill与记忆的落地指南

Agent工程实践:从Harness运行循环到Skill与记忆的落地指南

把 Agent 从“能跑通 Demo”推到“能接真实流量”,中间隔着的东西比大多数人想象的多得多。Agent-Reach 这个项目,就是我在这个过程中沉淀下来的一套轻量级 Agent 工程实践。名字很直白:让 Agent 的能力真正 reach 到业务场景,而不…

2026/10/7 14:01:58 阅读更多 →
Mac本地RAG实操指南:从PDF到API的完整工程闭环

Mac本地RAG实操指南:从PDF到API的完整工程闭环

1. 这不是“又一个AI教程”,而是帮你绕开90%初学者踩坑的RAG实操地图你搜过“RAG教程”“RAG实战”“怎么在mac上搭建rag知识库”,点开十几篇,发现要么是调用几行LangChain代码就收工,要么直接甩出一整套企业级架构图——中间那条…

2026/10/7 14:01:58 阅读更多 →
广州小学一年级国庆后英语怎么重新进入状态?家长先做这三件小事

广州小学一年级国庆后英语怎么重新进入状态?家长先做这三件小事

国庆假期后,孩子如何快速找回学习节奏 国庆假期结束,孩子回到一年级课堂,前几天常常需要重新找一找上课节奏。 有的孩子假期里完全没碰英语,有的孩子带着练习册出门,最后也没有做几页。家长不用急着在返校前把一周的内…

2026/10/7 14:01:58 阅读更多 →
生产级AI Agent运行时与编排底座Agent-Reach的设计与实践

生产级AI Agent运行时与编排底座Agent-Reach的设计与实践

Agent开发这两年确实有点让人又爱又恨。框架一轮接一轮,模型能力也一直在涨,但真正把Agent落到业务里的时候,你会发现最大的挑战根本不是“让模型听懂人话”,而是怎么让Agent稳定、安全、可控地跑在生产环境里。我这段时间重构了一…

2026/10/7 14:01:58 阅读更多 →
Ponytail插件:让碎片笔记自动收束成集

Ponytail插件:让碎片笔记自动收束成集

如果你现在随便打开一个搜索引擎,敲下ponytail这个词,头几页大概率会被各种各样的发型教程占满,从“三分钟扎出蓬松马尾”到“韩式慵懒低马尾图解”。但如果你混的是笔记工具、自动化脚本、知识管理这类圈子,会发现ponytail其实是…

2026/10/7 14:01:58 阅读更多 →
秒级热更新:react-isomorphic-starterkit服务端+客户端双HMR热重载机制完全讲解

秒级热更新:react-isomorphic-starterkit服务端+客户端双HMR热重载机制完全讲解

秒级热更新:react-isomorphic-starterkit服务端客户端双HMR热重载机制完全讲解 【免费下载链接】react-isomorphic-starterkit Create an isomorphic React app in less than 5 minutes 项目地址: https://gitcode.com/gh_mirrors/re/react-isomorphic-starterkit…

2026/10/7 14:00:57 阅读更多 →

日新闻

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

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

2026/10/7 1:01:58 阅读更多 →
用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

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

2026/10/7 1:02:00 阅读更多 →
芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

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

2026/10/7 1:02:00 阅读更多 →

周新闻

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/6 7:15:40 阅读更多 →
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/6 5:29:09 阅读更多 →
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/7 9:29:10 阅读更多 →

月新闻

我发现了一个新思路:用 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/6 8:21:32 阅读更多 →
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/7 11:43:46 阅读更多 →
黑夜航拍船只数据集训练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/7 13:34:55 阅读更多 →