自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(117)
  • 收藏
  • 关注

原创 为什么我写的 MCP Server 在 AI 客户端里总是连不上?7 个坑我逐个踩完了

上周三晚上十一点,我把公司内部的工单查询接口封装成了一个 MCP Server,本地用mcp dev跑得好好的,结果一贴进 Claude Desktop 的配置文件,客户端那边就是一句冷冰冰的 “Server disconnected”。我盯着日志看了四十分钟,最后发现原因离谱到我想笑:我把python写成了python3,而那台 Windows 机器上根本没有python3这个可执行文件。这篇文章就是那次折腾之后整理出来的。

2026-11-13 09:04:13 152

原创 MCP Server 从 0 到 1 上手:把公司内部接口接进 AI 客户端,附 7 个踩坑点

上周三下午,同事小陈跑来问我:“你那个 AI 助手能不能直接查我们的订单库?我每天手动复制 SQL 结果太烦了。我当时的第一反应是写个脚本,后来想了想,不如直接用 MCP。花了一个周末把内部三个接口包成 MCP Server,现在我在 Claude Desktop 和 Cursor 里都能直接说"帮我查一下昨天退款单量",它自己去调接口。这篇就把整个过程和踩过的坑写清楚。

2026-11-12 09:03:29 280

原创 Codex 的 AGENTS.md 怎么写才省 token?从 0 到 1 上手,附 6 个避坑点

上周三下午,我盯着 Codex 的账单发呆:一个只改 200 行代码的小需求,它烧掉了 38 万 token。我翻会话记录才发现,问题不在模型,而在我那份写了 900 多行的AGENTS.md——它被完整塞进了每一轮请求的上下文里,等于我每问一句,都在为一份没人看的文档付费。那天之后我重写了三遍,把AGENTS.md从 912 行压到 87 行,同一个需求的 token 消耗降到 11 万左右,返工次数也从平均 2.4 次降到 1 次以内。这篇把整个过程拆开写,包括我踩过的 6 个坑。

2026-11-11 09:03:10 67

原创 LangChain ToolRuntime 详解:context、state、store 的正确用法

上周五下午我在改一个客服 Agent,需求很朴素:用户问订单状态时,工具要能自动带上当前用户 ID,不要每次让模型从对话里"猜"出来。我第一反应是在 prompt 里加一句"请记得传 user_id",结果跑了一晚上,模型十次里能传对六次,另外四次要么传了字符串"当前用户",要么干脆编了一个。第二天我把 LangChain 的 ToolRuntime 接进去,改完 20 行代码,这个问题就再没出现过。

2026-11-10 09:04:25 88

原创 Codex Skills 详解:把重复工程动作固化成可复用能力,附 11 个 Skill 的取舍

敲完之后我盯着光标愣了几秒——这串命令我这一周敲了 17 次,每次都一样,每次都要等 40 秒左右,而我在等的时候什么也没干,就看着滚动日志发呆。那一刻我意识到问题不在命令本身,而在于我把一件"已经想清楚了的事"反复用脑子重做了一遍。后来我把这串动作写成了一个 Codex Skill,现在只需要说一句"跑一遍提交前检查",它会自己执行、自己读失败输出、自己判断是 lint 问题还是类型问题,然后按不同类型给出不同的修复建议。

2026-11-09 10:00:33 155

原创 Agent 报错后反复调同一个工具?错误分类到状态快照的四层自救实现

上周二凌晨一点半,我盯着终端里滚动的日志,看着同一个工具被调用了第 31 次。。Agent 还在"努力",它认为只要再试一次就能成功。四十分钟后进程被超时杀掉,任务状态是"未完成",中间产出的三份草稿全部丢失。这不是我第一次遇到。过去两个月里,我手上跑着 6 个不同规模的 Agent 任务,其中 4 个都出现过类似的死循环。一开始我以为是模型不够聪明,后来把日志一条条翻出来看,才发现问题根本不在模型——。这篇文章把我最后落地的四层机制完整写出来:错误分类、退避重试、熔断降级、状态快照。

