ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Multi-Agent + Claude Code 搭建博客自动分析工作流

Multi-Agent + Claude Code 搭建博客自动分析工作流 做内容分析和SEO优化这几年我一直想找一个能自动拆解博客结构的工具。最近搭了一套基于Multi-Agent的博客分析工作流核心引擎用的Claude Code。标题里“Muti-Agent”这个拼写其实有点问题正确写法是Multi-Agent但完全不影响这个话题的价值。这篇博客我打算换个角度来写不是单纯讲Claude Code怎么装、怎么配而是讲清楚在博客分析这个具体场景下为什么值得上多智能体架构以及我把这套东西落地时踩过的坑、总结的参数和经验。适合正在研究AI编程工具落地、想做内容质量自动化评估、或者想试着用Agent做内容分析的朋友。1. 为什么我盯上了“Multi-Agent Claude”做博客分析1.1 博客单篇人工分析的痛点做博客的人都知道一篇内容写完除了校对错别字还得看结构清不清楚、标题有没有吸引力、关键词密度合不合理、读者会不会在第二段就关掉页面。我自己以前的做法是拉一个对照表一篇一篇过遇到长文光读一遍就要十几分钟要是再拆结构、分析SEO、给改进建议单篇耗时轻松超过半小时。批量分析一个几十篇的博客站点基本就是一场手工劳动。后来我开始用大模型辅助分析用单个Prompt丢给模型“帮我分析这篇文章”效果怎么说呢能用但很飘。模型喜欢把所有问题混在一起回答有时候结构分析写得头头是道SEO部分却明显在编连文章里不存在的关键词都能分析出“密度适中”。这就是单一大模型的通病——它太想讨好用户了一张嘴上上下下全包结果每个维度都只做到60分。1.2 Multi-Agent与单一Prompt的区别不是分工是“互相看得见对方的思考”Multi-Agent的思路是模拟一个编辑部有人负责找资料有人负责审稿有人专门盯SEO有人负责出报告。每个Agent只干一件事Prompt可以写得非常专注工具权限也可以控制得很严。关键区别不只是分工而是中间产物是显式的。单Prompt模式下模型的“思考过程”你看不见它说结论你只能信Multi-Agent模式下采集Agent输出的是一份清洗后的文章文本质量Agent输出的是结构化评分表SEO Agent拿到评分表之后才知道该在哪个维度上做深入分析。这一步的产物是可见、可校验、可修正的。对于博客分析这种需要反复追问的业务场景这个特性太重要了。我用一个生活化的类比解释让一个人同时做翻译、校对、排版他也能出稿但错误率一定比“翻译完→校对盯译文→排版盯格式”高。Multi-Agent不是炫技是把分析流程拆成流水线每一站都有专人负责。1.3 Claude Code在自己工作流里的定位工具圈里能跑Agent的不少我最终把主力放在Claude Code上核心原因有三点。一是它对长上下文的支持很顶分析一整个博客站点时经常要把几十篇文章的标题、摘要、段落结构一次性塞进去窗口不够大Agent逻辑再漂亮也白搭。二是它的Subagent机制几乎是天生的Multi-Agent基础设施。只要在项目目录下建一个.claude/agents文件夹然后丢几个Markdown文件每个文件定义一个专职Agent角色主Claude Code进程就能按描述自动调度它们。门槛低到令人发指不需要自己写Agent框架。三是可编排性。Claude Code带命令行模式可以一句“claude -p 指令”直接跑无头任务这意味着我可以用Python脚本或定时任务把它编成自动化流水线做完一批博客自动出报告扔到指定目录。这个用法远比交互式聊天适合内容分析场景。2. Claude Code环境准备从零到能跑通第一句指令2.1 装CLI和它的依赖Node.js、Platform、WSLClaude Code本质是一个Node.js命令行工具安装前最优先确认的是Node环境。建议直接装LTS版版本至少18以上我自己的机器用的是20跑得很稳。装完Node之后全局安装Claude Codenpm install -g anthropic-ai/claude-code装完敲claude --version能输出版本号就算成功。Windows用户如果看到“claude : 无法将‘claude’项识别为 cmdlet、函数、脚本文件或可运行程序的名称”说明npm全局路径没进PATH去系统环境变量里把npm的全局目录加上具体路径可以用npm prefix -g查。还有一类高频报错是claudes workspace requires the virtual machine platform on windows. enable。这说的是它要的“虚拟机平台”功能没打开。控制面板→程序→启用或关闭Windows功能勾选“虚拟机平台”和“适用于Linux的Windows子系统”重启。这个问题的本质是Claude Code在新版Windows上依赖WSL2或Hyper-V相关组件来隔离任务不是可选项是硬性要求。还有个别安装过程会遇到error: claude native binary not installed. either postinstall did not run多半是npm安装过程中脚本被中断或权限不足。处理办法是删掉全局包重装一次或者用管理员权限的PowerShell执行安装。重装前建议先npm uninstall -g anthropic-ai/claude-code清干净。2.2 三种模型接入方式官方订阅、CC Switch第三方API、LMStudio本地模型Claude Code装好之后面临第一个选择模型从哪来。我试过三种方式分别说说适用场景。官方订阅是最省心的。直接claude login走浏览器授权就行不需要配任何环境变量默认用的是Anthropic官方模型。如果你的使用频率高或者要用1M上下文窗口做整站分析直接用官方订阅最简单响应稳定新功能更新也最快。缺点就是贵而且国内环境连接官方服务的体验要看网络状态这里不多展开大家自己评估。CC Switch切换第三方API是很多人关心的方案。它是一个开源配置管理工具专门用来给Claude Code切换不同模型服务商。支持接DeepSeek、Qwen、GLM这些模型提供商操作逻辑是把不同服务商的base_url和token存成一套套配置一键切换不用每次改环境变量。# 安装ccswitch后按提示配置provider ccswitch add deepseek ccswitch use deepseek配完之后Claude Code读取环境变量时就能拿到对应的base_url和token。好处是成本立刻降下来坏处是第三方模型的能力边界和官方Claude不完全一致在复杂Multi-Agent调度中偶尔会出现“每个Agent都正常但汇总结果不一致”的情况需要自己在Prompt里做约束。LMStudio本地模型是离线方案。在LMStudio里加载一个Qwen或GLM本地模型启动本地服务后把Claude Code的base_url指向http://localhost:1234/v1认证token随便填一个占位字符即可Claude Code会以OpenAI兼容接口的格式和本地模型对话。setx ANTHROPIC_BASE_URL http://localhost:1234/v1 setx ANTHROPIC_AUTH_TOKEN local-test-token本地模型的好处是零API成本、数据不出机器对内容敏感的场景友好缺点是速度和生成质量明显弱于云端大模型小参数模型在长文本分析时容易丢细节。我的建议是调试流程用本地小模型正式批量分析用云端模型。2.3 我踩过的安装坑与第一轮排查说到安装必须记录几个真实的坑。第一个坑是Windows下路径问题。装完Claude Code后配置文件默认落在C:\Users\Administrator\AppData\Local\目录下有次报错信息里出现了“using provider-specific claude config: c:\users\administrator\appdata\local\”我一开始没在意结果发现无论怎么切换配置读的还是旧的那个。后来把配置文件清理干净再用CC Switch重新生成才正常。经验就是换API服务商之后别急着跑任务先检查配置目录下有没有残留旧配置文件。第二个坑是VSCode接Claude Code插件。在扩展市场搜Claude Code安装后会自动重开一个终端会话。第一次接的时候我发现两边配置不同步命令行里跑得好好的VSCode里却一直报“连接已断开”。后来定位到是VSCode集成终端没继承最新的环境变量重启几次VSCode或者在新终端里手动执行一遍环境变量设置就解决了。第三个坑是模型选择。Claude系列模型分好几个档位大模型、中档模型、轻量模型各有侧重。在Multi-Agent场景里不要所有Subagent都用最强模型成本吃不消。我自己的配置是主控和报告生成用最强档采集和结构化提取用中档纯格式转换类任务用轻量档整体成本能压掉三成。3. 博客分析的Multi-Agent编排系统设计3.1 六个Agent角色的设定与职责边界Multi-Agent系统的第一步不是写代码是画清楚“谁干什么”。我给博客分析场景定义了六个角色每个角色的职责边界必须非常明确。blog-crawler采集员接收一批博客URL抓取正文内容去除HTML标签、导航、广告等噪声输出纯文本。content-normalizer清洗员把采集到的文本按统一结构重新组织分段落、提取小标题、整理列表项。这个角色的存在是因为不同博客的排版差异太大不标准化后续Agent没法处理。quality-reviewer质量评审评估文章质量包括逻辑结构完整性、信息密度、是否有空洞表述、结尾是否有力。seo-specialistSEO专员分析关键词覆盖、标题吸引力、Meta描述、内链外链情况给出可量化的SEO评分。reader-intent-analyzer读者意图分析判断文章目标受众分析读者在阅读过程中可能的疑问和流失点。report-writer报告生成汇总所有Agent的结构化输出生成最终博客分析报告按优先级排序给出改进建议。这种切分的核心原则是每个角色只对一类问题负责输出必须是结构化数据。不要让质量评审去顺带点评SEO也不要让SEO专员去评价文笔。职责交叉是Multi-Agent项目后期维护最大的敌人。3.2 用.claude/agents定义SubagentClaude Code的Subagent机制非常轻量不需要写复杂框架只需要在项目目录下建.claude/agents文件夹然后写Markdown文件。文件名就是Agent的ID文件内容由YAML frontmatter和系统提示词组成。这是我在真实项目里用的一个SEO专员定义文件供参考--- name: seo-specialist description: 分析博客文章的SEO表现包括关键词密度、标题结构、Meta信息、内链建议。仅在需要SEO分析时调用。 tools: Read, Bash model: sonnet 温度: 0.2 --- 你是一名资深SEO分析师。你的输入是经过清洗的文章正文和文章元数据。 你的分析必须输出严格的JSON格式包含以下字段 - title_score: 标题吸引力评分0-10及原因 - keyword_density: 核心关键词密度评估给出建议区间 - meta_issues: Meta描述和标题标签的问题清单 - internal_link_suggestions: 至少3条内链建议 - seo_score: 综合SEO评分0-100 注意你只能基于输入文本做分析不能臆测文章里不存在的内容。关键点有两个tools字段限制了Agent能用哪些工具一般情况下只给它Read和Bash避免它主动去改文件model字段控制模型档位轻量任务不要用最强档最后那段“不能臆测”的约束在真实分析中极其重要不加这句Agent就敢编数据给你看。3.3 让Agent之间“对话”的调度策略角色定义好了接下来是调度。我试过两种模式各有利弊。第一种是Claude Code内建调度。当主对话里提到“分析SEO质量”主Claude Code会根据每个Subagent的description自动判断并调用seo-specialist。这个模式适合临时、单次的分析需求优点是零配置缺点是调度结果不受控你无法精确控制多个Agent的执行顺序和数据流向。第二种是外部Python编排器。我写一个Python脚本按顺序调用多个“Claude Code无头模式”实例把上一个Agent的输出JSON作为下一个Agent的输入。这个模式适合批量自动化比如每天夜里定时跑一次全站博客分析。优点是流程完全可控任何一步失败都能重试缺点是需要自己维护编排逻辑相当于每个Agent之间多了一道“翻译层”。从我的实践看博客分析这种标准化流水线业务强烈建议走第二种。因为它的执行顺序是相对固定的采集→清洗→质量→SEO→阅读意图→报告。与其依赖模型自己决定调度不如写死在编排器里稳定性和可维护性都好得多。4. 实操把一套博客分析流水线跑起来4.1 场景设定与输入规范我拿自己的一个技术博客站点做实验站点里一共36篇文章涵盖了工具教程、项目复盘、踩坑记录这几类。给流水线喂数据之前先定义输入规范。我建了一个blog_input.json里面是待分析文章清单{ site: example-blog, articles: [ {title: 用Claude Code分析博客的实验记录, url: https://example.com/2025/02/test.html, word_count: 2600}, {title: Multi-Agent在内容生产中的实践, url: https://example.com/2025/03/agent-practice.html, word_count: 3800} ] }输入越规范后面的Agent工作越省心。如果你连URL列表都没有也可以让采集Agent自己读sitemap.xml生成但我觉得给一份人工确认过的清单更稳妥避免Agent抓了一堆无关页面。4.2 从采集到报告完整Prompt链整套流水线的核心不是代码是每一站之间的Prompt设计。数据在Agent之间流动时需要有一个统一的“交接格式”否则每个Agent都在用自己的话概括传到下一站信息就走样了。我定义了一个中间格式叫clean_article字段包含article_id、title、clean_text、headings、word_count、publish_date。采集Agent和清洗Agent的任务就是把原始网页变成这个格式。之后的Agent读取这个格式输出各自的评估JSON。这里放一个质量评审Agent的实际Prompt片段你的输入是clean_article格式的JSON。请对文章做质量评审。 评估维度 1. 结构完整性是否包含明确引入、主体论证、结尾收束 2. 信息密度每千字是否包含至少1个可实操的要点 3. 表述质量是否存在空话套话、重复表述 4. 落地性读者读完是否能照着做 输出JSON { article_id: ..., structure_score: 0.0, info_density_score: 0.0, clarity_issues: [...], actionability_score: 0.0, overall_score: 0.0, top_3_improvements: [...] }发现没有每个Prompt都做了一件事明确输入格式、明确输出字段、明确评分标准。这个习惯养成了Multi-Agent的成功率能高出一大截。4.3 用Python编排多个Claude Code实例这是我实际在用的编排器核心代码去掉日志和异常处理后的简化版本import subprocess import json import os AGENT_STEPS [ (blog-crawler, 采集文章并提取正文), (content-normalizer, 将正文标准化为clean_article格式), (quality-reviewer, 输出质量评审JSON), (seo-specialist, 输出SEO分析JSON), (reader-intent-analyzer, 输出读者意图分析JSON), ] def call_claude_with_agent(prompt: str, agent: str) - dict: cmd [ claude, -p, prompt, --output-format, json, --subagent, agent ] result subprocess.run(cmd, capture_outputTrue, textTrue, encodingutf-8) if result.returncode ! 0: raise RuntimeError(fAgent {agent} failed: {result.stderr}) return json.loads(result.stdout) def run_pipeline(article_json: dict) - dict: current_payload json.dumps(article_json, ensure_asciiFalse) intermediate {} for agent_name, description in AGENT_STEPS: print(f当前Agent: {agent_name} - {description}) prompt f处理以下数据按你的角色要求输出JSON:\n{current_payload} output call_claude_with_agent(prompt, agent_name) intermediate[agent_name] output # 关键点为了让下一站拿到最核心的数据我们用当前输出替换当前输入 current_payload json.dumps(output, ensure_asciiFalse) return intermediate这段代码的要点在current_payload的迭代更新。每跑完一个Agent就用它的输出作为下一轮的输入这样各Agent之间的上下文是紧凑传递的不会越滚越臃肿。跑完reader-intent-analyzer之后再单独调一次report-writer把五份中间结果一次性汇总成自然语言的博客分析报告。真实跑通一篇文章大约要1到2分钟视模型响应速度而定。36篇文章的批量任务大概40分钟能出全站报告这个效率比人工分析高太多了。4.4 拿到结果后怎么反推质量任何自动分析工具输出质量都是要人验证的AI也不例外。我的验证方法是抽三篇文章把Multi-Agent的报告和人工评审对照主要看两个指标评分接近度和问题命中率。实际跑完第一轮我发现质量评审Agent给的分数普遍虚高一篇文章人工打分只有62它给了80。查了下原因Agent倾向于把“结构完整”当高分依据完全不看论点是否成立。解决办法是在Prompt里加了一条硬性规则“如果文章存在核心论据缺失结构分直接扣到50以下”。加了这条之后评分偏差明显变小。另一个例子是SEO Agent刚开始会过度关注关键词密度给出“密度过低建议从3%提到5%”这种过时建议。我纠正了它的知识库在Prompt里补充了“现代SEO不追求机械密度而是关注语义相关性和标题命中”后续输出就正常了。这个动作也提醒我给Agent的领域知识版本要新旧方法会带偏分析结果。5. 常见问题与排查技巧实录5.1 安装与启动阶段报错速查表这半年折腾下来安装启动阶段的报错基本都能背下来了整理成表方便你对着查。报错信息根本原因处理方法claude无法识别为cmdlet、函数npm全局路径未加入PATH执行npm prefix -g把输出目录加入系统Path并重启终端workspace requires the virtual machine platform on windowsWindows未启用虚拟机平台/WSL2开启“虚拟机平台”和“适用于Linux的Windows子系统”功能重启error: claude native binary not installednpm安装时postinstall脚本未执行卸载全局包后重装用管理员权限运行PowerShell版本升级后配置全部丢失升级时覆盖了配置文件升级前备份C:\Users\用户名\AppData\Local\下相关Claude配置目录左下角一直转圈无法交互终端代理环境变量冲突检查http_proxy/https_proxy环境变量临时清除后重试5.2 API配置阶段报错速查表接入第三方模型是问题重灾区报错五花八门但根因就那么几个。报错信息根本原因处理方法api error: 400 配置错误: claude provider 缺少 base_url 配置环境变量没传对CC Switch配置未生效检查ANTHROPIC_BASE_URL和ANTHROPIC_AUTH_TOKEN是否已设置版本更新后重设claude api error: connection dropped (econnreset)网络连接被重置服务端主动断开确认服务地址可达设置更短请求超时或切换配置到其他可用节点using provider-specific claude config: 路径同时存在旧配置文件干扰新配置清理Config目录下的旧配置文件只保留当前provideryour organization has disabled claude subscription access企业管理策略禁止了订阅接入用个人账号或获取组织授权这个报错和本地配置无关LMStudio连接后返回模型不存在本地服务未加载模型或模型ID不匹配LMStudio模型列表里确认加载了模型拷出完整模型ID填入配置5.3 多Agent协作中的隐性坑第五部分要说的不是命令和参数而是Multi-Agent架构本身容易出的“流程坑”。第一个是上下文污染。当一个Agent的输出包含幻觉信息而这个信息恰好又进了下游Agent的输入错误会被放大。我在一次分析中采集Agent因为没抓到全文把摘要当成了正文传给下一步结果质量评审、SEO分析全部基于这个残缺文本进行产出的报告完全不能用。后来我在采集Agent的输出里加了raw_text_length字段后续编排器检测到这个数值小于预期阈值比如少于1000字就直接告警不再继续往下跑。第二个是成本失控。Multi-Agent比单Prompt调用消耗的token多好几倍36篇文章分析一轮光中间传递的JSON就要好几万token。控制成本的办法有三个能用轻量模型就不用最强模型能让Agent输出压缩摘要就不要输出全文能在编排器里缓存中间结果就缓存。我现在做的增量分析只对新增文章跑一遍完整流水线旧文章直接复用上次的中间结果成本一下子降了很多。第三个是循环依赖。如果两个Agent互相校验比如质量评审说结构有问题报告Agent修改了结构又要重新评审可能陷入无限循环。我的解法是给编排器设置最大迭代次数超过就取最后一次结果并人工标记。工程上这叫“熔断”比让模型自己判断“我改好了”可靠得多。6. 一些体会这套Multi-Agent博客分析系统跑到现在我最大的感受是多智能体架构不是什么神秘的东西它本质上是在模拟一家编辑部的工作流程。真正的难点不在配置Claude Code也不在写Subagent的文件而在于你怎么定义问题、怎么切分职责、怎么设计Agent之间的交接协议。每个Agent的Prompt都是面向一个窄问题的所以写起来不难难的是整套系统的边界管理你得时刻清楚哪些数据该流动、哪些状态该停留在某一步。我个人目前最推荐的落地路线是先用单Agent跑通再拆成两个Agent确认效果确实变好再往更多角色扩展。不要一上来就搭六个Agent否则排查问题的时候你根本分不清是哪个环节把数据带偏了。我就是从“采集报告”两个Agent起步迭代了三轮才稳定成现在的六角色流水线。后续我还打算做两件事一是把报告输出接进MCP服务器让分析结果能直接同步到文档系统二是加一个定时触发每周自动抓取站点新文章产出增量分析。这个方向的可玩性还很多如果你正在折腾类似的内容分析场景可以照着这个思路试试看。
返回列表