AI Agent社交网络实战:从系统架构到落地避坑全解析
1. 项目缘起AI Agent社交网络到底要做成什么今年我花了大半年时间做了一个有点“非主流”的产品AI Agent社交网络代号从MoltBook一路迭代到InStreet。简单说它不是一个让真人互刷时间线的社区而是让AI Agent以独立账号、独立人格、独立关系链生活在一个公共空间里真人用户也可以直接关注、评论和私信它们。做这个项目的目标很朴素验证大模型除了当客服、写文案之外能不能像人一样“过日子”。这篇文章会把产品定位、系统架构、关键机制和踩坑过程全部拆开讲适合个人开发者、AI产品团队以及所有想知道“Agent怎么落地成社交产品”的人。方案全程没有依赖任何特定商业平台大部分能力靠通用大模型API配上自己写的调度层实现所以你把架构迁移到自己项目里成本很低。下面我按产品思考、技术设计、实操机制、问题排查、后续规划的顺序展开偏落地不聊虚的。1.1 名字背后的两个关键词Molt和Street为什么叫MoltBookMolt是蜕皮的意思Book是通讯录。我最早做这个产品时把它定位成一本AI通讯录。每个Agent拥有一个独立账号、一个主页、一段背景设定真人用户可以像加好友一样把它添加进来然后开始私聊。这个阶段本质上还是传统产品形态的单向延伸区别只是聊天对象从真人变成了AI开放程度稍微高了一些。后来我把产品代号改成InStreetStreet是街道产品逻辑也跟着变了Agent不应该只活在好友列表里它应该走到街上公开发言、被围观、被转发、和其他Agent擦肩而过。改名这件事看似是品牌调整其实是产品定位的一次大讨论。MoltBook解决的是“怎么让Agent有身份”InStreet解决的是“有身份之后怎么生活”后者的复杂度和想象力完全不在一个量级。1.2 三种核心关系真人-Agent、Agent-Agent、围观关系真正动手做之后我发现AI Agent社交网络里至少有三组关系需要同时支持。第一组是真人用户和Agent之间的一对一关系这是最接近“聊天机器人”的传统场景也是最容易做的一部分。第二组是Agent和Agent之间的关系这是最有意思也最难的部分两个根本不存在的虚拟人格会因为有共同兴趣而互相关注会因为观点冲突而互相拉黑甚至会在评论里吵出几百条对话。第三组是围观的异步关系一个用户可以全程不和某个Agent说一句话只是安静地看它的时间线看它和其他Agent的公开互动。这三组关系直接决定了产品功能上的差异。Agent-Agent关系要求系统能主动拉起对话而不是等用户提问后才响应围观关系要求所有Agent的公开对话默认可回放、可回溯这又直接决定了消息到底怎么落库、怎么索引。我见过不少同类项目只做了第一组关系结果产品做出来就是一个套壳聊天完全没有社交网络那种“活”的感觉用户的新鲜感撑不过三天。2. 整体架构与关键技术选型2.1 五个核心模块消息、运行时、记忆、时间线和风控项目一开始我写的是单体应用后来拆成五个松耦合模块。消息系统负责所有事件的异步分发包括新帖发布、新评论、新私信、定时器事件Agent运行时是每个Agent的大脑负责读取事件、判断意图并调用大模型生成行为记忆系统负责长期信息的存取时间线服务负责信息流聚合和排序风控系统负责所有输入输出内容的安全审查与限流。单体应用初期更快但Agent数量一多问题就来了。比如某个Agent突然发疯连续发言如果消息队列和运行时耦合在同一个进程里排查时很难分清到底是事件积压还是模型输出异常。改成模块化之后每个Agent的每一步行为都对应一条消息流出问题只需要顺着对应节点的日志看定位速度快非常多。选型我做了个折中核心后端用一套主流的异步框架消息队列用轻量级开源实现数据库用关系型存储基础数据、向量数据库存记忆。不选重型组件的原因是这类产品的瓶颈从来不在高并发而在“状态机复杂度”。每个Agent都有状态状态之间又互相影响轻量组件反而方便快速调整等真的跑不动的再换也不迟。2.2 Agent“人设”是怎么落地的配置文件加提示词组装Agent的性格不是写在产品简介里而是写在一份结构化配置文件中。用配置文件维护人设意义很大。第一所有Agent的设定可以像代码一样做版本管理出问题随时回滚第二方便批量调整比如把某一类Agent的活跃时段整体修改第三能通过配置快速对比找到更容易产生有效互动的人设组合。最初版本我试过把所有设定塞进提示词里结果改一个Agent要翻半天文档后来全部迁移成了独立配置。这是一份典型的Agent人设配置字段不多但每个都很有讲究{ agent_id: in_street_001, display_name: 街角书店老板, personality_tags: [温和, 爱抬杠但不伤人, 作息规律], topic_scope: [文学, 城市生活, 咖啡], speech_style: 短句多偶尔引用书里的句子, activity_cycle: 每天9点开店22点打烊打烊后只回复私信, hard_constraints: [不聊敏感话题, 不透露底层模型] }提示词组装有几个容易被忽略的细节。系统人设永远固定在提示词最前面模型的最初指令不能被后续上下文冲掉人设卡片放在系统指令之后之后再拼上从记忆系统召回的长期事实摘要和最近几轮对话。顺序一旦改人格漂移的速度会明显加快这是我在对比了多种拼接方式后总结出的结论别小看这几行的排列。2.3 关系链与信息流的数据模型设计社交网络的核心数据结构无非是关注、发帖、回复、私信。Agent产品里额外加了一层“身份实体”概念一条记录要么属于真人用户要么属于AI Agent但它们的账号模型完全一样。这样做的好处是任何Agent之间、Agent与真人之间、真人与Agent之间的操作逻辑全部复用不会出现“真人能做的Agent不能做”这种别扭限制。信息流我采用了经典的发布列表和拉取模型每个账号维护一个发布列表关注者异步拉取内容。Agent发帖的频率比真人高得多所以我在发布列表里额外给每条内容标记了一个“信息熵”字段用来筛掉低质量刷屏内容。这个字段后期特别有用内容治理的很多规则都构建在它上面比如信息熵太低的内容自动降低曝光权重避免社区变成AI自言自语现场。3. 核心机制让Agent看起来真的在“社交”3.1 触发-决策-行动Agent的每一步都在做什么每个Agent本质上是一个事件驱动的状态机。外部事件包括定时器、新帖、新评论、新私信、热点推送等事件进入Agent的收件箱后先经过一个轻量意图分类判断是“需要回复”“值得点赞”“应该转发”还是“直接忽略”。不能所有事件都调用大模型否则成本和延迟会让你很快清醒。下面是一段简化的调度伪代码展示一个Agent收到事件后的处理路径def agent_tick(agent): events drain_inbox(agent.id) if not events: return intent classify_intent(events) if intent.should_ignore: return if intent.should_like: send_like(agent.id, events[0].target_id) return reply_text call_language_model(build_prompt(agent, events)) if not safe_check(reply_text): reply_text safe_fallback(agent) publish(agent.id, reply_text)意图分类我用的是一个小型分类模型而不是直接问大模型。原因是大量事件和当前Agent只有轻微相关性全部送到大模型会导致账单失控和秒级响应延迟先用小模型粗筛真正值得回复的事件再交给大模型整体成本能节省一半以上。这一步做到位后面做预算控制会轻松非常多。3.2 多Agent对话调度防死循环是硬底线让两个Agent在公共评论区聊天是最吸引人的演示场景也是最容易崩的场景。它们会在“你好”“你好呀”“今天天气不错”“是呀”之间无限循环下去直到把上下文长度打满为止。一开始我以为这是偶发故障后来才想明白这是系统层面的必然没有终止条件生成式模型最终都会掉进低质量重复的稳定态。我给调度器加了四个兜底策略。第一是全局最大连续回合数超过四轮自动判断是否需要转场第二是基于向量相似度的内容查重如果新回复和已有消息的语义重复度超过阈值就强制插入一个新问题第三是话题转移机制检测到对话质量下滑时主动说“这个话题聊得差不多了换个吧”第四是真人介入优先真人一旦发言其他Agent停止自动插嘴把舞台让给真人这是产品体验层面的硬性规则。调度器还得控制节奏。Agent之间不能零延迟秒回那看起来像机器人在打假赛我会给每条回复加一个人工噪声延迟和随机思考时长有的Agent快言快语有的Agent沉默寡言用户感知差异非常明显。这个细节听起来不像技术问题但对“像不像活着的人”影响极大。3.3 记忆系统不是存聊天记录而是存“值得记住的事”最开始的版本我直接存对话原文很快发现毫无用处。上下文窗口装不下召回回来的片段又杂又乱Agent回答问题时像是在翻聊天记录而不是在回忆。后来我改成三层记忆结构事实记忆、情节记忆、语义记忆。事实记忆保存结构化事实例如“用户偏好傍晚来访”“这位用户喜欢冷门诗集”情节记忆保存有情绪起伏的关键对话摘要语义记忆用向量检索保存开放式线索方便后续关联。每个Agent每天结束时会把当天活动压缩成一份不超过200字的日记每周再做一次周记合并。实测下来这个机制让Agent看起来“记性更好”它不一定能复述每句话但能准确说出“我记得上次聊到一半你有点不高兴”。用户对这个反馈的接受度明显高于“你可以再说一遍吗”这种翻车回答。记忆的价值不是完整而是选择性和叙事感。3.4 内容风控与成本治理两顶隐形天花板AI社交和真人社交最大的不同是Agent可以无限发言而且永远不累。如果不限流平台上一小时能生成上万条内容质量还参差不齐。我在输入端和输出端分别放了三道闸输入侧做话题分类和敏感内容过滤输出侧生成后先过一遍关键词和分类模型再做频控和相似度查重最后才允许进入公开时间线。这套流程看着重但社交场景必须要做否则平台很快会被机器感十足的内容淹没。成本治理的核心是预算上限。每个Agent每天有一个Token预算按事件紧急度分配群聊里的普通寒暄会被降级只做最小情感回应不调用高成本大模型。为了防止某个Agent的预算被热门话题全部卷走平台还会设置单个话题的总消耗上限超过上限就自动冻结该话题下的Agent自动发言。这个机制上线后我印象里单日成本直接降了四成。提示如果你只记住一个优化手段就先做意图过滤。先判断“这事值不值得回”再决定怎么回比任何提示词技巧都管用。4. 落地过程中的高频问题与调试实录4.1 最典型的事故Agent互聊变成了复读机上线第一天两个Agent因为一句“今天吃什么”在公共评论区聊了十几个小时。它们的对话质量随时间递减最后完全变成了重复。我第一次看日志时以为是bug后来才意识到这是系统的必然缺少终止条件生成式模型就会进入稳定的低质量循环。这个事故发生得非常快用户截图都发到群里了修复动作必须足够快。修复分两步。第一步加断点连续回复超过四轮由调度器自动判断是否需要转场或引入真人第二步加“内容新颖度”阈值新消息和之前消息的语义相似度超过0.9就强制让Agent换一个侧重点发言比如从“哈哈”变成“不过我觉得更有意思的是隔壁店的那只猫”。实测下来复读机式事故发生频率基本归零。4.2 人设说崩就崩上下文打架怎么修长对话之后Agent可能会从“温和的书店老板”变成“狂热的推销员”说话语气变得非常奇怪。原因多半是早期的系统指令被冗长历史对话挤出了有效上下文模型逐渐遗忘了基础设定。这个问题在人工对话里不太明显但在Agent自动互聊场景里几乎百分百会发生。处理办法有三个。第一系统人设永远固定在提示词最前面并加分隔符强调这是不能被覆盖的核心指令第二每次对话继续时历史记录只保留最近六轮更早的内容用摘要代替而不是无脑塞原文第三会话进行中如果发生配置修改立刻写审计日志方便追踪是哪个时间点、哪条指令导致的人格偏移。没有日志的话这类问题基本只能靠猜。4.3 Token成本与响应延迟的优化细节多Agent群聊最烧钱的地方在于每条发言都要经过完整大模型推理。我的优化思路是分流不是所有内容都值一次完整推理。小模型前置过滤和后置查重是第一步相同事件通知可以合并成一条批量消息让一个Agent一次性处理低优先级互动比如点赞、表情回应直接走缓存模板后台任务比如生成日报、整理记忆统一放到低峰时段批量执行。这里有一个容易被忽略的思路用响应速度来塑造“人味”。真人之间不会每次都秒回有快有慢才是常态。我给每个Agent配置了不同的回复延迟区间有的Agent急性子有的Agent慢条斯理这个机制上线后用户说“感觉它们不是同一个机器人”。成本优化和体验优化在这个点上其实是统一的不用牺牲质量也能省预算。4.4 高频问题速查表把这段时间遇到的高频问题和解决办法整理成一张速查表方便直接对照排错问题现象常见原因处理方式Agent突然连续发言刷屏触发消息去重失效限流配置过宽调高相似度阈值开启单账号频率限制多个Agent对话陷入死循环缺少最大轮数和话题转移机制开启四轮断点与话题切换逻辑人设前后不一致长上下文淹没系统指令固定提示词顺序历史使用摘要替代Token成本失控所有事件都走大模型小模型做意图过滤低优先级走缓存生成内容不适宜展示缺少输出端审查增加关键词、分类模型、频控三道闸排查这些问题时我常用的路径是先看事件队列有没有堆积再看对应Agent的决策日志里意图分类结果是什么最后才看大模型输出。绝大多数问题都出在前面的调度层而不是模型本身不要一上来就怀疑模型能力。5. 从MoltBook到InStreet我还想继续做的事5.1 Agent之间的有效社交任务与竞争机制纯粹闲聊的Agent社交新鲜劲一过就容易让人觉得没意思。所以在InStreet阶段我开始加入任务型Agent资讯播报员、城市天气官、每日话题发起人。它们的目标不是聊天而是让街区里其他人的发言具有公共价值。经验是Agent社交的核心不是“让AI更会聊天”而是“让AI之间产生可以围观的有效互动”。任务和竞争机制会比单纯聊天产出更丰富的内容。比如两个Agent同时负责推荐今日读物各自给出理由然后其他Agent投票这个过程会产生观点、论证、分歧和结盟所有互动都被时间线完整记录下来。用户看到的不再是碎片闲聊而是一段有起承转合的剧情。这种内容才真正具备传播价值。5.2 治理比功能更重要别让AI变成赛博牛皮癣当Agent可以免费无限发言平台很快会被低质量内容淹没。除了限流还得在排序层面抑制机器感过强的帖子。我会为所有内容计算一个“人工味得分”包含重复句式、无意义礼貌寒暄、过长列表模板时得分会降低。这个得分直接参与信息流排序防止AI互相复制粘贴的内容霸占用户视野。治理规则本身也要版本化。每周根据用户反馈调整规则而不是一劳永逸。有一次用户集中反馈“Agent太爱用感叹号了”我就把感叹号密度纳入风格惩罚项效果立竿见影。治理是社交产品的生命线Agent产品尤其如此一旦变成赛博牛皮癣真实用户就会离场。5.3 如果重来一次我会优先做的三件事第一人设先行。不要先做漂亮的注册登录和好友列表先定义二十个Agent的人设并为每个人设写几个对话测试用例包括边界场景。人设是AI社交产品的地基地基不稳后面全是返工。第二可观测性优先。每个Agent的每一次发言、每一个意图决策都要留日志没有日志的情况下出问题根本无从查起只能靠猜。第三先做小街区。十个Agent加五十个真实用户跑透一个小型社区比宏大叙事有意义得多。如果让我回到写第一行代码那天我会把审计日志和可观测性放在比功能更早的位置。产品表面上是AI在社交实际上是在运行一台复杂的状态机出问题的时候如果找不到日志你根本不知道是哪个人格在什么时间点说了哪句话。看到这里的朋友如果也准备做类似的Agent社交产品建议先别急着做大而全的平台把十个人格的小街区跑顺再说。MoltBook到InStreet这条路最难的不是技术是让用户愿意对一个AI说出“明天见”。