2026-11-06 09:24:28 210

原创 为什么你写的 Agent 一报错就死循环?我把错误自救与熔断机制拆成了 4 层

上周二凌晨一点半,我盯着终端里滚动的日志,看着同一个工具被调用了第 31 次。。Agent 还在"努力",它认为只要再试一次就能成功。四十分钟后进程被超时杀掉,任务状态是"未完成",中间产出的三份草稿全部丢失。这不是我第一次遇到。过去两个月里,我手上跑着 6 个不同规模的 Agent 任务,其中 4 个都出现过类似的死循环。一开始我以为是模型不够聪明,后来把日志一条条翻出来看,才发现问题根本不在模型——。这篇文章把我最后落地的四层机制完整写出来:错误分类、退避重试、熔断降级、状态快照。

2026-11-06 09:17:38 469

原创 OpenTelemetry 链路追踪实战:FastAPI 超时卡在哪一跳,附 5 个踩坑记录

上个月我们那个客服问答服务又超时了。前端报 30 秒网关超时,网关日志显示后端 8 秒就返回了 200,后端自己的日志里一个异常都没有。三个人查了一下午,最后发现是中间一层 Nginx 的只有 5 秒,而这条链路上根本没人知道请求到底经过了几个服务。那天之后我花了两个晚上,把 OpenTelemetry 接进了这条链路。现在同样的故障,我从 trace 面板上点开一个慢请求,三秒就能看出是哪一跳慢的。这篇把完整接入过程写下来,代码可以直接跑。

2026-11-05 09:19:37 658

原创 OpenTelemetry 从 0 到 1 接入 FastAPI:一次跨服务超时的排查全过程

上个月我们那个客服问答服务又超时了。前端报 30 秒网关超时,网关日志显示后端 8 秒就返回了 200,后端自己的日志里一个异常都没有。三个人查了一下午,最后发现是中间一层 Nginx 的只有 5 秒,而这条链路上根本没人知道请求到底经过了几个服务。那天之后我花了两个晚上,把 OpenTelemetry 接进了这条链路。现在同样的故障,我从 trace 面板上点开一个慢请求,三秒就能看出是哪一跳慢的。这篇把完整接入过程写下来,代码可以直接跑。

2026-11-05 09:11:51 30

原创 OpenTelemetry 从 0 到 1 接入 FastAPI:一次跨服务超时的排查全过程

上个月我们那个客服问答服务又超时了。前端报 30 秒网关超时,网关日志显示后端 8 秒就返回了 200,后端自己的日志里一个异常都没有。三个人查了一下午,最后发现是中间一层 Nginx 的只有 5 秒,而这条链路上根本没人知道请求到底经过了几个服务。那天之后我花了两个晚上,把 OpenTelemetry 接进了这条链路。现在同样的故障,我从 trace 面板上点开一个慢请求,三秒就能看出是哪一跳慢的。这篇把完整接入过程写下来,代码可以直接跑。

2026-11-05 09:08:23 325

原创 Python+SSE 流式输出实战:FastAPI 把大模型首字延迟从 14 秒压到 0.9 秒

上周三晚上十一点半,我盯着自己那个"AI 助手"的页面发呆:用户问一句话,光标转了 14 秒,然后"啪"地把一整段答案甩出来。老板在旁边说了一句"这跟百度有什么区别",我就知道这个周末没了。问题不在模型。我后来拿在服务端打了时间戳,模型第一个 token 在第 0.8 秒就吐出来了,剩下的 13 秒全耗在我自己的代码上——我用的是最朴素的同步等待,然后把整个 JSON 一次性返回给前端。模型早就开始流了,是我把它堵在了管道里。这篇文章就是那次重构的完整记录。

2026-11-04 09:11:29 184

原创 Python 用 SSE 做大模型流式输出:从 0 到 1 手写不卡顿的流式接口,避开 6 个坑

