跳到正文

极客杰尼 ·

这个周末我让 Agent 干了五件事,踩了三个坑

修 cron 时区、生成信息卡、翻译上下文工程文章、更新网站项目页。每个坑都是真实的工作流,记录一下。

本文目录
  1. cron 任务没按时跑,原因很蠢
  2. 微信推送报了一个我没见过的错
  3. 跑通了一条信息卡工作流
  4. 翻译了一篇上下文工程的文章
  5. 更新了个人网站的项目页
  6. 复盘一下

大家好,我是极客杰尼。

这个周末没做什么大事,但从早到晚一直在跟 Agent 协作干活。修了一个 cron 时区 bug,跑通了一条信息卡工作流,翻译了一篇 1.6 万字的技术文章,更新了个人网站的项目页。

每件事都踩了坑,每个坑都是一个要记住的知识点。

今天就聊聊这个。


cron 任务没按时跑,原因很蠢

周六早上起来,发现 AI Builder Daily 的定时推送没在预期时间执行。

查了一下,原因特别低级:cron 表达式写的是 UTC 时间,不是上海时间。

我之前配的时候直接写了 0 10 * * *,以为系统会自动识别时区。它不会。老老实实按 UTC 跑了,等于上海时间下午六点才执行。

改起来倒也简单,UTC+8 反算:

  • 上海 10:00 = UTC 02:00,写成 0 2 * * *
  • 上海 10:30 = UTC 02:30,写成 30 2 * * *

手动触发了一次验证,数据拉取正常,1.8 秒出结果,1559 字符。到这一步都没问题。

推送到微信的时候,又出事了。


微信推送报了一个我没见过的错

手动触发之后,微信端报了这么个错:

Timeout context manager should be used inside a task

翻了一圈日志,定位到原因:Hermes 网关层的 asyncio bug。cron 任务的交付跑在一个不是标准 asyncio task 的上下文里,Python 3.11+ 的 asyncio.timeout() 直接炸了。

数据拉取很快,不是性能问题。同样 3000 多字符的另一个定时任务能正常推送,也不是内容长度的问题。就是微信 SDK 那一层的 asyncio 上下文不对。

临时解法:把生成的信息卡图片上传到 jieni.ai 的 public 目录,通过 URL 分享。 不优雅,但能用。这个 bug 还没修,记在这里,后面再处理。


跑通了一条信息卡工作流

这个周末试得最多的是一套三步组合:

  1. Get笔记 CLI 拉笔记内容
  2. claude-design-card 生成 HTML 信息卡
  3. Playwright 截图为 PNG

操作本身不复杂。拉笔记用 getnote note ID -o json,生成卡片选了 The Feature 格式,杂志深掘风格,暗色头部加不对称双栏。截出来的卡 760 乘 1441 像素,在微信里看着还行。

踩了一个半小时的坑:字体路径必须用 file:// 绝对 URL,不然 Playwright 截图时字体加载不上,出来全是默认字体。

还有一个发现。飞书发图片的正确方式不是用 send_message 工具,而是直接在回复里写 MEDIA:/path/to/image.png,网关会自动识别并发送。之前一直用工具发,各种超时报错。换成这个写法就好了。


翻译了一篇上下文工程的文章

Nav Toor 在 X 上发了一篇文章,叫「Context Engineering Playbook: 15 Copy-Paste Templates」,讲怎么用 15 个模板让 AI 输出质量提升 10 倍。

内容很扎实,不是那种「提示词工程 101」的水文。有具体的模板,有「为什么有效」的解释,有层级结构。

我用 jina-cli 抓了原文,花了大概 20 分钟翻译成中文,放到了 jieni.ai 的文档区,路径是 /docs/prompt-guides/context-engineering-playbook

翻译过程中的几个判断:

  • 模板的方括号占位符保留原样,因为那是用户自己填的
  • Karpathy 说的「LLM 是 CPU,上下文窗口是内存」这个比喻原样保留,加粗处理
  • LangChain、Anthropic 这些专有名词不翻
  • 每个「为什么有效」的小节调整了语序,让它读起来像中文,不是翻译腔

又踩了一个坑:docs 和 blog 的 i18n 规则不同。 Blog 需要中英双版文件(.mdx.zh.mdx),但 docs 的 fumadocs 不认 .zh.mdx 后缀,会报 duplicated slug 错误。折腾了一圈才发现,docs 只需要一个文件就行。这个写进了 skill,下次不会再犯。


更新了个人网站的项目页

两件事。

md2wechat 移到第一位。 之前它在项目列表排第五,但它现在 GitHub 1.6k star,是我最成熟的产品。描述也更新了:用 Markdown 写公众号文章,一键转换为精美排版并自动上传到微信草稿箱,支持 AI 多主题样式和批量发布。

新增了 claude-design-card。 这是最近在用的技能,把任意文本生成 Anthropic 设计风格的信息卡。加到了项目列表第二位。

改的是 src/config/identity.ts 里的 skills 数组,projects 页面直接从这个数组渲染。改完跑 pnpm lintpnpm build,确认没有重复 slug,推上线。


复盘一下

这个周末干的活都不大,但每一件都是真实的 Agent 工作流。

几个体会:

  1. Agent 工作流不是一次跑通的,是踩坑踩出来的。 每个坑要么记住,要么写成规则。
  2. 「能用」和「好用」之间差的是细节。 字体路径用绝对 URL、飞书发图片用 gateway 回复、docs 不需要双版文件,这些都是细节,但每个细节都能卡你半小时以上。
  3. 翻译不是逐字翻,是重新组织。 调整语序、保留专有名词、让读者感觉在读中文而不是在读翻译,这个判断力是关键。

如果你也在用 Agent 做日常工作,建议:遇到坑就记下来,写成 skill 或者规则。 同一个坑踩两次,是你的问题。

下次聊聊别的。

查看原文