OpenDots 独立计算机:AI 代理环境隔离与状态持久化实践
1. 从工具调用到独立计算机OpenDots 到底在解决什么问题第一次看到让 AI 代理拥有独立计算机这个说法我脑子里冒出来的第一个念头是这不就是把工具调用包装了一下吗但真正动手跑过几轮之后我发现事情没那么简单。OpenDots 想做的事情本质上是给 AI 代理分配一台逻辑上独立、状态可持久、操作可回滚的运行环境而不是让它在主进程里调用几个函数就完事。这两者的差别就像你让一个实习生帮我改一下这份文档和给你一台电脑你自己登录、自己装软件、自己把活干完之间的差别。前者你什么都得盯着后者你只需要看结果。OpenDots 瞄准的就是后者。它适合谁如果你正在做 AI 代理相关的开发尤其是那种需要多步骤、长链路、涉及文件系统和命令行操作的任务那这套思路值得你花时间研究。如果你只是想让模型回答几个问题那确实用不上。但只要你碰到过代理跑着跑着状态丢了上一步的文件下一步找不到了多个代理互相踩脚这类问题你就会明白独立计算机这个抽象有多重要。我个人的判断是OpenDots 这类方案的核心价值不在于能跑命令而在于它把环境隔离、状态管理、操作审计这三件事打包成了一个可复用的单元。下面我会从设计思路、核心机制、实操落地、踩坑排查几个维度把我知道的东西尽量讲透。2. 整体设计思路为什么是独立计算机而不是沙箱2.1 沙箱和独立计算机的本质区别很多人一听到隔离环境第一反应就是沙箱。但沙箱和 OpenDots 说的独立计算机在设计目标上根本不是一回事。沙箱的核心目标是限制——限制权限、限制访问范围、限制资源占用防止代码干坏事。而独立计算机的核心目标是赋能——给代理一个完整的、有状态的、可以自由折腾的空间让它能像人一样操作一台机器。我打个比方。沙箱像是给小孩围了一个游戏围栏里面只有几样玩具安全但能力受限。独立计算机像是给小孩一间自己的房间里面有书桌、有抽屉、有工具箱他可以自己整理、自己取用、自己搞乱再自己收拾。OpenDots 要的是后者。这个区别直接决定了架构上的取舍。沙箱方案通常是无状态的、一次性的跑完就销毁。而独立计算机方案必须解决状态持久化的问题——代理今天写的文件明天还得在代理装好的依赖下次启动不能丢。2.2 为什么状态持久化是刚需我踩过的最大的坑就是早期做代理任务时用一次性容器。任务链路一长中间某一步需要读取上一步生成的文件结果容器已经销毁了代理只能重新生成浪费大量 token 和时间。OpenDots 的思路是给每个代理实例分配一个持久化的文件系统层。这个层可以是本地目录挂载也可以是对象存储同步关键是要保证代理在多次会话之间看到的是同一个环境。这里有个设计上的权衡点持久化程度越高环境越真实但资源占用和清理成本也越高。我的经验是按任务生命周期来分级持久化级别适用场景生命周期资源成本会话级单次多步任务任务结束即回收低项目级长期迭代的开发任务数天到数周中常驻级需要持续运行的服务型代理长期高大部分场景用会话级就够了别一上来就搞常驻清理起来很痛苦。2.3 操作可回滚为什么比想象中重要代理和人的一个关键区别是人会犹豫代理不会。代理一旦决定删文件它真的会删。我见过代理为了清理临时文件把整个工作目录清空的案例。OpenDots 在设计上强调操作可回滚我理解这是把快照机制做进了环境层。每次代理执行有副作用的操作前系统自动打一个快照点。出问题了回滚到上一个快照而不是从头再来。这个机制的价值在长链路任务里特别明显。一个二十步的任务跑到第十五步发现方向错了如果没有快照你得重跑前十四步有了快照直接回到第十步重新决策就行。提示快照不是越多越好。快照本身占空间而且回滚粒度太细会让代理陷入反复试错的循环。我的做法是只在关键决策点打快照比如文件批量修改前、依赖安装前、外部命令执行前。3. 核心机制拆解一台计算机到底包含哪些部件3.1 文件系统层代理的记忆载体文件系统是独立计算机最基础的部分。OpenDots 给代理的不是一个临时目录而是一个有明确结构的工作空间。我习惯把工作空间分成几个区workspace 区代理的主要工作目录读写自由input 区只读放任务相关的输入材料output 区代理产出结果的存放处外部系统从这里取结果tmp 区临时文件任务结束可清理这个分区不是 OpenDots 强制的但我在实践中发现明确的分区能大幅降低代理乱放文件的概率。代理和人一样没有规矩就容易乱。文件系统层还有一个容易被忽略的点路径一致性。代理在多次会话中看到的路径必须稳定。如果今天工作目录是/home/agent/work明天变成/tmp/xyz123代理之前记录的所有相对路径引用全废了。OpenDots 通过固定挂载点解决这个问题这是它比裸容器方案更实用的地方。3.2 命令执行层不只是 subprocess命令执行看起来简单不就是调个 shell 吗但真做起来坑非常多。首先是超时控制。代理执行一个命令如果卡住了怎么办没有超时机制整个任务就挂在那里。OpenDots 在命令执行层做了超时和中断处理这是必须的。其次是输出捕获。命令的 stdout、stderr、退出码都要完整捕获而且要考虑输出量大的情况。我遇到过代理执行一个命令输出几十兆日志直接把上下文撑爆的情况。合理的做法是对输出做截断和摘要只把关键部分返回给代理。第三是环境变量管理。代理执行命令时的环境变量和它启动时的环境变量可能不一样。比如代理在会话中安装了某个工具把它加到了 PATH那后续命令必须能看到这个变化。这要求命令执行层维护一个会话级的环境状态。# 一个典型的命令执行封装思路伪代码 execute_command( cmdpython train.py, timeout300, workdir/home/agent/workspace, env{PATH: /home/agent/.local/bin:$PATH}, capture_outputTrue, max_output_size100000 )3.3 状态管理层代理的记忆怎么存独立计算机的独立很大程度上体现在状态是自包含的。代理不需要依赖外部数据库来记住自己干了什么环境本身就是状态的载体。但这里有个矛盾环境状态是隐式的文件在不在、依赖装没装而代理的决策需要显式的状态信息。OpenDots 的做法通常是在环境里维护一个状态清单记录关键操作和当前环境概况。我的经验是这个清单不用太复杂记录这几样就够当前工作目录和关键文件列表已安装的依赖和版本已执行的关键操作及结果待办事项和已知问题代理每次启动时读这个清单就能快速恢复上下文不用从头探索环境。3.4 资源隔离层别让一个代理拖垮整台机器独立计算机不等于无限资源。一个代理如果疯狂占 CPU 或内存会影响其他代理甚至宿主机。OpenDots 在资源隔离上通常采用 cgroup 或类似的机制给每个代理实例设定资源上限。这个上限怎么定是个经验活。我的建议是按任务类型分档任务类型CPU 上限内存上限磁盘上限文本处理1 核1 GB5 GB代码编译2 核4 GB20 GB数据处理4 核8 GB50 GB模型推理按需按需按需定得太紧代理跑不动定得太松资源浪费。我一般先给一个宽松值观察实际使用峰值再往下压。4. 实操落地从零搭一个 OpenDots 风格的代理环境4.1 环境准备与基础依赖假设我们要在一台 Linux 机器上搭一个最小可用的代理独立环境。基础依赖不多但每一样都要装对。# 基础工具 apt-get update apt-get install -y \ python3 python3-pip \ git curl wget \ build-essential \ tmux htop # 容器运行时用于隔离 # 这里以常见的容器方案为例关键点在于容器运行时的选择。我试过几种方案各有优劣轻量级容器启动快隔离够用适合大多数场景虚拟机隔离最彻底但启动慢、资源占用高进程级隔离最轻但隔离性弱只适合可信代理我的选择是轻量级容器在隔离性和开销之间取平衡。启动一个实例大概几百毫秒可以接受。4.2 工作空间初始化脚本每次创建代理环境时初始化脚本决定了这个环境好不好用。我写过一个模板分享出来#!/bin/bash # init_agent_env.sh AGENT_HOME/home/agent WORKSPACE$AGENT_HOME/workspace INPUT$AGENT_HOME/input OUTPUT$AGENT_HOME/output TMP$AGENT_HOME/tmp # 创建目录结构 mkdir -p $WORKSPACE $INPUT $OUTPUT $TMP # 设置权限 chown -R agent:agent $AGENT_HOME chmod 755 $INPUT # 输入只读 chmod 755 $OUTPUT # 初始化状态清单 cat $AGENT_HOME/state.json EOF { created_at: , workdir: /home/agent/workspace, installed_deps: [], key_operations: [], pending_tasks: [] } EOF # 设置环境变量 cat $AGENT_HOME/.env EOF export AGENT_HOME/home/agent export WORKSPACE/home/agent/workspace export PATH/home/agent/.local/bin:$PATH EOF echo Agent environment initialized.这个脚本看起来简单但每一条都有用意。目录分区是为了让代理有明确的该往哪放的指引状态清单是给代理一个恢复上下文的锚点环境变量文件是保证会话间环境一致。4.3 命令执行封装的实际实现命令执行封装是代理和计算机之间的手。这只手要稳、要准、要有反馈。import subprocess import os import signal from typing import Optional class CommandExecutor: def __init__(self, workdir: str, env: dict, timeout: int 300): self.workdir workdir self.env {**os.environ, **env} self.timeout timeout def execute(self, cmd: str, max_output: int 100000) - dict: try: proc subprocess.Popen( cmd, shellTrue, cwdself.workdir, envself.env, stdoutsubprocess.PIPE, stderrsubprocess.PIPE, preexec_fnos.setsid # 创建新进程组便于超时清理 ) stdout, stderr proc.communicate(timeoutself.timeout) return { exit_code: proc.returncode, stdout: stdout.decode(utf-8, errorsreplace)[:max_output], stderr: stderr.decode(utf-8, errorsreplace)[:max_output], truncated: len(stdout) max_output } except subprocess.TimeoutExpired: os.killpg(os.getpgid(proc.pid), signal.SIGKILL) return { exit_code: -1, stdout: , stderr: fCommand timed out after {self.timeout}s, truncated: False }这段代码里有几个细节值得说。preexec_fnos.setsid是为了让命令在独立的进程组里跑超时时可以整组杀掉避免子进程残留。输出截断是为了保护上下文窗口不然一个find /就能把代理的上下文撑爆。4.4 快照与回滚的实现思路快照机制是 OpenDots 类方案里技术含量最高的部分。实现方式取决于文件系统层用什么。如果工作空间是普通目录可以用rsync做增量快照# 打快照 rsync -a --delete /home/agent/workspace/ /snapshots/snap_001/ # 回滚 rsync -a --delete /snapshots/snap_001/ /home/agent/workspace/如果用的是支持写时复制的文件系统快照可以做到秒级、几乎零空间开销。这是更理想的方案但部署复杂度高一些。我的建议是初期用 rsync 方案就够了简单可靠。等任务规模上来了再考虑升级文件系统。注意快照要排除 tmp 目录和大文件缓存不然快照体积会失控。我一般会在快照脚本里加排除规则。5. 常见问题与排查技巧实录5.1 代理迷路路径找不到怎么办这是最高频的问题。代理执行命令时报文件不存在但你明明看到文件在那里。排查思路确认代理当前工作目录。代理可能cd到了别的地方。确认路径是绝对路径还是相对路径。相对路径依赖工作目录容易出错。确认文件权限。代理用户可能没有读权限。确认文件系统挂载。容器里的路径和宿主机的路径可能不是一回事。我的经验是在给代理的指令里强制要求使用绝对路径能减少一大半这类问题。5.2 命令卡死超时机制失效的几种情况超时机制不是万能的。我遇到过几种超时失效的情况命令 fork 了子进程子进程没被杀干净继续占资源命令在等待交互式输入communicate一直阻塞命令输出量太大管道缓冲区满了进程阻塞在写操作上对应的解法用进程组杀确保子进程一起清理给命令加/dev/null重定向避免等待输入输出重定向到文件而不是管道或者边读边处理5.3 状态不一致代理记错了环境代理说我已经安装了 numpy但实际执行import numpy报错。这种状态不一致通常有几个来源代理在错误的 Python 环境里安装的包安装命令执行了但失败了代理没检查退出码环境变量在会话间丢失导致找不到安装位置排查时我习惯让代理先执行一个环境自检命令把关键信息打印出来which python3 python3 --version pip list | grep -i numpy echo $PATH这样一眼就能看出环境哪里不对。5.4 资源耗尽代理把磁盘写满了代理做数据处理时很容易产生大量中间文件。磁盘写满后整个环境就废了。预防措施给工作空间设磁盘配额在状态清单里记录磁盘使用情况定期清理 tmp 目录对代理的大文件操作做监控我踩过一次坑代理下载了一个数据集解压后占了 80G直接把磁盘写满。后来我加了配额限制超过阈值就拒绝写入代理会收到明确的错误信息而不是把系统搞崩。5.5 常见问题速查表问题现象可能原因排查命令解决方向文件找不到工作目录错误/权限不足pwdls -la用绝对路径检查权限命令卡死等待输入/子进程残留ps aux重定向输入进程组杀依赖导入失败环境不一致which pythonpip list统一环境检查 PATH磁盘写满中间文件过多df -hdu -sh *设配额清理 tmp状态丢失持久化失败检查挂载点确认持久化层配置代理行为异常上下文污染检查状态清单重置环境重新初始化6. 进阶玩法多代理协作与任务编排6.1 多个独立计算机怎么协同单个代理的能力有上限复杂任务往往需要多个代理分工。OpenDots 的独立计算机模型天然适合多代理场景因为每个代理有自己的环境互不干扰。协同的关键在于共享层的设计。我的做法是每个代理有自己的 workspace所有代理共享一个 output 区用于交换中间结果通过一个轻量的消息机制协调任务分配这样既保证了隔离又实现了协作。6.2 任务编排的几种模式我实践下来常用的编排模式有三种串行模式代理 A 做完结果传给代理 B。适合有明确依赖关系的任务。并行模式多个代理同时做不同的子任务最后汇总。适合可分解的独立任务。主从模式一个主代理负责规划和调度多个从代理负责执行。适合复杂的长链路任务。选择哪种模式取决于任务的可分解性和代理间的依赖关系。我一般先用串行跑通再根据瓶颈决定要不要并行化。6.3 代理间的交接怎么做代理交接是最容易出问题的地方。A 代理的产出B 代理能不能正确理解和使用我的经验是交接必须通过结构化的产物而不是自由文本。比如 A 代理生成一个 JSON 格式的结果清单B 代理按约定格式读取。这样比让 B 代理去猜 A 代理的意图可靠得多。{ task_id: task_001, status: completed, outputs: [ {type: file, path: /home/agent/output/result.csv, description: 处理后的数据}, {type: value, key: row_count, value: 15234} ], notes: 数据已清洗去除了空值行 }这种结构化交接让代理间的协作从猜谜变成了对接。7. 我踩过的坑和几条实在建议7.1 别把独立计算机当成万能药独立计算机解决了隔离和状态问题但它不解决代理的决策质量问题。代理如果本身逻辑不行给它再好的环境也是白搭。我见过太多人把精力花在环境搭建上结果代理的核心逻辑一塌糊涂。环境是基础设施代理的决策能力才是核心。两者要平衡投入。7.2 从简单开始别过度设计我一开始就想搞一套完整的快照、回滚、多代理编排系统结果搭了两周还没跑通一个任务。后来退回去先用最简单的目录隔离跑通单代理任务再逐步加功能反而快得多。建议的演进路径单代理 普通目录隔离加命令执行封装和超时控制加状态清单和持久化加快照和回滚加多代理协作每一步都跑通了再加下一步别跳。7.3 日志和可观测性不能省代理在独立环境里干了什么你必须能看到。没有日志出了问题就是黑盒。我的做法是所有命令执行都记录到日志文件关键操作打时间戳定期把日志摘要同步到外部这样出问题时可以回溯代理的完整操作序列快速定位。7.4 安全边界要提前划好独立计算机给了代理很大自由度但自由度必须有边界。哪些目录能写、哪些命令能执行、网络能不能访问这些都要提前定好。我的原则是默认拒绝按需开放。代理需要什么能力明确授予而不是一开始就给全部权限。这样即使代理行为异常影响范围也可控。7.5 定期清理别让环境堆积代理环境用久了会堆积大量垃圾临时文件、旧快照、废弃的依赖。不清理的话磁盘和性能都会出问题。我一般设一个定时任务每周清理一次删除超过 7 天的 tmp 文件保留最近 5 个快照旧的删掉清理未使用的依赖缓存这个习惯能省很多麻烦。8. 关于 OpenDots 这类方案的一点个人判断我用了几个月这类方案最大的感受是独立计算机这个抽象是对的但落地质量差异很大。核心差异不在概念而在细节——超时处理得干不干净、状态持久化可不可靠、快照回滚快不快、资源隔离到不到位。这些细节决定了代理是能跑还是好用。如果你正在选型我的建议是别只看功能列表重点测这几个场景长链路任务跑二十步以上会不会状态丢失、命令超时后环境能不能自动恢复、磁盘写满时系统是优雅报错还是直接崩。这几个场景过了基本就靠谱了。另外这类方案目前还在快速演进别指望一次选型管三年。保持架构上的可替换性把代理逻辑和环境层解耦这样换环境方案时不用重写代理。最后分享一个小技巧给代理环境加一个健康检查命令代理每次启动时先跑一遍确认环境正常再开始任务。这个习惯帮我避免了很多代理在坏环境里瞎跑的情况。健康检查不用复杂检查关键目录存在、关键依赖可导入、磁盘有空间就够了。