上周三晚上十一点半,我盯着自己那个"AI 助手"的页面发呆:用户问一句话,光标转了 14 秒,然后"啪"地把一整段答案甩出来。老板在旁边说了一句"这跟百度有什么区别",我就知道这个周末没了。问题不在模型。我后来拿在服务端打了时间戳,模型第一个 token 在第 0.8 秒就吐出来了,剩下的 13 秒全耗在我自己的代码上——我用的是最朴素的同步等待,然后把整个 JSON 一次性返回给前端。模型早就开始流了,是我把它堵在了管道里。这篇文章就是那次重构的完整记录。

2026-11-04 09:07:48 338

原创 Python 用 SSE 做大模型流式输出:从 0 到 1 手写不卡顿的流式接口,避开 6 个坑

上周三晚上十一点半,我盯着自己那个"AI 助手"的页面发呆:用户问一句话,光标转了 14 秒,然后"啪"地把一整段答案甩出来。老板在旁边说了一句"这跟百度有什么区别",我就知道这个周末没了。问题不在模型。我后来拿在服务端打了时间戳,模型第一个 token 在第 0.8 秒就吐出来了,剩下的 13 秒全耗在我自己的代码上——我用的是最朴素的同步等待,然后把整个 JSON 一次性返回给前端。模型早就开始流了,是我把它堵在了管道里。这篇文章就是那次重构的完整记录。

2026-11-04 09:04:37 330

原创 大模型流式输出总在转圈?Python SSE 从踩坑到上线的完整排查记录

上周三晚上十一点,同事把一个接口甩给我,说前端一直在转圈,一个字都不出来。我看了一眼他的代码,加,然后一次性return。模型那边明明在流式吐 token,他这边硬生生等到全部生成完才返回——首字延迟 18 秒,用户早就关页面了。这件事让我把 SSE(Server-Sent Events)从头到尾重写了一遍。下面是我在 Python 里做流式输出时真实踩到的 6 个坑,每一个都附上能直接跑的代码。

2026-11-03 09:13:22 193

原创 为什么你的大模型接口一直转圈不出字?Python SSE 流式输出的 6 个坑

上周三晚上十一点,同事把一个接口甩给我,说前端一直在转圈,一个字都不出来。我看了一眼他的代码,加,然后一次性return。模型那边明明在流式吐 token,他这边硬生生等到全部生成完才返回——首字延迟 18 秒,用户早就关页面了。这件事让我把 SSE(Server-Sent Events)从头到尾重写了一遍。下面是我在 Python 里做流式输出时真实踩到的 6 个坑,每一个都附上能直接跑的代码。

2026-11-03 09:10:17 134

原创 为什么你的大模型接口一直转圈不出字?Python SSE 流式输出的 6 个坑

上周三晚上十一点,同事把一个接口甩给我,说前端一直在转圈,一个字都不出来。我看了一眼他的代码,加,然后一次性return。模型那边明明在流式吐 token,他这边硬生生等到全部生成完才返回——首字延迟 18 秒,用户早就关页面了。这件事让我把 SSE(Server-Sent Events)从头到尾重写了一遍。下面是我在 Python 里做流式输出时真实踩到的 6 个坑,每一个都附上能直接跑的代码。

2026-11-03 09:07:35 230

原创 无人值守AI内容矩阵实战(10):Windows 上让 Python 进程 7×24 活着,6 个坑

这套东西一点都不优雅。没有容器、没有编排、没有健康检查端点,就是几个 PowerShell 循环加 Python 锁文件。但它解决了一个很具体的问题:在一台会重启、会休眠、会被人手动关窗口的 Windows 机器上,让两个进程老老实实待着。系列到这篇结束。回头看这 10 篇,从架构拆解、幂等闸、重试风暴、看门狗、自动补发、IM 长消息、Markdown 编辑器坑、标题 A/B,到今天的 Windows 守护进程——真正值钱的部分从来不是「AI 帮我写稿」,而是这些让流程不崩的工程细节。

2026-10-30 09:04:45 273

