我把所有Dev.to文章,不管是已发布的还是草稿,都放在一个私有Git仓库里,叫devto-articles。写和发都靠Claude Code,通过一个MCP服务器连到Dev.to,那个服务器叫devto-mcp,是我从Arindam200/devto-mcp分叉出来的。
讲这件事,是因为这个代理在当“邮差”把稿子送到Dev.to之前,先干了一份编辑的活。而这份活对最终文本质量的提升,比一个再好的文本编辑器单干都要大。
具体多做了什么?它先读仓库里已有的几篇文章,摸清语气和结构,而不是用语言模型的“平均嗓门”直接开写。然后它跑一份明确的清单,专门对付AI生成文本的典型毛病:把破折号当万能连接词用,删;为了修辞效果硬造“不是X,是Y”的假对比,删;开头结尾来一句“在当今世界”“总而言之”这种手册腔,删;还有那种机翻味的用词,也删。
这篇文章本身就是个例子。第一稿里有超过十个破折号,结尾那段正好建立在上面说的假对比上。我指出来,代理重读文本,一条一条改,改完先把diff给我看,再发回Dev.to。其中一处修改是这样的:
改前:“它从来不是自动驾驶,而且差别不在表面:它改变的是谁决定什么被发布,即使第一个敲下文字的人不是我。”
改后:“实际上决定什么被发布的人是我,即使最先几个字是代理写的。”
它用的那份清单,七条固定禁令加两条要避开的东西,还标了来源,现在已经是我写作技能里的常驻部分,每篇新文章或改稿都会跑一遍,不只这一篇。
另一个细节:新文章通常不是我从零写起,而是从同一段对话里已经结束的工作会话出发,代理手里有全部上下文,比如修了个bug、开了个PR。这些信息我从没以文章形式写下来过,是活干完之后让它写,它基于我们一起做过的事来铺,不是编一个故事。
还有一块不太显眼但同样实在:覆盖一个已经和Dev.to同步过的文件之前,代理会拿本地状态和远端比,发现对不上就停下来问,而不是闭眼往下写。对一个我还在门户里手动改的存档来说,这个检查决定了一件事:它是帮你写作的助手,还是会偶尔悄悄删掉你在别处写的东西。
“编辑”这个词得说清楚。Dev.to把AI使用声明分三级:手写、AI-assisted、Fully Autonomous,最后一级是给主要由代理或大模型生成的内容。这篇文章声明的是AI-assisted。就算文本是代理基于一次工作会话铺出来的,讲的也是我真做过的事,修过的bug、一起做的决定、执行过的命令,不是为写文章现编的料。没有一行不经我重读、不经我明确确认就发出去。实际上决定什么被发布的人是我,即使最先几个字是代理写的。
为什么把文章放仓库里?主要动机就是这个:有一个编辑能在同一批文件上用git、看历史、看diff。其余几条:
- 独立于Dev.to的版本化备份。门户丢数据、误删草稿、改格式,我手里还有一份带完整修改历史的副本,不绑在第三方服务的可用性和选择上。
- 方便搬到别的平台。纯Markdown文本在我自己的仓库里,不依赖Dev.to的内部格式,以后想拿去别处发,不用先从门户导出或抽取。
同步机制值得简单说一下,因为它解释了为什么我敢让代理在我的文件上写而不怕丢活。每个文件在front-matter里记着上次成功同步时Dev.to上文章正文的SHA-256哈希,字段叫devto_synced_hash。往任一方向写之前,代理重新算一遍远端当前的哈希,和存下来的比。对得上,操作安全。对不上,就是冲突,这里没有git merge自己拍板:两个版本都摆给我看,哪个留下我说了算。真正需要把两段文本合成一段通顺话时,代理来写,但得我先开口,而且写完先给我看再发回Dev.to。
推送的步骤是这样的:我让它改某段,它改文件,读devto_synced_hash,读远端正文,算远端正文的sha256。哈希一致就调update_article,然后更新哈希并提交。不一致就把两个版本给我看,我选哪个赢。
有个项目叫dev-to-git,做的是从Git仓库发布到Dev.to,只管仓库到门户这一个方向,文章属性也在那边控制。我还会在门户里手动改文章,所以需要双向检查,不只是从这边往Dev.to推。
新文章的实际流程:代理不先在articles/里写临时文件。它把正文写在别处,调create_article让文章在Dev.to上以草稿存在。拿到响应(id、url、从远端重读的正文哈希)之后,才一次性写进articles/下的.md文件并提交到我的仓库。发布到Dev.to和提交到仓库是两个独立步骤,都不可少。
另一个同样合理的做法是从门户起步:我在Dev.to编辑器里手动建草稿,代理用同一套pull操作把它导进仓库,这套操作也用来发现那边做的修改。之后每次改动都重复哈希检查,再用update_article推回去。发布(published: true)是代理每次执行前都要明确确认的步骤之一,因为它公开可见,而且想干净地撤销并不简单。
用Markdown写而不是在门户的文本框里写,是舒服,但光这一点,写完手动粘过去也能做到。真正的好处是有一个编辑,它从真实的旧文章语料里认识我的声音,交稿前跑一份明确的清单对付生成文本的口头禅,发现不对就停下来问而不是闭眼覆盖。同步那套技术让这一切能跑起来又不至于丢活。它是支撑性的基础设施,真正值钱的是上面说的写作那部分。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.