相关新闻

缓存与数据库双写一致性:原理、陷阱与工业级解法

缓存与数据库双写一致性:原理、陷阱与工业级解法

1. 这个问题从来就不是“选一个方案”就能过关的“如何保证缓存与数据库的双写一致性?”——这几乎是所有中高级后端岗位面试必问的压轴题。但有意思的是,我带过的几十位准备跳槽的开发者,有超过七成在第一次被问到时,脱口而出的就…

2026/10/14 8:01:47 阅读更多 →
HTML读取JSON文件并传递给变量:前端异步处理完整指南

HTML读取JSON文件并传递给变量:前端异步处理完整指南

“HTML读取json文件(传递给变量)”这个需求,听起来简单,实际上几乎是每个写前端页面的人都会撞上的一道坎。特别是那些刚离开教程、想自己动手做点什么的朋友,手里拿着一个静态页面模板,想把数据抽离到JSON…

2026/10/14 8:01:46 阅读更多 →
消息机器人地图能力模块设计:从意图解析到多服务商适配的工程实践

消息机器人地图能力模块设计:从意图解析到多服务商适配的工程实践

聊个地图相关的机器人模块。lingbot-map 是我们内部机器人框架里专门负责地图能力的一个子模块。乍一看挺简单:接个地图API、解析几个指令、把坐标和路线发出去,完事。但真正落地之后我发现,这里面的弯弯绕绕比想象中多得多——从坐标系偏移到…