原创 无人值守AI内容矩阵实战(10):PowerShell 守护 Python 常驻进程的 4 个坑

上周三凌晨 2 点 17 分,我打开笔记本,发现发布器已经死了 6 个小时。任务管理器里那个 python.exe 进程不见了,日志文件最后一行停在。没有异常栈,没有退出码,什么都没有——就像它从来没存在过。。在 Linux 上这是 systemd 一行配置的事,加就完了。但我这套东西跑在一台 Windows 机器上,没有 systemd,也没有 supervisor。这篇是系列的终篇,我把自己在 Windows 上让两个常驻进程(调度器和发布器)7×24 活下来的全部踩坑记录写下来。

2026-10-29 09:11:03 666

原创 无人值守AI内容矩阵实战(10):Windows 上让 Python 进程 7×24 活着

上周三凌晨 2 点 17 分,我打开笔记本,发现发布器已经死了 6 个小时。任务管理器里那个 python.exe 进程不见了,日志文件最后一行停在。没有异常栈,没有退出码,什么都没有——就像它从来没存在过。。在 Linux 上这是 systemd 一行配置的事,加就完了。但我这套东西跑在一台 Windows 机器上,没有 systemd,也没有 supervisor。这篇是系列的终篇,我把自己在 Windows 上让两个常驻进程(调度器和发布器)7×24 活下来的全部踩坑记录写下来。

2026-10-29 09:07:28 353

原创 无人值守AI内容矩阵实战(10):Windows 上让 Python 进程 7×24 活着

上周三凌晨 2 点 17 分,我打开笔记本,发现发布器已经死了 6 个小时。任务管理器里那个 python.exe 进程不见了,日志文件最后一行停在。没有异常栈,没有退出码,什么都没有——就像它从来没存在过。。在 Linux 上这是 systemd 一行配置的事,加就完了。但我这套东西跑在一台 Windows 机器上,没有 systemd,也没有 supervisor。这篇是系列的终篇,我把自己在 Windows 上让两个常驻进程(调度器和发布器)7×24 活下来的全部踩坑记录写下来。

2026-10-29 09:04:18 311

原创 无人值守AI内容矩阵实战(9):20 天 689 阅读 0 收益,流水线凭什么还留着?

10 月 8 日晚上我把第一版发布器跑通,到 10 月 27 日,正好 20 天。看到这张表的第一反应是"白干了"。我当时坐在电脑前把三个平台的后台挨个刷新了一遍,确认不是数据延迟——阅读量确实就这么点。优快云 上阅读最高的一篇是 173,掘金有几篇停在 0,头条号的平均阅读比另外两个平台还低一截。。这篇就把这个决定的推导过程写清楚,包括哪些数据支撑它、哪些数据打脸它。

2026-10-28 09:03:57 73

原创 无人值守AI内容矩阵实战(8):标题 A/B 实验的 6 个工程实现细节,隔日对比与自动判胜

先说踩坑现场。十月中旬某天,我的调度器按计划给 优快云 补发 B 变体,生成、校验、提交,发布器返回ok: true,日志绿油油一片。我顺手去后台看了一眼——当天零新文章。排查了两个小时,问题出在我自己写的幂等闸上:B 变体标题被模型「参考历史高表现标题」参考得太到位,直接复刻了一篇旧文的标题,标题哈希撞库,幂等闸判定重复发布,静默跳过并返回。而调度器只判断了返回码,没看这个字段,把「跳过」当成了「成功」。

2026-10-27 09:15:41 205

原创 无人值守AI内容矩阵实战(8):标题实验怎么判胜?隔日补 B 变体 + 最小样本门槛的工程实现

上周二凌晨一点半,我盯着后台两张表发呆:同一篇稿子,A 标题拿了 173 阅读,B 标题只有 170。差 3 个阅读,我的判胜脚本却已经把它标成winner=A,还顺手把"实战干货式标题在 优快云 胜出"写进了洞察库。第二天复盘时我才反应过来——这个结论是拿噪声当信号,3 个阅读的差距在任何一个平台上都不叫差异。那次翻车之后我重写了标题实验模块,把它从"发两个标题看看谁高"改成了有实验语义、有调度约束、有统计门槛的三段式流水线。这篇就把这套实现完整拆开,代码可以直接跑。

