AREXOpen in interactive Feed

AREX Feed Article

@ClaudeDevs 发布 Managed Agents 自动化指南:一条命令搭建按计划读 Slack 和 GitHub 的 agent

October 9, 2026

北京时间 10 月 9 日 6 时 15 分,Claude 开发者账号 @ClaudeDevs(简介为「Official updates for developers building with @ClaudeAI」)发布,介绍如何用 Claude Managed Agents(beta)构建自动化,并附上 claude.dev 博客的指南链接。帖文给出的要点有三个:部署一个按计划读取 Slack 与 GitHub、带凭证与记忆并发布更新的 agent;搭建只需要在 Claude Code 里执行一条命令;运行时可以使用 Max 与 Team 订阅新增的 API 额度。

指南题为(构建有效的 agent 自动化),副题写明这是一次参考实现走查,覆盖常见失败模式,由 Lance Martin 和 CJ Avilla 署名,10 月 8 日发布。它提供的参考实现叫 daily-brief:每个工作日早上向一个 Slack 频道发一条简短简报,使用者可以按步骤自己配置,也可以让 Claude Code 里的 skill 完成配置。

八个文件与一条命令

指南提供的文件都是描述 Claude API 资源的配置:agent.md 记录模型、工具与指令;deployment.md 记录调度、时区、预算和每次运行的首条消息;environment.yaml 是网络白名单;memory_store_preferences.yaml 与 memory_store_state.yaml 分别对应使用者偏好和 agent 状态;vault.yaml 声明存放凭证的 vault(保管库);claude-lock.json 记录资源 ID;slack/manifest.yaml 用于创建一个 Slack bot app。

ant CLI 里的 ant apply 读取这些文件,在 Claude API 工作区创建资源,并把 ID 记录进 claude-lock.json。指南称,配置完成后,自动化按计划运行在 Anthropic 的基础设施上,本机不需要保持任何进程。参考实现的代码链接也附在指南里,指向 GitHub 的 claude-quickstarts 仓库。

更快的路径在 Claude Code:先运行 claude update,再执行

/claude-api managed-agents-onboard https://claude.dev/blog/building-effective-agent-automations/

指南说,claude-api skill 会读这篇文章、给出方案、把文件写进项目的 agents/ 目录,并用 ant apply 创建资源。动手前要准备两样东西:从 manifest 创建的 Slack app,和一个 GitHub token(访问令牌)。

模板把自动化拆成六个组件:Sources、Destination、Agent、Schedule、Memory、Guardrails。示例 agent 用 claude-sonnet-5-5 模型;调度是 cron 表达式「32 7 * * 1-5」,配合 America/New_York 时区,即每个工作日纽约时间 7 时 32 分运行一次;不必等调度触发,也可以用 ant beta:deployments run --deployment-id <id> 手动试跑。指南说模板只是起点,来源、目的地、记忆偏好都可以按需修改。

凭证留在 vault,读取从书签继续

在 Managed Agents 中,凭证存放在 vault 里:agent 可以引用,真实值留在跑代码的沙箱之外。两条来源路径的接法不同:GitHub 通过 MCP 代理调用,代理在沙箱外找到 URL 匹配的 vault 凭证;Slack 由沙箱里的 bash 工具用 curl 调用,沙箱里只有一个占位符 $SLACK_BOT_TOKEN,请求离开沙箱时平台才为白名单主机换上真 token。Anthropic 今年 4 月的一篇工程文章介绍过这项设计的出发点:Managed Agents 把 session(事件日志)、harness(调用 Claude 并路由工具调用的循环)与 sandbox(执行环境)拆成可独立替换的接口,并把「token 无法从 Claude 生成代码所在的沙箱触及」作为结构性修复。

关于读取起点,指南不建议让 agent 用「最近 24 小时」这类固定时间窗:跑晚了会留缺口,跑早了会重复。模板改为给每个来源记一个书签。每次运行结束时,把从每个来源读到的最新条目的时间戳写进 bookmarks.json,例如 "slack": "2026-09-14T13:02:11Z";下一次运行从书签出发,读取窗口自动伸缩。书签放在名为 state 的记忆库里:一个文本文件夹,平台把它挂载到每次运行的沙箱 /mnt/memory/ 下,并在运行之间保留。

指南还点出一种容易被误读成「今天很安静」的失败:MCP 服务器宕机或 token 过期时,运行照常开始,只是少了那组工具,agent 看不到该来源的任何内容,于是报告「没有新东西」。agent.md 里的三条规则要求:来源失败时书签原地不动、用其他来源继续写、在简报结尾用一行注明读不到什么(比如「本次无法读取 pull requests」)。

「已发送」以 Slack 确认为准

在模板里,简报由 agent 在沙箱里用 bash 工具发到 Slack,用的是读消息的同一个 bot token;内置 bash 工具默认不请求审批,slack.com 又在环境白名单里,所以没有任何一步需要人来批准。记录和实际发出的帖子可能对不上,指南点出两种失败情形:记了一个实际没发出去的帖子,书签继续前进,那批条目就永远不会再被报;不确定发没发而重发,读者会收到两份一样的简报。

