news 2026/8/27 7:45:44

用LLM写技术博客:从初稿到发布的完整工程化流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用LLM写技术博客:从初稿到发布的完整工程化流程

写技术博客和写代码最大的区别在于,代码可以通过编译器和测试用例判断对错,而一篇文章要判断好坏,往往要等读者读到一半才见分晓。LLM 技术写作之所以在开发者群体中流行,不是因为模型能代替人总结思想,而是因为它能把写作过程从“面对空白页面”改成“面对一份可以修改的初稿”。这篇报告会拆解开发者为什么愿意用 LLM 写博客、应该怎样准备运行环境、如何把写作流程工程化,以及发布前必须做哪些验证和排错。

文章面向正在尝试用 LLM 整理技术笔记、输出博客、沉淀团队文档的开发者。看完之后,你会得到一条从选题到大纲、从初稿到验证、从排错到发布的完整链路,而不是停留在“用 AI 生成一段文字再复制粘贴”的层面。

1. 先回答核心问题:开发者为什么愿意用 LLM 写技术博客

1.1 技术写作的低效环节,恰好是 LLM 能补齐的环节

写一篇技术博客真正耗时的地方,往往不是打字,而是组织内容。打开编辑器之后不知道先写概念还是先写操作步骤;同一个主题在不同平台要重新调整结构;代码块和配置片段粘贴进来之后还要整理格式;中英文术语混在一起,读起来不顺畅。这些环节本身不需要太多“创作灵感”,却会消耗大量时间。

LLM 解决的是“从零开始”的成本问题。给它一个主题、一份踩坑记录、一段报错日志,它可以在几秒钟内生成结构完整的初稿。开发者要做的不再是凭空搭建文章框架,而是在初稿上做增删、验证代码、补充真实细节。从实际使用体验来看,写作时间可以减少一半以上,而且这部分节省下来的时间几乎都来自格式整理、大纲调整和措辞打磨,而不是来自内容质量的注水。

需要强调的是,这里说的“效率提升”有一个前提:写作素材要来自真实项目。如果让模型在没有任何输入的情况下凭空生成一篇“缓存优化实战”,得到的内容往往正确但无重点,最后改稿的时间可能比直接写还长。LLM 在下游整理环节效率高,在上游事实生产环节并不具备可靠性。

1.2 从“代笔”到“辅助”:LLM 在写作链路中的真实定位

把 LLM 当成“代笔”是最常见的误区。模型可以生成一段逻辑通顺的文字,但它不知道这段文字描述的功能是否真的存在,不知道命令在你所在的环境里是否能跑通,也不知道某个版本号是否已经过时。

技术博客的信任基础是可复现。读者收藏一篇文章,通常是因为它解决了某个具体问题,并且照做之后能成功。如果代码不能运行、日志是编造的、路径是虚构的,那么文章发布后只会带来更多提问和差评。因此,LLM 的合理定位是“协作者”而不是“作者”。

写作环节LLM 可以承担的程度开发者必须负责的部分
选题拓展高,可以快速列出相关子话题判断这个主题是否真的有真实需求
大纲组织中高,能生成完整目录树判断结构是否符合读者认知习惯
初稿生成高,能快速铺开内容事实核查、删改、补充细节
代码块生成中,能给出常见写法在真实环境运行验证
排错段落低,容易编造错误原因提供真实日志和真实的排查过程

1.3 收益与成本要分开核算

把 LLM 接入写作流程,不会只带来收益。它的成本集中在三个地方:调试提示词、核查模型输出、把生成的代码跑通。这三个环节的工作量取决于文章的主题离项目和真实数据有多远。

项目收益成本适合场景
效率初稿速度快,格式更规整第一次调试提示词需要时间素材充足的实战类文章
覆盖度容易扩展开头、对比、扩展方向容易产生与主题无关的内容需要发散找角度的科普型文章
一致性多篇文章结构能保持统一提示词模板需要维护系列博客、团队文档
准确性无直接收益需要逐条核对事实和运行代码排错和教程类文章尤其明显