2026-10-26 09:29:19 126

原创 无人值守AI内容矩阵实战(8):标题实验怎么判胜?隔日补 B 变体 + 最小样本门槛的工程实现

上周二凌晨一点半,我盯着后台两张表发呆:同一篇稿子,A 标题拿了 173 阅读,B 标题只有 170。差 3 个阅读,我的判胜脚本却已经把它标成winner=A,还顺手把"实战干货式标题在 优快云 胜出"写进了洞察库。第二天复盘时我才反应过来——这个结论是拿噪声当信号,3 个阅读的差距在任何一个平台上都不叫差异。那次翻车之后我重写了标题实验模块,把它从"发两个标题看看谁高"改成了有实验语义、有调度约束、有统计门槛的三段式流水线。这篇就把这套实现完整拆开,代码可以直接跑。

2026-10-26 09:25:52 183

原创 无人值守AI内容矩阵实战(8):标题 A/B 实验落地——隔日补 B 变体与自动判胜的完整实现

上周二凌晨一点半,我盯着后台两张表发呆:同一篇稿子,A 标题拿了 173 阅读,B 标题只有 170。差 3 个阅读,我的判胜脚本却已经把它标成winner=A,还顺手把"实战干货式标题在 优快云 胜出"写进了洞察库。第二天复盘时我才反应过来——这个结论是拿噪声当信号,3 个阅读的差距在任何一个平台上都不叫差异。那次翻车之后我重写了标题实验模块,把它从"发两个标题看看谁高"改成了有实验语义、有调度约束、有统计门槛的三段式流水线。这篇就把这套实现完整拆开,代码可以直接跑。

2026-10-26 09:08:08 387

原创 Playwright 自动发文踩坑实录:优快云 编辑器竞态、头条号索引延迟怎么破

上周三早上七点,我照例打开后台看昨天的产出,优快云 那篇《SSE 还是 WebSocket》的正文第一行赫然是:欢迎使用 Markdown 编辑器我自己的正文被挤到了第二行,标题下面还多出一段我从来没写过的"本编辑器支持 Markdown 语法……"。那一下我脑子是空的:脚本明明返回了 ok: true,URL 也拿到了,为什么线上是这个鬼样子?后来我把最近四篇存量文章挨个打开体检,发现有三篇被同一个模板污染了,其中一篇的模板残留甚至塞在代码块中间,把一段 Python 示例直接劈成两半。

2026-10-22 09:16:14 828

原创 无人值守AI内容矩阵实战(7):Playwright 发布器避坑——编辑器竞态、索引延迟与风控

上周三早上七点,我照例打开后台看昨天的产出,优快云 那篇《SSE 还是 WebSocket》的正文第一行赫然是:欢迎使用 Markdown 编辑器我自己的正文被挤到了第二行,标题下面还多出一段我从来没写过的"本编辑器支持 Markdown 语法……"。那一下我脑子是空的:脚本明明返回了 ok: true,URL 也拿到了,为什么线上是这个鬼样子?后来我把最近四篇存量文章挨个打开体检,发现有三篇被同一个模板污染了,其中一篇的模板残留甚至塞在代码块中间,把一段 Python 示例直接劈成两半。

2026-10-22 09:12:48 306

原创 无人值守AI内容矩阵实战(7):Playwright 发布器避坑——编辑器竞态、索引延迟与风控

上周三早上七点,我照例打开后台看昨天的产出,优快云 那篇《SSE 还是 WebSocket》的正文第一行赫然是:欢迎使用 Markdown 编辑器我自己的正文被挤到了第二行,标题下面还多出一段我从来没写过的"本编辑器支持 Markdown 语法……"。那一下我脑子是空的:脚本明明返回了 ok: true,URL 也拿到了,为什么线上是这个鬼样子?后来我把最近四篇存量文章挨个打开体检,发现有三篇被同一个模板污染了,其中一篇的模板残留甚至塞在代码块中间,把一段 Python 示例直接劈成两半。