2026/10/14 8:00:46 阅读更多 →

最新新闻

[玩转大模型] 第十一篇:售卖自己的 Skill——买断、订阅、定制、开源+付费增强,四条路到底哪条能收到钱

[玩转大模型] 第十一篇:售卖自己的 Skill——买断、订阅、定制、开源+付费增强,四条路到底哪条能收到钱

💡 上一篇我把自己的 Skill 仓库摊开做体检,结论挺难看:十二个 Skill,三个连 name 和目录名都对不上。但那篇文章里还藏着一个我没回答的问题——既然整理到能公开了,那能不能顺便收点钱? 我认真查过这件事…

2026/10/14 8:49:29 阅读更多 →
ROS 2中colcon构建系统的符号链接模式解析

ROS 2中colcon构建系统的符号链接模式解析

1. 理解colcon构建系统的核心机制在ROS 2开发环境中,colcon是最常用的构建工具之一。它负责将源代码编译、安装到工作空间中,并生成必要的环境配置。理解colcon的工作机制对于提高开发效率至关重要。1.1 传统构建模式解析在默认模式下执行colcon build时…

2026/10/14 8:49:29 阅读更多 →
零基础用AI做表情包:画风拆解、动态生成到投稿变现全流程

零基础用AI做表情包:画风拆解、动态生成到投稿变现全流程