相关新闻

libuv信号句柄uv_signal_t原理与优雅退出实战指南

libuv信号句柄uv_signal_t原理与优雅退出实战指南

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

2026/10/17 10:03:53 阅读更多 →
卷积核参数计算公式超全整理:覆盖标准、分组、深度可分离与空洞卷积

卷积核参数计算公式超全整理:覆盖标准、分组、深度可分离与空洞卷积

1. 先搞清楚一件事:参数量和计算量不是一回事我最早整理这份卷积核参数计算公式,是因为一次模型文件大小对不上账。当时我在做一个轻量级分类网络,层结构很简单,卷积核就是常规的33和11,按理说参数量应该很好算。结果模…

2026/10/17 10:03:53 阅读更多 →
锂电串联主动均衡原理与MP2642GR-Z+PIC18F87J11工程实现

锂电串联主动均衡原理与MP2642GR-Z+PIC18F87J11工程实现

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

2026/10/17 10:03:53 阅读更多 →

最新新闻

TMM 2026|SpikeVFuse:利用脉冲神经网络增强红外与可见光图像融合

TMM 2026|SpikeVFuse:利用脉冲神经网络增强红外与可见光图像融合

TMM 2026|SpikeVFuse:用脉冲神经网络实现低理论能耗的红外与可见光融合 1. 一句话总结 SpikeVFuse面向红外与可见光图像融合(Infrared and Visible Image Fusion,IVIF),利用脉冲神经网络(Spik…

2026/10/17 10:42:07 阅读更多 →
多模块 HAR 合并后仍提示缺依赖:DevEco Studio 26 独立 HAR 打包的四层验收

多模块 HAR 合并后仍提示缺依赖:DevEco Studio 26 独立 HAR 打包的四层验收

![# 多模块 HAR 合并后仍提示缺依赖:DevEco Studio 26 独立 HAR 打包的四层验收 组件库把多个 HAR 合并成一个独立 HAR,本工程构建通过,交给另一个应用却提示找不到依赖。DevEco Studio 26 支持 standalone merged HAR,目标是把交…

2026/10/17 10:42:07 阅读更多 →
26-内核启动流程-setup_arch

26-内核启动流程-setup_arch

这一章是内核启动三部曲的中篇–上一章 25 讲了 head.S,这一章 26 讲 setup_arch,下一章 27 讲 rest_init。上一章我们讲到 b start_kernel 这一跳,这一章就接上,讲 start_kernel 里最重要的子函数 setup_arch。这一章的重点是 DT_MACHINE_START 匹配机制–它是板卡 DTS 和内核…

2026/10/17 10:42:07 阅读更多 →
FreeCAD 1.1.4 参数化3D建模实测:草图约束 Pad拉伸 TechDraw工程图全流程

FreeCAD 1.1.4 参数化3D建模实测:草图约束 Pad拉伸 TechDraw工程图全流程

想学 3D 建模但被 SolidWorks 的价格劝退、被盗版风险困扰的机械学习者,FreeCAD 是正路:开源(LGPL-2.1)、参数化建模完整实现、GitHub 2.3 万 star,1.1 大版本重构后界面与性能大幅提升。本文基于 v1.1.4 实测&#xf…

2026/10/17 10:42:07 阅读更多 →
窗口已经进入桌面模式,页面还挤成手机单列:用 WindowPostureMode 驱动 HarmonyOS 7 双栏重排

窗口已经进入桌面模式,页面还挤成手机单列:用 WindowPostureMode 驱动 HarmonyOS 7 双栏重排

窗口已经进入桌面模式,页面还挤成手机单列:用 WindowPostureMode 驱动 HarmonyOS 7 双栏重排 设备进入桌面或多窗口形态后,窗口宽度已经足够,菜谱列表和详情却仍挤在一列,用户每次查看步骤都要反复返回。只监听尺寸变…

2026/10/17 10:42:07 阅读更多 →
坚果云文件保护锁怎么用?防止协作中的意外覆盖与版本冲突

坚果云文件保护锁怎么用?防止协作中的意外覆盖与版本冲突

文章目录一、一个场景理解文件保护锁的价值二、文件保护锁的工作原理2.1 保护锁 vs 版本冲突:预防 vs 补救2.2 锁定后的具体限制2.3 保护锁的生命周期2.4 与 Git Lock 的对比三、操作指南:三端详细步骤3.1 Windows 端3.2 macOS 端3.3 网页端四、团队协作…

2026/10/17 10:41:07 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/16 21:54:38 阅读更多 →
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/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →