我让 Agent 全自动运营我的 CSDN 专栏前言《Agent 基座从零搭建》系列写完了正文十一篇加番外从大纲到收官历时一周多。回头看最省心的不是写——是发。全部文章的发布、线上修订、草稿暂存、交叉审校补链接没有一次是我手动点出来的全由 Agent 驱动浏览器完成。这篇单篇复盘这条流水线怎么搭、卡在哪、教会我什么。一、流水线全貌从本地 Markdown 到线上文章文章本体在本地用 Markdown 写版本可控、可 diff剩下的一切交给 Agent环节做法难点新稿发布导入 md → 填标题/摘要/标签/专栏 → 点发布上传入口藏得深元数据全是受控组件存量修订直开已发布文章的编辑器 → 定位旧文本 → 原地替换富文本编辑器不是 textarea草稿暂存同发布流程但不勾专栏 → 另存草稿勾了专栏有时会直接触发发布发布验证前台拉文章页搜新插入的文本「抽屉消失」不等于「发布成功」四个环节共用同一套底层能力在别人家的页面里替你完成「读—改—提交—验证」。这正是系列第九篇浏览器自动化 Agent 的主题这篇算是它的实战番外——只不过自动化对象从业务系统换成了内容平台。二、最难的一关在富文本编辑器里改字发布新稿只是填表真正的硬骨头是修订已发布文章往一篇几千字的文章中间插一节。编辑器不是 textareaelement.value x这条路不存在直接改 DOM 也不行——编辑器维护着自己的内部状态你改的节点它不认保存时读的还是旧内容。可行解是把自己变成「用户」模拟一次真实的选中输入。三步// 在富文本里做一次查找替换// 1) TreeWalker 收集所有文本节点拼成整条字符串 偏移索引constwalkerdocument.createTreeWalker(pre,NodeFilter.SHOW_TEXT);consttexts[];letn;while(nwalker.nextNode())texts.push({node:n,text:n.textContent});letacc0;for(consttoftexts){t.startacc;acct.text.length;}constfulltexts.map(tt.text).join();// 2) 整串上定位旧文本必须唯一否则拒绝动手constidxfull.indexOf(OLD);// 3) 字符串偏移换算回节点, 节点内偏移Range 选中// 再走编辑器自己的输入通道替换——撤销栈、内部状态全部同步constrangedocument.createRange();range.setStart(s.node,s.off);range.setEnd(e.node,e.off);constselwindow.getSelection();sel.removeAllRanges();sel.addRange(range);document.execCommand(insertText,false,NEW);两个容易翻车的细节用execCommand而不是改 DOM替换必须走编辑器认可的输入通道它才会把变更纳入内部状态。这是「改了」和「保存得上」的区别每替换一次重新走一遍 TreeWalker插入会触发编辑器重建 DOM上一轮拿到的节点引用全部作废。一个脚本要做多处替换就循环「走树→定位→替换」别缓存节点。一个更根本的教训长文内容别走脚本通道。正文导入用现成的文件上传入口程序里构造 File 对象挂给 input脚本只负责定位和替换几百字的增量——传的内容越少抄错的空间越小。几千字的正文靠手工往脚本里抄必错用程序生成 JSON 字符串落盘、再整体嵌入脚本执行前先核对长度。三、和页面斗智斗勇坑全在元数据上正文搞定后剩下的是一张发布表单坑反而集中在这里受控输入框 set 不进去标题、摘要这些输入框是框架受控组件直接赋 value 会被框架的状态管理冲掉。要用原型链上的 native setter 赋值再派发一个 input 事件让框架感知抽屉会「记住」上次配置但不能信有时自动带上专栏勾选和标签有时又没有。每次都查三样摘要是不是被自动提取错了、标签是不是带的旧值、专栏勾没勾标签会自动带上无关的按文章内容猜的java、架构之类经常乱入。清掉它们的入口不在选择弹层里在抽屉上已选标签的关闭按钮——在弹层里怎么点都点不动位置不对勾专栏有副作用勾选动作本身有时会直接触发发布、跳转成功页。要存草稿就别碰专栏这是「另存」和「发布」的分界线编辑器节点会瞬间消失面板重渲染的瞬间正文节点查询返回 null。脚本开头轮询等它出现再动手别拿一次 null 当「页面坏了」。这些坑单看都小合起来就是「能演示」和「能天天用」的差距。归纳成一条对页面上的每个动作都要问一句「框架知不知道」——知道才作数。四、超时不等于失败差点写坏数据的一次一次往编辑器注入长脚本执行后 15 秒没有返回工具层报了超时。直觉反应是重跑——幸好没有。脚本其实还在跑只是慢重跑等于两个实例同时操作同一个页面正文会被写坏。超时的三种真相处置完全不同还在跑只是慢→ 别动用轻量查询确认状态产物在不在、页面什么阶段不要重发操作死了没执行→ 可以安全重发执行了一半停在中间态→ 最麻烦先清理中间态再重发否则重发叠加半成品。分不清时永远选等待观察。推到一般原则只有幂等的操作才配得上自动重试——设计自动化时把「重复执行两次结果不变」当验收标准。这次经历后来直接写进了系列番外调试 Agent 时最危险的操作不是失败是条件反射式的重发。五、怎么确认「真的发了」发布动作的返回信号不可靠抽屉消失可能是表单校验拦住了页面跳转可能异步还没完成。我的做法是给每个写操作配一个独立于操作通道的验证读发布后另开前台文章页拉正文搜这次新插入的文本—— 搜得到才算发布成功编辑器里的成功不算数 修订后同样拉前台正文确认新文本在、旧文本不在 草稿 登录态看前台文章页的角标——草稿状态会显示标记 标记消失才是已公开未登录看到 404 不算证据可能是缓存这套「写后必读」看着笨实际是整条流水线里性价比最高的部分自动化一旦跑偏最早发现的就是验证环节而不是读者评论区。六、人机边界哪些事我仍然自己做流水线跑顺之后分工自然清晰了Agent 干我干导入、填表、点发布、验证选题、定大纲、拍板口径原地修订、交叉补链接每篇发布前的终审重复执行同一套动作不厌其烦脱敏审查最后一条是红线。发布是公开且不可完全撤回的动作——文章会被爬、被缓存、被转发。内容里有没有不该出现的信息这个判断我不交给模型宁可流程慢一步脱敏这道闸必须留在人手里。这也是系列从第一篇贯穿到番外的原则——权限模型管底线人管例外。回头看搭这条流水线花的时间远少于它省下的时间但它最大的产出其实不是效率是让我把「AI 能可靠地操作一个真实系统」的边界摸清楚了——能到哪、在哪必须收手。这些经验后来反哺成系列里浏览器自动化和无人值守两篇的实战素材。踩坑清单拿「界面没变」当失败就重发注入其实成功了重发把同一段文本插了两遍。动作是否成功用状态确认不用表象确认直接改 DOM 完事编辑器不认保存的还是旧内容。受控世界里的写入必须走组件认可的通道拿转述喂 Agent「报错了好像是权限问题」——「好像」两个字足够让它往错的方向排查半小时。贴原始报错一字不差验证环节省事跳过自动发布最诱人的偷懒点就是「应该成功了吧」。每个写操作配一个独立验证读这步省了返工都是双倍的。参考资料专栏Agent 基座从零搭建—— 本文所述流水线的产出物本系列第九篇《浏览器自动化 Agent 详解》—— 等待、重扫、截图的稳定性三件套本系列第十篇《无人值守 Agent 详解》—— 幂等与失败分级本系列番外二《Agent 可观测性》—— 写后必读的验证思想本系列番外五《Agent 调试与止损》—— 超时与重试的展开发布后补链接
企业数字化 ERP 产品动态
相关推荐
OpenCore Legacy Patcher 完整指南:让老 Mac 装上新版 macOS 的 3 阶段操作路线 OpenCore Legacy Patcher 完整指南:让老 Mac 装上新版 macOS 的 3 阶段操作路线 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher
苹果每出新版 mac… · 2026/11/4 7:01:29
Folia 歌词动画播放器安装指南:十分钟跑起第一支歌词动效 Folia 歌词动画播放器安装指南:十分钟跑起第一支歌词动效 【免费下载链接】folia-major 专注于绚丽的歌词动画效果的本地音乐/navidrome/第三方多平台在线音乐播放器 项目地址: https://gitcode.com/GitHub_Trending/fo/folia-major
Folia 是一个基于 Electr… · 2026/11/4 7:00:29
抖音无水印下载,三步批量保存创作者全部作品:douyin-downloader 实践指南 抖音无水印下载,三步批量保存创作者全部作品:douyin-downloader 实践指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplicatio… · 2026/11/4 7:00:29
博客每日一句功能实现:双层缓存与响应式设计 1. 项目概述在个人博客中添加"每日一句"功能是个提升用户体验的好方法。这个功能每天展示不同的中英文双语名言警句,既能增加网站的内容丰富度,又能给访客带来一些思考和启发。我最近在自己的博客上实现了这个功能,经过几周的运行测… · 2026/11/4 7:41:37
机器学习微调中数据质量与数量的平衡艺术 1. 数据集的迷思:为什么"越多越好"不总是对的在机器学习领域,尤其是模型微调(Fine-tuning)过程中,新手最容易犯的一个错误就是盲目追求数据量。我刚入行时也踩过这个坑——当时为了提升文本分类模型的准确率… · 2026/11/4 7:41:37
鸿蒙生态下m3u_nullsafe的HLS流媒体深度适配实践 1. 项目概述:m3u_nullsafe在鸿蒙生态的深度适配作为一名长期从事跨平台流媒体开发的工程师,我最近在将Flutter项目迁移到鸿蒙平台时遇到了一个棘手问题:如何高效处理复杂的HLS流媒体协议。m3u_nullsafe这个Flutter组件在基础解析方面表现不错… · 2026/11/4 7:41:36
LL(1)语法分析器原理与实现:查表+栈的确定性解析机制 简介:本资源是一份面向计算机专业本科生与编译原理初学者的语法分析实验教学文档,聚焦编译器前端核心环节——语法分析程序的设计与实现。文档以算术表达式简化子集为分析对象,系统讲解LL(1)文法改写、预测分析表构建、分析栈与符号栈协同工作… · 2026/11/4 7:41:36
SQL Server新手入门:从安装到建表查数据的完整实践地图 简介:这是一份面向数据库初学者与SQL Server入门者的系统性学习笔记,帮助读者快速掌握关系型数据库核心概念与SQL Server管理实践。内容覆盖数据库对象操作(CREATE/DROP/ALTER)、C/S架构原理、系统数据库功能(master/m… · 2026/11/4 7:41:36
OpenClaw全栈AI开发环境一键部署指南 1. 项目概述:OpenClaw开发环境全栈解决方案OpenClaw作为当前AI开发领域的热门工具链,其部署过程往往成为新手入门的第一个障碍。我在实际团队协作中发现,超过60%的开发者卡在环境配置阶段,特别是CUDA驱动版本冲突、Python虚拟环境… · 2026/11/4 7:40:36
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38
AI辅助技术栈评估:提升研发决策效率60% 1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年… · 2026/11/4 0:00:17
从生成Token到直接决策:Jev如何重塑AI Agent工程实践 1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你… · 2026/11/4 0:00:17
32G统一内存跑大模型:内存账、TPS实测与端云分流 想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统… · 2026/11/4 0:00:17
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38