2026-10-22 09:09:46 162

原创 无人值守AI内容矩阵实战(7):Playwright 发布器 4 个校验拦住 4 篇脏稿

上周三凌晨一点半,我盯着屏幕上一个刚"发布成功"的 优快云 草稿,正文第一行赫然写着:欢迎使用 Markdown 编辑器那是我自己写的一篇 4000 字的 FastAPI 教程,标题、代码块、配图全在,就是在最前面多了一段模板文案。而我的发布器返回的是ok: true。这篇文章就是讲这件事的:用 Playwright 往三个内容平台自动发文章,每家平台都有自己的坑,而我踩进去的每一个坑,最后都变成了代码里的一段防御逻辑。

2026-10-21 09:13:08 159

原创 无人值守AI内容矩阵实战(7):Playwright 三平台发布器,我踩过的那些编辑器与竞态坑

上周三凌晨一点半,我盯着屏幕上一个刚"发布成功"的 优快云 草稿,正文第一行赫然写着:欢迎使用 Markdown 编辑器那是我自己写的一篇 4000 字的 FastAPI 教程,标题、代码块、配图全在,就是在最前面多了一段模板文案。而我的发布器返回的是ok: true。这篇文章就是讲这件事的:用 Playwright 往三个内容平台自动发文章,每家平台都有自己的坑,而我踩进去的每一个坑,最后都变成了代码里的一段防御逻辑。

2026-10-21 09:09:39 146

原创 无人值守AI内容矩阵实战(7):Playwright 三平台发布器,我踩过的那些编辑器与竞态坑

上周三凌晨一点半,我盯着屏幕上一个刚"发布成功"的 优快云 草稿,正文第一行赫然写着:欢迎使用 Markdown 编辑器那是我自己写的一篇 4000 字的 FastAPI 教程,标题、代码块、配图全在,就是在最前面多了一段模板文案。而我的发布器返回的是ok: true。这篇文章就是讲这件事的:用 Playwright 往三个内容平台自动发文章,每家平台都有自己的坑,而我踩进去的每一个坑,最后都变成了代码里的一段防御逻辑。

2026-10-21 09:06:38 173

原创 无人值守AI内容矩阵实战(7):为什么我的发布器总撞上“欢迎使用 Markdown 编辑器“?

上周我把自动发布器从"发完就跑"升级成"发完还要体检",结果第一晚就翻车了。。优快云 编辑器新建文章时会预填一段"欢迎使用 Markdown 编辑器"的模板,我的脚本固定等到元素出现就直接往里填内容,可编辑器是先渲染空白页、再异步把模板塞进来的——我填的内容被模板覆盖,或者模板残留在了正文开头。这就是典型的竞态:元素存在 ≠ 内容就绪。

2026-10-20 09:12:59 80

原创 无人值守AI内容矩阵实战(6):rc=0 不等于送达——我排查 IM 长消息被静默吞掉的 5 个步骤

早上 8 点,我打开后台一看,调度台账里那条补发任务是绿的,日志显示消息发送函数被调用了,进程退出码是 0。可用户那边,微信/飞书一条消息都没收到。

2026-10-19 09:04:56 69

原创 无人值守AI内容矩阵实战(5):告警响了之后,我的 Agent 是怎么自己把文章补发出去的?

上一篇文章我讲了看门狗——它负责盯着台账,一发现哪个平台缺了当天的文章就立刻告警。但写完之后我盯着那个「🚨 需人工」的通知看了半天,越想越不对劲:告警只是把问题抛回给我,我依然得半夜爬起来补文章,那这套自动化到底自动在哪?所以我决定把闭环再往前推一步:告警只是兜底,真正的自动化是让系统自己补救。这篇就聊聊我做的「自动补发」——从告警到自救的完整实现。