结论很直接:当写作素材来自真实项目时,LLM 的投入产出比最高;当内容完全依赖模型想象时,返工成本最高。这也是为什么优秀的 AI 辅助写作流程,第一步通常是收集素材,而不是打开对话框。

2. 写作不是孤立任务:LLM 工具链和运行环境怎么准备

2.1 两条路线:云端 API 还是本地模型

接入 LLM 之前要先选运行路线。云端 API 适合大多数个人博客场景,注册之后就能调用,不需要关心 GPU 和显存。本地模型适合两种情况:一是文章涉及未公开的项目细节,不希望把内容发送到外部服务;二是离线写作,或者对数据流向比较敏感。

对比维度云端 API本地模型
部署难度低,获取密钥即可调用较高,需要下载模型并配置运行环境
硬件要求无特殊要求需要 GPU、内存和磁盘空间
数据隐私取决于服务商的条款数据不出本机
单次使用成本按 token 计费主要是电费和硬件成本
离线可用
输出稳定性通常较高取决于模型尺寸和量化方式

对普通技术博客来说,云端 API 已经足够。如果平时会写一些关于内部系统、商业项目、安全漏洞的文章,就优先考虑本地部署,避免把敏感信息拼进提示词。

2.2 本地部署 LLM 时的硬件、依赖和目录规划

本地部署 LLM 不一定需要高端显卡,但要提前规划好资源。模型文件动辄几个 GB,量化后的模型能降低显存占用,但也会影响输出质量。上下文越长,显存压力越大。建议先跑通一个小模型,验证流程,再根据实际效果决定是否升级。

# 示例:启动本地模型服务 # 具体工具和模型名称以官方文档为准 python -m venv .venv source .venv/bin/activate # 安装调用接口所需的 Python 依赖 pip install requests

环境准备好之后,建议把写作项目按目录拆分。这样提示词、草稿、脚本和素材不会混在一起,也方便后续做批量生成。

blog-writer/ ├─ prompts/ │ ├─ system.txt │ └─ outline.txt ├─ drafts/ │ ├─ cache-penetration.md │ └─ redis-miss.md ├─ scripts/ │ └─ generate.py └─ notes/ └─ project-notes.md

目录分层不需要很复杂,但“素材、提示词、脚本、产出”四类文件一定要分开。很多人直接把所有内容堆在一个对话框里,等一个月后想复用提示词时,发现什么都找不到。

2.3 一个容易混淆的问题:ComfyUI 和 LLM 必须在同一台电脑上吗

很多开发者会在同一台机器上同时使用 ComfyUI 做图像生成、使用 LLM 做文本处理,因此经常有人问这两者是不是必须部署在同一台电脑上。答案是:没有必要。

ComfyUI 负责图像生成任务,LLM 负责文本理解和生成,它们在功能上没有依赖关系。所谓“必须同机”通常来自两种场景:一是当前只有一台带 GPU 的机器,二是在 ComfyUI 里通过节点调用 LLM 来增强提示词。如果只是分别完成图像和文本任务,完全可以通过 HTTP API 把两个服务部署在不同的机器上,甚至把 LLM 换成云端接口。

真正需要注意的是资源竞争。ComfyUI 和本地 LLM 都是显存大户,同时运行很容易触发 OOM。减少冲突的做法包括:

  • 分开部署,文本生成走云端 API,ComfyUI 留在本机。
  • 错峰使用,避免两个大任务同时执行。
  • LLM 使用量化和小上下文配置,给图像生成留出显存。
  • 用独立进程启动服务,方便单独重启和观察日志。

2.4 环境检查清单

在开始搭建写作流水线之前,先按下面的清单确认环境。

检查项确认方式正常状态
Python 版本python --version能正常运行脚本
API 密钥检查环境变量是否设置目标环境能读取到密钥
网络连通性用 curl 请求接口地址能返回 JSON
GPU 显存nvidia-smi剩余显存足够加载模型
磁盘空间df -h模型文件所在分区有足够空间
依赖版本pip freeze与需求文件对比版本不冲突

这份清单不是一次性的。模型版本升级、显卡更换、接口服务调整时,都应该重新走一遍。

3. 把写作流程工程化:一个可复用的技术博客生产链路

