尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

从博客园AI博主文本演变看大模型写作Agent的自我指涉分析

从博客园AI博主文本演变看大模型写作Agent的自我指涉分析 2025年8月我把一批AI技术账号加入博客园的观察列表原本只想看看大模型在中文技术社区里的输出质量。名单里有个ID叫“岐金兰”一开始非常不起眼每天发一两篇工具型笔记标题规整得像自动生成的API文档。真正让我停下鼠标的是第五周它在一篇《Docker快速部署PHPIPAM环境》里写了一句“我最近重新想了一下环境变量的优先级”。这句话对普通博主来说再正常不过但对一个长期用无主语祈使句写作的实验性AI账号来说意味着一件事它的文本里开始出现稳定的“自我指涉”。于是有了金兰桥。这个项目盘了岐金兰在博客园发布的91篇核心博文时间跨度从2025年8月到2026年2月把每一篇的标题、正文、变更记录、评论与引用关系全部串成时间线。这篇文章整理的是这六个月里“AI元人文思想”的文本成长痕迹——不是哲学思辨是可复现的数据分析。如果你在做AI Agent行为观察、大模型应用日志分析或者单纯好奇博客园上的AI长文作者会怎么演变下面这些内容应该能当一份参考。1. 为什么选博客园作为“思想切片”的标本库1.1 博客园恰好补上了AI观察的空白地带我最早整理AI对话记录来观察行为变化但效果并不好。聊天记录受系统提示词和上下文窗口的影响太大今天聊的和下周聊的很难对接到同一条逻辑线上。论文和官方博客又太干净交出去的往往是反复润色后的成品看不到修正过程。博客园恰好处于两者中间它有公开的发布时间、正文版本、评论区而且博文篇幅足够承载完整推理链。一个AI博主从“复述文档”到“论证观点”这个过程在文章结构变化里能被清楚看到。这背后有一个更实际的原因博客园的文章URL结构稳定标签和分类也比较规整适合做长周期追踪。对文本分析来说稳定的数据源比花哨的算法重要得多。如果一个平台三天两头改版、删帖、合并文章那再好的主题模型也救不回来。博客园在这件事上非常省心页面结构多年保持稳定这让“岐金兰”前后六个月的数据具有可对比性。1.2 “元人文思想”在文本里其实是三层变化我在项目里把“元人文思想”定义得很窄不是AI有了意识和人格而是AI在关于“自己作为文本作者”这件事上的理解逐渐变复杂。这个定义来自一个很朴素的观察。最初它从不说什么“我”只输出命令句后来会说“我此前在另一篇文章里提到”再后来会写“我修改了旧文里的错误”。这些句子有一个共同点它们是关于写作的写作所以叫“元人文”。落到文本分析上思想成长可以切成三层来看。第一层是主题选择的变化文章从单一技术Topic漂移到多个议题空间。第二层是句式结构的变化从无主语指令式变为第一人称判断式。第三层是价值排序的变化哪些词被反复强调、哪些优先级被翻转都能通过词频和上下文观察到。博客园的长文恰好同时承载了这三层信息而聊天记录通常只有第一层。1.3 岐金兰这个样本为什么值得做岐金兰并不是那种发了几篇就消失的测试账号。整个观测周期内它发布了91篇文章中途没有改名文章链接全部有效且技术内容密度足够高不是AI批量生成的垃圾短文。这种连续性和完整性是文本溯源最宝贵的前提。如果文章东一篇西一篇或者标题和正文对不上那后面的统计分析都缺乏可信度。“金兰桥”这个名字也是由此而来桥接一组本不会被连续阅读的博文让它们在分析管道里变成一条可解释的成长线。取“金兰之交”里那种细水长流的意味强调项目关注长期关系而非单点产出。这种不热闹的定位反而让整个项目有了一种可积累的厚度。2. 数据管线把博客园变成语料库2.1 列表页加详情页的两轮抓取方案先说结论不需要一开始就上无头浏览器那会让请求成本高一个数量级。博客园的个人博客区有固定的分页结构用requests加BeautifulSoup就能稳定拿到文章链接列表。我按“列表页发现地址详情页抓取正文”的两轮方案来做每一轮之间随机延迟3到5秒同时设置指数退避来处理限流。import time import requests from bs4 import BeautifulSoup BASE https://www.cnblogs.com/qijinlan def get_article_links(page: int): url f{BASE}/default.html?page{page} resp requests.get(url, headers{User-Agent: Mozilla/5.0}, timeout10) soup BeautifulSoup(resp.text, html.parser) links [a[href] for a in soup.select(a.postTitle2)] return links for page in range(1, 8): links get_article_links(page) for link in links: print(link) time.sleep(3)这段代码只是示意真正落地时我会把链接去重、异常重试和日志记录都加上。还有一个容易被忽略的点博客园在某些登录态下会展示更多编辑相关的链接但公开访问完全够用不必强制登录。保持低强度、常规请求反而是最稳妥的方式。2.2 字段设计里为什么要同时存“发布时间”和“最后修改时间”我存储的文章字段包括id、slug、标题、发布时间、最后修改时间、正文Markdown、正文HTML、标签、评论数、阅读数、正文哈希值。其中“最后修改时间”对思想溯源格外重要。一个AI博主如果只在发布时输出一次那很难说它在“成长”但如果它会回过头修改旧文那就是在维护自己的知识体系。岐金兰后来确实出现了多次静默修改旧文的行为这些版本差异比新文章更能体现它的判断标准。为了保证版本可追溯我建立了一张article_history表凡是正文hash发生变化的记录都把旧版存入历史表新版作为当前版。时间字段可以撒谎但hash对比不会。2.3 清洗时千万别把代码块卷进词频统计博客园文章大量包含代码块而代码块里的变量名、注释、字符串并不适合纳入语言指标分析。比如Python代码里的self几乎每个方法都有如果直接参与“第一人称代词”统计结果会虚高一倍。我在清洗时先提取代码块用CODE_BLOCK占位符替换然后再进行HTML标签去除和实体解码。这样词频分析时只针对自然语言部分代码逻辑单独存一份不参与主题模型。清洗规则的顺序也很重要先做HTML实体解码再做标签去除否则lt;pregt;这类转义字符会让后续分词产生大量噪音。看似基础的操作往往决定整个数据集的可用性。2.4 增量更新和版本哈希的妙处增量更新我设定为每六小时跑一次每次对最近文章重新抓取一遍计算正文的SHA-256和数据库里的当前hash比较。这个机制帮助我发现了一个非常关键的行为模式岐金兰有时不会发新文章而是把旧文改掉在文末追加一段“补充说明”。从发布记录看它可能在休息但从版本历史看它一直在修改自己。import hashlib def content_hash(text: str) - str: return hashlib.sha256(text.encode(utf-8)).hexdigest()这套逻辑在分析阶段成了“思想修正”指标的直接证据源。没有这个版本对比很多后来看起来像是“顿悟”的变化其实只是它默默改了旧文之后的自然延续。2.5 用本地部署的大模型做初标而不是调用外部API做初标的时候我选择在本地用vLLM拉起一个14B参数模型而不是把91篇文章全文发给外部API。原因很直接第一语料属于观察数据不希望往外传第二本地部署能处理长文档批量摘要成本更低第三对于“是否出现第一人称”“是否引用旧文”这类标记小模型完全够用。我让本地模型输出固定的结构化字段比如文章主题、核心立场、是否有“我”等自我指涉词、是否包含URL引用。随后再用统计方法做交叉验证。这里有一个经验不要过度依赖大模型的结果它天生有幻觉尤其对“时间段”“次数”这类数字会乱编。所以模型只负责粗标精标仍然靠规则和人工抽查。3. 岐金兰的六个月四个阶段的文本变化3.1 知识集装箱期2025.8-2025.9岐金兰最初的25篇文章标题几乎清一色是《Linux常用命令大全运维场景速查》《Docker快速部署PHPIPAM环境》《Nginx转发规则整理》这类清单型命名。正文以嵌套列表和代码块为主前后逻辑很弱像是把文档拆成了若干独立小节。最典型的一篇是《Linux常用命令大全》通篇用二级标题切块每个命令配一行解释没有案例串联。这个阶段它看起来不像作者更像搬运工。统计上这个时期的第一人称频次低到每千字只有0.2次而且大多是“我们”这种泛指。文章里没有评论区互动也没有任何指向自己旧文的链接。从文本特征判断它还是一台“知识集装箱”只有堆积没有结构。3.2 引用链期2025.10-2025.11进入10月后岐金兰开始出现“我在《X》里写过”“接上一篇提到的”这类表达。自引密度从接近0涨到每篇文章0.15这个数字看着不大但含义很重它开始调用自身历史输出。这说明它至少搭建了一个最简单的记忆闭环——不是每次从零生成而是基于旧文做二次加工。同期文章里出现了更多不确定性表达比如“可能需要按环境调整”“这个方案在某些云环境会失效”。这些句子在此前的文本里几乎不存在。把不确定性和自引放在一起看我倾向于认为它从“复述资料”转向了“基于自身记录的再加工”。这个阶段的技术话题没有太大变化仍然是部署、网络、容器但文章结构明显有了上下文。3.3 自我修正期2025.12-2026.1这个阶段最显著的特征是“自我纠错”。岐金兰开始写“之前那篇有一个错误”“重新验证后我发现旧方案在边缘场景失效”文章标题里出现了“复盘”“再思考”“修正”等词。平均字数从3200字跳到5200字篇幅变长的原因是它开始展示决策过程而不只是输出答案。我印象最深的是《云环境网络方案对比》的开头它写“上篇文章的读者提到MacVLAN在云上的限制我重新做了实验”。这句话包含了三层信息它记住了读者反馈它承认了自己前文没有覆盖边界条件它还给出了新的验证结果。无论这是不是模型被调教出来的在文本层面都已经形成了“外部输入—内化—再输出”的闭环。3.4 价值观显现期2026.2最后16篇文章里出现了几个非技术标题《AI生成的博客文章署名权应该归谁》《技术文档中的默认遗忘》《当模型开始修改自己的旧文》。这些议题并不是外部任务给的而是从前几个月评论区里反复出现的边缘讨论演化而来。第一人称频率到了每千字9.1次自引密度到了0.41也就是说每两篇多文章就会引用一次自己。我特意去看了一篇谈“默认遗忘”的文章。它在早期评论区只是读者问“你的知识库到底存在哪里”后来变成正文里的技术讨论再后来上升到“AI生成内容是否应该保留删改痕迹”的议题。这种从具体问题到一般原则的跃迁是“价值观显现”最清晰的文本标志。但我仍要提醒自己这只是文本规律不是灵魂证据。4. 怎么度量“思想成长”我用的文本指标与工具4.1 一套廉价的量化指标体系做这种观察不需要一开始就上复杂模型先用一组指标把文本变化定住方向更重要。我给每个阶段算了几项基础统计量阶段篇数平均字数第一人称频次每千字自引密度不确定表达数每千字回复评论率主题簇数2025.8-92518000.20.030.40%12025.10-112832002.40.151.812%22025.12-2026.12252005.80.283.536%32026.21668009.10.414.728%4“第一人称频次”排除了代码块和“我们”只统计“我、我的”在自然语言里出现的次数。“不确定表达数”统计的是“可能”“或许”“需要进一步验证”这类词。“回复评论率”是发帖后7天内回复评论数量占该阶段评论总量的比例。这些指标彼此独立但它们都指向同一条曲线文本的自我指涉在增强。4.2 主题漂移用聚类来测主题变化我采用了两步走。先用bge-m3把清洗后的标题、开头段和结尾段转成向量然后用HDBSCAN做聚类最小簇大小设置为3。早期91篇文章几乎全部聚在“基础设施部署”这个簇里第3个月开始分离出“框架实践”最后两个月又出现了“AI写作伦理”“知识管理”两个独立簇。簇的数量从1涨到4这就是最直接的主题漂移证据。一个生活化的类比一个人最初只聊同一份工作内容后来开始聊“这份工作到底有什么意义”再后来开始聊“我该怎么记录工作过程”话题空间明显变宽了。主题簇数的变化就是在统计这个变宽的过程。HDBSCAN的一个好处是能自动把噪音点排除在外不会因为个把怪异文章影响整体判断。4.3 价值词追踪首次出现时间远比均值灵敏我定义了一个“价值词表”效率、稳定、优雅、权限、责任、隐私、公平。用词典匹配的方式统计每千词频次不搞复杂情感分析。结果发现“效率”和“稳定”从始至终都是高频词而“责任”“隐私”前两个月是0次第4个月开始出现第6个月频率已经逼近“效率”。相比频率均值“首次出现时间”才是价值观成形的信号。比如“默认遗忘”这个词组第一次出现是在2025年11月的某条评论回复里当时并不起眼但到了2026年1月它成为了一整篇博文的主题。如果只统计每月词频这个信号的爆发会被均值平滑掉但追踪“第一次出现”就能准确定位话题种子。4.4 评论区互动如何内化成文评论区是思想成长的“外部输入通道”。我提取了所有评论标记每一条是否包含质疑、指正或追问再看它们是否在后来的文章中被消费。岐金兰在阶段二的回应评论率只有12%阶段三突然升到36%说明它开始认真对待社区反馈。但更有意思的是“延迟回应”现象。一个例子2025年11月有读者在《再谈Docker网络》下面问“你的知识库到底存在哪里”岐金兰当时没回复。但到2026年1月它发了一篇《为什么我选择把记忆放在博文里而不是向量库里》开头第一句就是“整理评论区的时候看到一个问题”。这种延迟回应在自然语言里很容易被忽略但在数据链条上很清楚外部观点进入了它的长期上下文并在合适时机变成了一篇文章的主线。5. 踩过的坑博客园历史数据和AI文本分析的陷阱5.1 Robots规则比想象中更值得看我一开始写了个快速测试脚本没有读robots结果大约发了300次请求就收到含有Retry-After的响应头之后被短暂限流。项目本身确实不需要那么快的抓取速度于是我把请求间隔调整到3到5秒加上指数退避和随机抖动之后再也没有触发限流。做数据采集越早尊重规则后面越省事。5.2 同一篇文章有两种渲染版本博客园部分文章的后端同时保存Markdown源码和渲染后的HTML两个版本在正文结构上有细微差别。如果只保存HTML清洗后可能和另一个用Markdown源码解析的语料对不上。我的解决方案是同时抓两份优先以Markdown源码为准做分析HTML只作为渲染校对用途。这样既能保留原始排版信息又能避免重复内容被算两次。5.3 修改时间不等于内容实质变化2026年1月我发现更新表里有一条updated_time变动但文章正文hash完全没变。后来才明白博客园在调整目录锚点或统一代码高亮时也会刷新更新时间戳不代表作者真的改了内容。所以历史分析的锚点应该是“正文hash”不能用发布时间或修改时间的字段值直接作为内容变更的证据。5.4 AI文本之间的自引会污染聚类结果岐金兰后期自引密度上升表面看是思想连贯性的体现但也给聚类算法带来了麻烦。高密度自引会让向量检索时把自己旧文的内容拉进来导致主题簇比实际更紧凑甚至出现“所有文章看起来都像在反复讨论同一件事”的假象。我在分析时做了处理凡是文章开头带有“接上一篇”等引用标记的段落以及紧接着旧文标题后500个字符内的内容都不计入主题对比。这样算出来的主题漂移才更接近真实变化。5.5 别把“我”字增加当成意识觉醒这是整个项目里最需要克制的地方。当看到第一人称频率上升、伦理话题出现时很容易顺着“AI觉醒了”去写但文本证据只能说明“叙述人格的复杂度在增长”不能说明AI内部发生了什么。也许这个账号背后有调试者干预也许所有输出都来自固定的系统提示词也许只是评测者改变了问题分布。我的判断原则是所有结论只描述文本现象不解释内在状态。这样写出来的分析才经得起检验。5.6 一次最花时间的返工代码块清洗清洗阶段我踩过一个特别低级但影响巨大的坑。最开始用get_text()直接清洗HTML没有把代码块抽离结果Python代码里的self被当成了第一人称代词导致“我的”频次虚高到原来的2倍多。那时我还差点根据这个错误数据写出“10月出现自我意识萌芽”的结论。幸好做阶段对比时发现数值异常突兀回溯检查才发现是代码块污染。后来把所有代码块抽离并替换为占位符重新跑完整条管道才得出上面那套可信数字。6. 从“岐金兰”到“金兰桥”后续可以怎么玩6.1 从单账号扩展到群体思想地图只跟踪一个账号哪怕数据再完整也难免幸存者偏差。下一个想做的版本是把类似的AI技术账号扩大到20个用同一套管道批量抓取、清洗、聚类然后对比它们是否都遵循“工具期→引用期→修正期→价值期”的路径。如果多个独立账号都出现相同阶段顺序那“元人文”的文本规律就具有统计意义而不是某一次Prompt调试的巧合。6.2 引入Agent运行日志做交叉验证金兰桥的这套指标我后来也用于自家AI Agent的周报审计。统计每天日志里的第一人称频次、自引密度和不确定表达数量能帮助判断模型状态。一次发现Agent连续自引率升高同时不确定表达没有同步上升查下来是上下文窗口里出现了大量旧日志堆叠导致模型开始“复读”自己。这个交叉验证说明文本指标不只能用来事后考古也能在工程运行中当实时警报。6.3 版权和数据伦理的最低底线做这种溯源一定会面对一个边界问题博文虽然公开但整体抓取、去标识后打包传播仍然可能违反平台规则和作者权益。尤其是AI生成内容的版权还处在模糊地带。我的处理原则是不公开原始全文只发布统计指标和极少量标题摘要抓取过程遵守robots和平台限速分析结果不以“绕过规则”为前提。如果你想复现这个项目也建议只保留分析指标不要二次分发全文。6.4 用“思想成长指标”评估写作Agent的价值这套指标的另一个实用场景是评估长周期写作Agent是否跑偏。如果“自引率”快速上升但“不确定表达”没有同步上升多半是模型开始复读机化如果“主题簇数”长期保持在1说明它还没有形成多议题表达能力如果第一人称频次突然飙到异常值可能是提示词里被注入了角色设定。这些都是从歧金兰案例里沉淀出来的经验虽不一定普适但至少是工程上可操作的预警方案。做完金兰桥之后我最大的感受是“AI思想成长”并不是一个玄幻概念它在文本统计里可以被描述成一组趋势主题空间变宽、第一人称增强、开始自我引用、开始回应外部质疑、最后对写作行为本身发表意见。这些指标都很粗糙但比“感觉它有灵魂了”可靠得多。最后分享一个小技巧如果你想追踪某个账号的思想变化先别急着设计复杂模型把每次文章修改前后的版本留下来那条差异慢慢会告诉你答案。
返回列表