Agent Skill工程:如何把一次成功运行提炼成可测试的方法

Agent Skill 工程:如何把一次成功运行提炼成可测试的方法

Agent 完成一次任务后,最容易做错的事,就是立刻加个 cron。

一次成功可能依赖操作者临时补的数据、模型偶然选中的路径,或者人工在最后一步修掉的问题。把整段对话复制到定时任务里,只是在自动重放偶然性。

SpaceXAI 的 Grok Bot 文档给出了更稳妥的顺序:先完成一次任务,让方法可靠,保存为 Skill,测试,再创建 Routine。对开发团队而言,这可以直接翻译成一套 Skill 工程流程。

Trace 不是 Skill

一次 Agent 运行可以表示为:

ts 复制代码
type RunTrace = {
  inputs: InputSnapshot[];
  actions: ToolCall[];
  decisions: DecisionRecord[];
  outputs: Artifact[];
  validations: CheckResult[];
  interventions: HumanIntervention[];
};

Trace 是事实记录,包含成功路径、试错和人工补洞。Skill 是从多条事实中抽出的规范:哪些条件必须满足、哪些动作可以执行、什么结果算完成、遇到什么情况必须停。

ts 复制代码
type SkillSpec<I, O> = {
  id: string;
  version: string;
  applicableWhen: (ctx: Context) => boolean;
  inputSchema: Schema<I>;
  execute: (input: I, env: Env) => Promise<O>;
  validate: (output: O, evidence: Evidence[]) => CheckResult[];
  approvalPolicy: ApprovalPolicy;
  failurePolicy: FailurePolicy;
};

如果一个"Skill"只有 execute,没有 schema、validate 和 failurePolicy,它仍然只是脚本化提示词。

五步提炼流程

1. 先标注人工介入

人工改过筛选条件、补过文件、替换过错误来源,就把它们标成 intervention。未被解释的人工动作不能直接删除,否则生产运行会缺少关键步骤。

2. 把判断改写成规则

例如:

ts 复制代码
if (report.generatedAt < cutoff.minus({ hours: 24 })) {
  return fail("STALE_INPUT");
}

无法写成确定规则的判断,保留为审批点:让 Agent 给出证据、建议和影响,由人选择,而不是让模型偷偷替代业务决策。

3. 冻结输入契约

输入契约至少包括来源、字段、作用域、新鲜度和权限。长期记忆可以保存偏好,却不能替代会变化的业务事实。重要决定必须重新读取当前源系统。

4. 定义输出与证据

输出不应只有一段自然语言。建议同时返回结构化结果和证据引用:

ts 复制代码
type SkillResult<T> = {
  data: T;
  evidence: Array<{ source: string; observedAt: string }>;
  checks: CheckResult[];
  status: "complete" | "partial" | "blocked";
};

5. 先测失败,再接调度

至少覆盖:缺数据、旧数据、字段变更、权限不足、工具超时和重复触发。故障测试通过后,Routine 才负责按时间或事件启动 Skill。

回放测试不要只比较文本

生成式输出不适合做逐字快照。更稳的方式是检查不变量:

ts 复制代码
expect(result.evidence.length).toBeGreaterThan(0);
expect(result.checks.every(x => x.passed)).toBe(true);
expect(result.status).not.toBe("complete")
  .when(sourceIsMissing);

文本可以变化,但来源不能丢、必填字段不能少、缺数据时不能假装完成、高影响动作不能越过审批边界。

版本与 Routine 绑定

Routine 应固定 Skill 的明确版本:

ts 复制代码
const routine = {
  schedule: "0 8 * * 1-5",
  skill: "account-health@2.1.0",
  onMissingSource: "stop",
};

输出格式或审批语义发生破坏性变化时升主版本,并重新跑回放与故障用例。网站、连接器和数据格式变化,也应触发重新验证,不能让旧 Routine 静默继续。

一份上线前检查表

  • 输入是否来自当前权威源,并带采样时间?
  • 关键分支是否有可解释规则?
  • 输出是否有 schema 和证据?
  • 缺失、过期与权限不足是否会停止?
  • 发送、发布、删除、购买等动作是否需要审批?
  • Routine 是否固定了已验证的 Skill 版本?

Agent 的能力不会因为定时运行而自动变可靠。把成功轨迹压缩为 Skill,把 Skill 变成可回放、可验证、可版本化的契约,才是从 Demo 走向团队工程的关键一步。

Tipkay 会按岗位组合经验、流程、模型和工具;团队仍应把自己的输入契约、验证规则和关键操作确认加入每个具体流程。

相关推荐
AI日报派送佬43 分钟前
2026年10月14日AI行业日报|Gemini 4 Argon正式发布;小模型跨设备传播风险引发安全热议
网络·人工智能·openai·谷歌·deepseek·anthropic·ai日报
镜象科技2 小时前
职业院校AI心理健康解决方案怎么选?三个特殊场景与三类路线
人工智能
Leo.yuan2 小时前
企业Data Agent架构选型:帆软Dora基于NL2BI的现有BI体系复用方案
大数据·人工智能
朱涛的自习室2 小时前
70 美金的 Beyond Compare,我让 Gemini 4 和 DeepSeek 造个开源免费版(Day 2)
android·前端·人工智能
米小虾2 小时前
上下文:Agent 的眼睛里到底装着什么
人工智能·agent
米小虾3 小时前
Agent = 大脑 + 眼睛 + 手脚:一篇看懂现代 AI Agent 的骨架
人工智能
小小测试开发3 小时前
安全评测得分 0.9556 掉到 0.3257,只改了 top_k 和 prompt_style 之外的题面比例
人工智能·安全·prompt
slacker-kian3 小时前
[实践]-用LLM对文本结构化:把多段文本描述变成规范的 JSON 知识库
人工智能·llm·prompt·结构化·pydantic·one-shot 提示
品牌常新3 小时前
景区巡逻机器人怎么选?派宝S5全地形守护解析
运维·人工智能·机器人