关于 long-term-campaigns
long-term-campaigns 是用于让 Agent 持续执行长期观察任务的技能,面向需要跨会话保留状态和证据的工作。它规定独立任务目录、依赖预检、不可变快照与明确的阻塞和完成条件。
主要功能
- 01按目标隔离活动目录
- 02规定活动文档与状态文件
- 03运行前检查工具和凭据
- 04保存快照并比较基线
- 05定义升级、阻塞与完成规则
适用场景
- 01跨多个 Agent 会话持续监测发布
- 02按固定流程收集并比较证据
- 03凭据失效时阻止活动继续运行
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ ikatkov/ agent-skills --skill long-term-campaigns安装后在 Claude Code 中输入/long-term-campaigns确认已加载。
附带文件agents/openai.yaml
详细介绍
长期 Campaign
将 /Users/igor/work/long-term-campaigns 视为持久可信来源。Agent 会话、工作区和 VM 都是围绕它运行的一次性工作进程。
Campaign 隔离
- 每个新目标都创建一个新的子文件夹:
<ticket-or-system>-<short-slug>。 - 只有当新请求延续相同目标且完成标准不变时,才复用文件夹。
- 绝不要将 Campaign 状态直接放在根目录中,也不要混合无关的 Campaign。
- 创建文件夹前先检查现有子文件夹。不要修改同级的其他 Campaign。
从 Agent 会话访问
- 在本地 Conductor 工作区中,直接读取和更新该文件夹。
- 在云端工作区中,使用 Conductor 的 Mac 命令桥接。说明持久文件仅存在于用户的 Mac 上。
- 绝不要将凭据、令牌、Cookie 或原始密钥复制到 Campaign 文件夹、提示词、快照、日志或报告中。
必需工具与凭据策略
- 将 Campaign 运行手册声明为必需的所有工具、连接器、CLI 会话、凭据和权限,都视为每次计划运行时必须可用。
- 收集证据或执行 Campaign 操作前,预检所有必需依赖项。如果名义上的登录状态可能已过期,就实际测试访问路径;例如,发出无害的经过身份验证的 GCP 请求,而不是仅凭
gcloud auth list显示了账户就认定可用。 - 如果任何必需预检失败、过期或无法以非交互方式续期,立即停止该 Campaign 运行。不要使用不完整的采集器继续运行,不要悄悄减少数据源,也不要将缺失证据解释为正常。
- 将失败的预检作为原始证据持久化,标记 Campaign 为
blocked,更新下次检查时间,释放其锁,并明确报错指出必须恢复的具体访问权限类别。绝不要记录密钥值。 - 定期过期的 CLI 会话(包括 GCP 身份验证)属于需要续期的阻碍,不是可以变通处理的预期情况。
必需的 Campaign 布局
至少创建:
<campaign>/
├── CAMPAIGN.md
├── RUNBOOK.md
├── state.json
├── logs/
├── prompts/
│ └── DAILY.md
├── reports/
└── snapshots/
CAMPAIGN.md 记录稳定约定:
- 目标及其重要性;
- 范围和明确排除项;
- 权威链接和标识符;
- 预期结果及可能的回归;
- 可观察的完成标准;
- 观察窗口、最低证据要求和过期策略;
- 无人值守 Agent 可以执行的操作。默认设为只读。
RUNBOOK.md 记录可复现的流程:
- 凭据和工具预检;
- 精确的采集命令或脚本;
- 解释规则、阈值和比较窗口;
- 如何区分未知/无数据与正常;
- 升级处理条件和恢复步骤;
- 最终报告的存放位置。
state.json 只记录当前的机器可读状态。包括 Campaign 阶段、上次成功运行时间、下次检查时间、最新不可变快照、连续失败次数、当前阻碍,以及最终报告状态。将历史记录保存在快照和报告中,不要无限扩充此文件。
prompts/DAILY.md 告知新 Agent 如何执行一个有界的观察轮次。描述能力和结果,而不是要求使用特定模型或编码客户端。
交接 Campaign
- 阅读此技能,并检查根目录中是否已有目标相同的 Campaign。
- 如果目标是新的,就创建一个新的子文件夹。
- 总结决策和已核实的事实;不要把完整聊天记录作为主要交接内容。
- 记录可用于复现每项声明所需的时间戳、环境、提交 SHA、部署边界、查询和来源链接。
- 在
state.json中写明当前确切阶段和下一步操作。 - 将可复用的确定性采集写入脚本。将 Agent 的判断留在每日提示词和报告中。
- 明确调度器何时应停止。没有结束条件的周期性 Campaign 并不完整。
- 验证仅凭 Campaign 文件夹,新 Agent 就能继续工作,而无需询问之前发生了什么。
运行每日观察
- 获取每个活动的锁,避免两个运行同时更新状态。
- 在收集数据前,预先检查所有必需的工具、凭据、连接器和权限,包括针对可刷新的 CLI 会话发送无害的身份验证请求。
- 如果任何预检查失败,遵循必需的工具和凭据策略:持久化记录阻碍因素,停止运行,并明确报告失败。
- 以确定的方式收集证据,并写入新的带日期且不可变的快照。
- 对照声明的基线、发布边界、预期和先前快照进行比较。
- 以原子方式更新
state.json,仅在证据或阶段发生实质变化时才撰写简短的每日报告。 - 如果护栏被突破,则连同证据和首个失败边界一起升级处理。除非
CAMPAIGN.md明确授权,否则不要修改生产环境或外部系统。
每次运行优先启动一个新的 Agent。持久化文件承载连续性;聊天记忆不能。
完成活动
- 仅当满足可观察的完成标准和最低证据窗口后,才将其标记为完成。
- 撰写最终报告,说明发生了哪些变化、证据能证明什么、无法证明什么、样本量、检查过的回归,以及任何待处理的负责人/操作。
- 禁用其计划任务,同时保留文件夹和不可变证据。
- 如果证据不足,应明确延长活动,而不是在没有数据的情况下报告成功或失败。
评论
支持 Markdown