看到标题,你可能第一反应是:“做表情包不是设计师和插画师的活吗?” 我一开始也是这么想的,直到我花了两个月,用AI工具完整跑通了一套表情包的画风设定、动态生成、提示词调优到投稿上架的全流程,才发现这条…

2026/10/14 8:49:29 阅读更多 →
PS5调试接口真相:JTAG未禁用不等于安全沦陷

PS5调试接口真相:JTAG未禁用不等于安全沦陷

1. 标题里的“沦陷”到底指什么:一场被误读的硬件安全讨论 “PS5全线沦陷:从PS5 Pro到初版厚机,这扇门关不上了?”——这个标题在社交平台刷屏时,我正调试一台刚拆封的初版PS5主机。第一反应不是震惊,而是皱…

2026/10/14 8:49:29 阅读更多 →
Kafka-eagle:面向生产级 Kafka 运维的智能监控与归因平台

Kafka-eagle:面向生产级 Kafka 运维的智能监控与归因平台

1. 项目概述:为什么 Kafka 运维不能只靠“看日志”和“猜问题”Kafka 监控及运维,这六个字背后不是一套工具的安装流程,而是一整套面向高吞吐、低延迟、多副本分布式消息系统的生存法则。我接触过太多团队——刚上线 Kafka 集群时信心满满&am…

2026/10/14 8:49:28 阅读更多 →
Vue大屏实例集合:从Vue2/Vue3工程搭建到ECharts可视化落地

Vue大屏实例集合:从Vue2/Vue3工程搭建到ECharts可视化落地

简介:这是一套 Vue 大屏可视化项目实例集合,同时覆盖 Vue2 与 Vue3 工程形态,面向需要完成课程设计、毕业设计、大作业、工程实训,或希望快速搭建数据可视化大屏的开发者。压缩包内共 187 个文件,整体约 31MB&#xff…

2026/10/14 8:48:28 阅读更多 →

日新闻

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/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

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

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

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

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

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

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/14 7:53:34 阅读更多 →