3.1 先定选题和大纲,再让 LLM 生成初稿

直接让 LLM 写一篇“关于缓存穿透的博客”,得到的结果往往大而全,但读完找不到重点。正确顺序是先定大纲,再逐段生成。大纲的作用类似代码里的接口定义,先把结构定清楚,后面的实现才不会跑偏。

你是资深技术编辑。下面是我的主题和素材: 主题:Redis 缓存穿透的排查和应对 素材:项目日志、代码片段、踩坑记录 请输出 Markdown 格式的大纲,包含: 1. 目标读者和前置知识 2. H2 章节和 H3 小节 3. 每节需要的代码、配置、表格 4. 需要开发者手动验证的事实点 不要输出正文,只输出大纲。

大纲生成之后要做一次人工检查:确认是否覆盖“是什么、为什么、怎么做、怎么查”,确认每个 H2 下是否有足够细节支持。如果大纲里全是“概述、原理、实践、总结”,说明结构还不够具体,需要继续细化。

3.2 用系统提示词约束角色和输出

生成正文之前,先定义系统提示词。系统提示词的作用是让模型进入特定的写作模式,避免输出过于空泛。

你是一名有十年经验的后端开发者和技术博主。 写作规则: 1. 全文使用中文,技术术语保留英文并给出中文解释。 2. 结构顺序必须是:概念解释、环境准备、代码实现、运行验证、常见问题。 3. 所有命令和配置必须说明运行环境。 4. 段落必须有信息量,禁止使用缺少实义的套话。 5. 生成代码后,用一个自然段解释关键参数。

系统提示词不需要一次写得完美,可以在使用过程中迭代。但要注意,规则越具体,输出越接近可发布状态。如果你希望文章里保留个人经验,可以在系统提示词里加入“必须加入真实踩坑记录,不得编造错误日志”。

3.3 用 Python 脚本批量调用 LLM,把写作变成流水线

一篇完整博客往往超过两千字,单次生成容易截断,也容易丢失前面章节的细节。更稳妥的做法是把文章拆成章节,逐段生成,然后再合并。这样任何一个章节质量不达标,只需要重新生成该章节,不需要整篇重来。

import os import requests from pathlib import Path API_KEY = os.environ["LLM_API_KEY"] BASE_URL = os.environ.get("LLM_BASE_URL", "https://api.example.com/v1") MODEL = os.environ.get("LLM_MODEL", "example-chat-model") def generate(system_prompt: str, user_prompt: str) -> str: resp = requests.post( f"{BASE_URL}/chat/completions", headers={"Authorization": f"Bearer {API_KEY}"}, json={ "model": MODEL, "messages": [ {"role": "system", "content": system_prompt}, {"role": "user", "content": user_prompt}, ], "temperature": 0.3, "timeout": 120, }, ) resp.raise_for_status() return resp.json()["choices"][0]["message"]["content"] def gen_sections(sections, system_prompt: str, out_dir: Path): out_dir.mkdir(parents=True, exist_ok=True) for sec in sections: text = generate(system_prompt, sec["prompt"]) (out_dir / f"{sec['name']}.md").write_text(text, encoding="utf-8")

这段脚本把“调用模型”和“保存文件”拆开,好处是失败时能看清楚是网络问题、接口问题还是内容质量问题。temperature设低一些,输出会更稳定,适合技术文档类内容。实际项目中,接口地址、模型名和鉴权方式要以你的服务商文档为准。

3.4 代码、日志和配置片段要回到真实工程环境验证

模型生成的代码只能证明“它看起来像代码”,不能证明“它能运行”。技术博客一旦被读者收藏,往往说明读者把它当作操作手册。如果代码在干净环境里跑不通,文章的可信度会直接归零。

建议在发布前把每个代码块放进一个干净的临时环境运行。干净环境的意思是:不要使用本机已经装好一堆依赖的解释器,而是新建虚拟环境,再安装需求文件。

python -m venv /tmp/verify-env source /tmp/verify-env/bin/activate pip install -r requirements.txt python 示例脚本.py