三条规则对应这两种情形:先查频道近期消息里有没有今天的标题,已经发过就不再发;只有 Slack 返回 "ok": true 和消息 ts(时间戳),帖子才计为已发送;账本和书签只在确认后更新。结果不明时,这次运行被标为「maybe posted」,其他状态一概不动,以免丢东西。agent 会在记忆库里留一份运行记录(runs/.md):发帖前标「posting」,之后标「posted」加消息 ID,或标「maybe posted」。

回复区里,@shahidcodes 称自己读了 agent.md,并指出了一个边界情况:第二步会载入上次运行记录,但记录停在「maybe posted」时该怎么做没有写明。如果周二的简报实际发出、账本和书签却没有移动,周三就可能把同一批条目再报一遍;他认为,先检查周二简报的标题是否已经存在,就能解决这个问题。

记忆拆成 preferences 和 state 两本账

每次运行都从一个全新沙箱开始,没有上一次的记忆;但没有记忆,反馈就留不下来;而过期的记忆又会误导 agent:把已经解决的条目继续报成「还在等」,或因为「已报告」而丢掉仍打开的事项。模板因此维护两个记忆库:preferences 由使用者写、agent 只读,内容包括读哪些频道和仓库、哪些内容不要、长度上限、发到哪里、什么时候停;state 由 agent 读写,装着每个来源的书签、已报告条目的账本(ledger.md)、每次运行的记录、对偏好的修改建议,以及来源行为笔记(例如「只返回最新的 50 条」)。

偏好不写死在 prompt(提示词)里,而是每次运行开始时重新读;读不到就停下说明,而不是用默认值硬跑。ant apply deployment.md 会创建 preferences 记忆库,但不会写里面的文件,第一次运行前要用仓库里的 scripts/seed-preferences.sh 写入 preferences.md。

账本 ledger.md 记录每条已报告的条目和它的最新状态,避免简报重复自己。每行包括报告日期、来源、一个不变的 ID(Slack 消息时间戳或 pull request 编号)和状态:

text
2026-09-09 slack:C0123456789 1788963600.000100 refund thread: customer waiting on a decision2026-09-11 github 481 review blocked, day 2 (still waiting)

只读的边界与每次运行的花钱上限

自动化在后台按计划跑,指南在「能做什么」和「能花多少」两侧都设了限制。在权限上,GitHub token 和 preferences 库只读,环境只能访问白名单里的主机。指南提醒,agent 读到的是别人写的消息和 issue,文本可以被理解为指令,植入的指令仍可能改变简报内容,包括通过 agent 自己保存的笔记,但它写不了 GitHub,也改不了偏好库里的规则。Slack 是例外,同一个 token 既能读也能发,所以只把 bot 邀请到确实需要读或写的频道。

花费上的限制是运行预算:从正常一次运行成本的 3~5 倍起步,看到真实数字之后再收紧;跑到上限的运行会暂停而不是失败(停止原因是 budget_reached),所以上限设得太低,表现就像简报突然安静了。deployment.md 里的示例把单次上限写成:

yaml
budget:  type: limit  max_list_cost:    amount: "500" # a string, in cents: "500" is $5.00  currency: USD

新额度的覆盖范围与回复区里的追问

帖文里的「新的 API 额度」来自更早的一条公告:在这条指南帖发布前数小时,@ClaudeDevs 宣布 Max 与 Team 的月度 API 额度上线,Max 5x 每月 $100,Max 20x 每月 $200,Team 按席位 $20(Standard)或 $100(Premium)、池化上限 $500。 帮助中心把边界写得更细:额度可用于 Claude Platform 上任何可用的模型,覆盖 Claude API、Console 里的 Playground、Claude Managed Agents 和 Claude Agent SDK;不覆盖终端、IDE、桌面端或网页里的交互式 Claude Code,也不适用于 Amazon Bedrock、Google Cloud Vertex AI 或 Microsoft Foundry 上的使用;额度不结转,用完即停,除非另购额度或开启自动充值;领取要把套餐绑定到一个 Claude Console 组织,新订阅者需在符合条件的套餐上满 7 天。

回复区里,@KinzFin 问的正是这条线是否接得上:月度额度是覆盖 managed agent 的运行,还是只覆盖常规 API 调用。按帮助中心的口径,Claude Managed Agents 在覆盖清单里。 @SiEdgeGeek 的看法是,额度才是这里更重要的东西:「过去要单独开一个 API 账单,这让很多人没法运行按计划执行的 agent。」

对准备上手的人,@catmanyau 给出了更保守的顺序:先用只读的 Slack/GitHub 摘要跑定时演练,等信任摘要之后再放开写权限,并把凭证限定在真正需要的频道和仓库。

此外还有几条回复聚焦无人值守运行的细节:@aiSignalDrift 问单次运行能不能设一个最大范围,还是一直是全组织级、直到手动停掉;@truevined 想要每次运行的幂等键,防止重试把同一条更新发两遍;@JoeTrevino0 关心的是记忆在几周之后如何修剪。

参考链接

/claude-api managed-agents-onboard https://claude.dev/blog/building-effective-agent-automations/
2026-09-09 slack:C0123456789 1788963600.000100 refund thread: customer waiting on a decision2026-09-11 github 481 review blocked, day 2 (still waiting)
budget:  type: limit  max_list_cost:    amount: "500" # a string, in cents: "500" is $5.00  currency: USD