2026-10-16 09:01:29 226

原创 无人值守AI内容矩阵实战(5):自动补发闭环——从「告警」到「自救」的完整实现

上一篇文章里,我讲了自己怎么给发布流水线加了一道「看门狗」——它盯着台账,一旦发现某个平台当天没发文章,就立刻弹出一条告警。当时我觉得这已经很不错了:问题至少能被人看见。但用了两天我就发现,告警本身有个尴尬的地方——它只是把问题抛给我,然后等我动手。半夜 3 点缺了一篇,告警在飞书里躺着,我 7 点才看到,等于这 4 个小时白丢了。这哪是什么自动化,分明是「把活儿从 Agent 手里又推回给了人」。

2026-10-15 09:04:51 168

原创 无人值守AI内容矩阵实战(4):连续 3 天静默零产出没人发现,看门狗怎么救了我?

那次真实事故里,看门狗上线后第二天就抓住了一次缺稿:头条号那篇因为登录态过期没发出去,看门狗 9 点整把告警推到了群里。这事最可怕的不是「挂了」,而是「挂了 3 天没人知道」。台账存的是 UTC 时间,我这边是东八区,所以核对前先把「今日」换算成 UTC 再查——这一步不做好,跨时区核对会永远对不上。我加了一个独立的「看门狗」组件,逻辑极简单:每天固定时间点,去核对台账里「当天应该产出但还没登记」的条目。如果是「延迟复查」,等晚上或第二天才发现缺稿,补发窗口早就过了,阅读量黄金期也浪费了。

2026-10-14 09:03:08 114

原创 无人值守AI内容矩阵实战(3):重试风暴——同标题 5 连发事故,我用一道幂等闸拦住

发布这种慢操作,60 秒根本不够——平台接口慢的时候,光上传一张图都可能超过这个数。我把工具超时统一从 60s 提到 180s,给慢接口留足余量。我的流水线里,Agent 调用"发布文章"这个工具时,云端侧设置了一个 60 秒的超时。那天早上我照例打开后台,准备把昨晚自动发布的几篇稿子登记绩效。结果拉列表一看,差点没把咖啡喷到键盘上——“发布未执行,严禁登记。线上已存在同标题文章,请换一个全新标题重新撰写后重发。“该标题已发布过,跳过重复发布,返回已有文章 URL”,发布时间间隔都在几十秒到两三分钟之间。

2026-10-13 09:02:35 171

原创 FastAPI 与 AI Agent 结合:给 Agent 工具调用加上重试与退避的完整实现

上个月我把一个自动查工单的 Agent 接到 FastAPI 服务里,一开始工具调用经常因为第三方接口抖动直接卡死整个流程。后来我给所有工具调用加了一套「超时 + 重试 + 指数退避」的机制,任务完成率从 60% 拉到 90%。这篇把完整实现写出来,都是能直接复制的代码。

2026-10-12 15:58:24 201

原创 AI Agent 工程化落地:6 个让多步任务稳定跑通的实战技巧

上个月我接到一个内部需求,要做一个能自动查工单、汇总状态、再回复到业务群里的 Agent。一开始我天真地以为就是调几个大模型接口的事,结果真正跑了一周才发现,Demo 能跑和线上能扛是两码事。这篇把我踩过的坑和最终稳定的工程化做法整理出来,都是能直接落到代码里的细节。

2026-10-12 15:50:24 92

原创 无人值守AI内容矩阵实战(2):Agent 明明说“已发布“,后台却一篇都没有?

接手无人值守内容矩阵的第一周,我差点被自己的 Agent 骗过去。那天早上我照常打开后台准备看前一天的发布数据,结果发现。可日志里明明写着"发布成功"“已登记”“已写入”——Agent 在汇报里把每一步都说得有鼻子有眼,连假 URL 都编得像模像样。这不是网络问题,也不是平台抽风。。

2026-10-10 09:01:41 176

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除