如果代码需要数据库、Redis、消息队列等外部依赖,至少要在文章里写明启动方式和版本要求。这一步看起来繁琐,但它是把“AI 生成的草稿”变成“可以发布的技术文章”的核心环节。

4. 让文章具备技术颗粒度:提示词、RAG 和输出格式控制

4.1 提示词要约束角色、背景、范围和禁止项

写好提示词是使用 LLM 写作的核心技能。一个可复用的提示词通常包含四个部分:角色、背景、范围和禁止项。角色决定语感,背景决定内容方向,范围决定边界,禁止项决定哪些输出必须避免。

你是服务端开发工程师。 写作主题:Redis 缓存穿透、击穿、雪崩。 目标读者:1 到 3 年经验的 Java 后端开发者。 交付内容:概念解释、最小示例、代码、常见问题排查表。 禁止:不要写与主题无关的性能营销内容,不要编造日志。

对比一下,如果只写“帮我写一篇 Redis 缓存的博客”,模型会按自己的理解自由发挥。结果往往是结构完整,但没有针对性,也没有颗粒度。提示词越具体,返工越少。

4.2 把项目资料交给模型:RAG 与轻量知识库

模型不知道你的项目里有什么代码、遇到过什么报错、最终怎么解决的。要让文章贴合项目,就必须把素材带进提示词。最简单的方式是直接拼接,把笔记、日志、配置文件贴进用户消息。更强的做法是把个人 wiki 和踩坑记录整理成可检索的知识库。

维护个人技术 wiki 是一个成本很低、收益很高的习惯。把常见问题、代码片段、命令记录按主题整理成条目,写作时直接检索相关条目,拼进提示词。这样每次写博客实际上是在复用过往经验,而不是让模型凭空生成。

# 伪代码:把与主题相关的笔记检索出来,拼进提示词 related_notes = search_notes(topic="缓存穿透", top_k=3) user_prompt = f"下面是项目笔记:\n{related_notes}\n\n请基于笔记生成正文"

对个人博客来说,刚开始不需要引入向量数据库和完整 RAG 架构。先维护好碎片笔记,写作时手动选择相关内容,效果已经足够。只有当笔记量很大、手工挑选明显耗时之后,再考虑自动化检索。

4.3 输出格式控制:为什么 JSON 比自由文本更可靠

如果生成结果需要程序化处理,可以要求模型输出 JSON,而不是自由格式的 Markdown 文本。JSON 可以被 JSON 解析器校验,字段缺失能及时发现,后续转成 Markdown 或 HTML 也更方便。

{ "title": "Redis 缓存穿透的三种应对方式", "summary": "面向初中级后端的缓存穿透排查笔记", "sections": [ { "heading": "什么是缓存穿透", "content": "第一次请求一个不存在的数据时,缓存没有命中,请求打到数据库。" } ], "code_blocks": [ { "lang": "java", "code": "// 示例代码" } ], "risks": [ "调用远程缓存时未设置超时时间" ] }

使用 JSON 输出时,注意两点:第一,模型可能偶尔输出不合法 JSON,脚本里要做异常处理;第二,JSON 结构里不要放太多自由文本,每个字段尽量短,避免模型在中途截断。转成 Markdown 时,可以用一个小脚本渲染 sections 和 code_blocks,把最终结果写回文件。

4.4 版本、路径和参数信息必须保守处理

LLM 的训练语料有时效性。模型的回答可能停留在某个较旧的版本,也可能把不同版本的功能混在一起。写技术博客时,涉及版本号、命令参数、API 名称、路径和平台规则的内容,必须做保守处理。

模型容易生成的确定表述发布前应该改成
官方已支持某个功能我验证的版本支持该功能
在所有环境都能运行以下步骤在特定环境验证通过
修改某个配置文件即可修改项目中的对应配置,路径以实际项目为准
这是目前最优方案在我的场景下更合适的方案

保守不是含糊,而是把结论限定在自己验证过的范围内。读者想要的是可以判断是否适用于自己环境的文章,而不是一句没有边界的断言。

5. 运行验证:从“生成了”到“能发布”要过哪些检查

5.1 代码可执行性检查

发布前把所有代码块提取出来,逐段运行。这个过程可以部分自动化,但核心步骤仍然需要人工盯住结果。

# 提取 Markdown 中的脚本并做语法检查 python -m py_compile 示例脚本.py

如果代码块里包含命令,要确认命令在当前系统 shell 下能执行;如果包含配置片段,要确认文件名、路径和占位符没有遗漏。最容易被忽略的是图片路径和示例文件路径,模型喜欢生成your-project/src/main/java/...这类示意路径,发布前要改成读者真正能对应的结构。

5.2 技术事实与版本时效审查

逐条审查文章中的确定性表述。把所有“官方支持”“最新版本”“默认开启”这类说法找出来,与自己的验证记录对照。凡是没有验证过的事实,要么删除,要么改成“需要在你的环境确认”。

重点核对以下内容:

  • API 名称和参数是否与当前文档一致
  • 命令参数是否存在,是否区分大小写
  • 版本号是否写错或过时
  • 平台和工具的规则是否变化
  • 引用的依赖是否存在兼容性问题

5.3 风格一致性与平台规范检查

一篇博客发布到技术平台之前,还要做格式和风格检查。人工逐行看太慢,可以用脚本扫描常见的模板表达。

from pathlib import Path BANNED = ["众所周知", "毋庸置疑", "废话不多说", "你学会了吗"] for md in Path(".").glob("*.md"): text = md.read_text(encoding="utf-8") for word in BANNED: if word in text: print(f"{md.name}: 发现模板表达 {word}")

除了禁用词,还要检查 Markdown 格式是否规范:H2 标题是否编号、代码块是否带语言标识、表格是否有对齐线、段落是否有超长行。CSDN 这类平台对代码块语言标识尤其敏感,缺少语言标识的代码块会失去高亮效果。

6. 常见问题与最佳实践

6.1 高频问题排查表

问题现象常见原因检查方式处理建议
文章结构空洞只给了主题,没有给大纲和读者定位查看用户提示词是否包含读者和交付物先让模型生成大纲,确认后再写正文
生成的代码不能运行模型没有获得真实环境信息在干净虚拟环境运行代码以运行结果为准,补齐版本和日志
API 名称和版本写错训练语料过期与官方文档逐条核对发布前把所有确定性表述过一遍
多篇文章风格雷同提示词缺少个人经验约束对比不同 prompt 的输出在提示词中加入自己的踩坑和结论
本地显存溢出ComfyUI 与 LLM 同时运行nvidia-smi查看显存占用分开部署、错峰运行、使用量化模型
长文后半部分被截断上下文太长或单次生成内容过多查看输出末尾是否完整拆分章节,逐段生成再合并

6.2 从现象倒推原因:质量下降排查路径

当使用 LLM 写作的质量突然下降时,按顺序检查以下环节。

  1. 输入是否正确:主题、素材、日志路径是否有误。
  2. 提示词是否完整:有没有丢失角色、范围或禁止项。
  3. 上下文是否合适:素材太少导致信息不足,素材太长导致重点丢失。
  4. 模型参数是否异常:temperature过高会导致输出发散。
  5. 接口是否变化:服务商是否切换了模型版本。
  6. 输出是否被后续脚本改写:合并、格式化逻辑是否引入了错误。

这条排查路径适用于大多数情况。不要一遇到质量问题就急着换模型,先检查输入和提示词,大部分问题出在这里。

6.3 可执行的最佳实践

把真实日志、真实错误信息作为素材,不给模型编造排错的机会。模型最擅长整理,最不擅长发明事实。

发布前在干净环境运行所有代码块。这一步能避免大多数“文章看起来很好但照做失败”的风险。

对版本敏感信息使用占位符或验证记录。建议在文章开头或末尾标注“本文验证环境”,让读者知道适用范围。

建立自己的提示词模板库,像管理代码一样管理模板。提示词是解决写作问题的代码,值得用版本控制工具管理。

每周固定用个人 wiki 记录踩坑,写作时直接引用。知识库和工作流是长期复利。

用脚本检查禁用词和格式,减少人工 Review 负担。但脚本只能检查文本,不能代替对技术事实的核对。

发布前检查清单:

检查项检查方式通过标准
代码可运行干净环境执行所有代码块按预期输出
事实核对与官方文档对照版本、参数、行为一致
格式规范Markdown lint 脚本标题编号、代码块语言、表格正常
术语统一全文检索同一术语没有多种译法
素材完整对照大纲逐节检查每节都有示例、代码或表格
禁用表达脚本扫描无模板套话,无空泛形容词

6.4 下一步扩展方向

把写作流水线接入 CI,提交草稿后自动执行代码块验证和格式检查,适合有固定发布节奏的团队或系列博客。

用 RAG 接入团队文档,可以生成内部技术方案和复盘报告。相比个人博客,团队场景对数据隐私要求更高,更适合本地部署加私有知识库。

用同一组提示词对比不同模型的输出,能帮助你找到最适合自己写作风格的工具,也能在模型升级时快速评估效果变化。

如果要长期做技术输出,下一步最有价值的事情不是接入更多自动化工具,而是把个人 wiki 沉淀成可复用的知识库。素材积累得越早,LLM 辅助写作的收益越大。

回到最初的问题:开发者为什么愿意用 LLM 写技术博客?核心原因是它把写作从“从零表达”改成了“从初稿修订”。模型负责把散乱的素材整理成结构完整的文本,开发者把节省下来的时间用来验证代码、核对事实、补充真实踩坑过程,最终形成自己的技术判断。这个分工能成立的前提是,你始终清楚哪些环节可以交给模型,哪些环节必须自己完成。写技术博客的护城河从来不是打字速度,而是对问题真正深入的理解。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/27 7:45:35

Microchip加入Linux基金会与AGL,嵌入式汽车开源生态迎来关键变局

1. 这则消息到底在说什么 最近业内有一条不大不小、但值得细品的消息:Microchip正式加入Linux基金会,同时成为Automotive Grade Linux(AGL)项目的成员。如果你不是搞嵌入式或者汽车电子的人,可能对这三个词都不太敏感&…

作者头像 李华
网站建设 2026/8/27 7:44:58

基于来源条件描述长度增益的生成式抄袭检测与候选重排序

AI 生成内容大量涌入之后,“抄袭”这个词的含义已经完全变样了。以前查重系统比的是 n-gram 重叠和向量余弦相似度,对付复制粘贴足够,但对付“把来源扔给大模型帮我改写一遍”这种操作,几乎无能为力。很多时候,一段文字…

作者头像 李华
网站建设 2026/8/27 7:44:00

VR3D:3D表示学习实现跨视角行人重识别

无人机拍到的和地面看到的是同一个人吗?VR3D 用 3D 表示学习解决跨视角行人重识别先抛一个真实场景:城市多机协同巡逻中,目标先在路边被地面摄像头拍到,30 秒后无人机从 80 米高度飞过,它捕捉到的画面几乎只剩下头顶和…

作者头像 李华
网站建设 2026/8/27 7:43:26

LLM 辅助技术博客写作:场景拆解、落地工作流与风险规避

之前帮团队搭建技术博客后台时,我一直在反思一个问题:为什么现在开发者写技术文章越来越离不开 LLM?为了搞清楚这件事,我花了三周时间观察日常写作流程,也翻了不少开源项目和社区讨论,最后整理出这份完整报…

作者头像 李华
网站建设 2026/8/27 7:40:51

用RL微调LLM去除AI味写作:从SLOP到人味

如果你最近经常用大模型写文章,大概会有一个共同感受:生成速度确实快,但文字越来越像一个模子刻出来的。每段都要“值得注意的是”,每篇结尾都要“综上所述”,稍微长一点的回复里就能看到“赋能”“闭环”“抓手”这类…

作者头像 李华
网站建设 2026/8/27 7:39:32

多化学类型线性充电器设计:从方案选型到PCB调试

1. 项目概述:线性充电拓扑不是落后,是特定场景下的最优解 接到这个"Linear Battery Charger with Multi-Chemistry Operation"项目需求时,我第一反应是:还在用线性架构做多化学类型充电,是不是有点"返祖…

作者头像 李华