1. Skills 技术解析:从概念到实战
Skills 本质上是一种将复杂工作流程封装成标准化、可复用组件的技术方案。它不同于简单的 Prompt 模板,而是包含完整逻辑判断、操作流程和资源调用的能力包。我们可以将其理解为 AI 领域的"宏指令"或"自动化脚本"。
1.1 核心架构设计
Skills 采用模块化设计理念,主要由以下要素构成:
- 元数据描述:YAML 格式的头部声明,定义技能名称、触发条件和功能描述
- 操作手册:Markdown 格式的详细步骤说明,包含条件判断和流程控制
- 扩展资源:可选的外部脚本、模板文件等增强组件
这种设计实现了关注点分离:
bash复制skill-folder/
├── SKILL.md # 核心逻辑文档
├── scripts/ # 可执行脚本
└── templates/ # 输出模板
1.2 工作原理剖析
当用户发出指令时,Antigravity 会执行以下决策流程:
- 扫描所有可用 Skills 的 description 字段
- 通过语义匹配确定是否需要触发某个 Skill
- 按需加载该 Skill 的详细操作指南
- 逐步执行文档定义的步骤流程
- 必要时调用外部资源完成复杂操作
关键机制:Skills 采用懒加载策略,只有匹配的 Skill 内容才会占用上下文窗口,这解决了大模型 token 限制的痛点。
2. 开发规范与最佳实践
2.1 文件结构标准
官方推荐两种存储位置:
- 工作区技能:
.agent/skills/目录下,适用于项目特定流程 - 全局技能:
~/.gemini/antigravity/skills/目录下,适用于通用工具链
建议的命名规范:
- 文件夹使用 kebab-case 命名(如
auto-test) - 主文档必须命名为
SKILL.md - 脚本文件存放在
scripts/子目录
2.2 YAML 头部的编写技巧
description 字段是技能触发的关键,应包含三个要素:
- 适用场景(when)
- 核心功能(what)
- 预期效果(how)
优秀示例:
yaml复制description: 当用户需要部署到测试环境时使用。自动运行单元测试、构建Docker镜像并推送到Registry。
常见错误:
- 描述过于宽泛(如"用于代码处理")
- 缺少触发条件说明
- 效果描述不具体
2.3 操作手册编写指南
操作步骤需要遵循 SMART 原则:
- Specific:明确具体的操作命令
- Measurable:包含可验证的标准
- Achievable:确保步骤可执行
- Relevant:与目标强相关
- Time-bound:定义超时处理
示例步骤:
markdown复制## 3. 镜像推送
1. 执行 `docker login registry.example.com`
2. 构建标签:`docker build -t ${timestamp} .`
3. 验证镜像大小不超过 500MB
4. 若超时 2 分钟未完成,中止并报告错误
3. 实战:构建智能提交系统
3.1 smart-commit 完整实现
创建目录结构:
bash复制mkdir -p .agent/skills/smart-commit/scripts
touch .agent/skills/smart-commit/SKILL.md
SKILL.md 内容:
markdown复制---
name: smart-commit
description: 当用户请求提交代码时自动执行。包括变更检查、规范验证和消息生成。
---
# 智能提交流程
## 1. 变更分析
1. 运行 `git status --porcelain` 获取变更列表
2. 识别新增/修改的文件类型(前端/后端/配置)
## 2. 规范校验
1. 执行 `npx commitlint --from HEAD~1`
2. 若校验失败:
- 运行 `npm run fix` 尝试自动修复
- 无法修复时列出具体违规项
## 3. 消息生成
根据变更类型选择前缀:
- feat: 新增功能
- fix: 问题修复
- chore: 工具变更
- docs: 文档更新
示例输出:
`git commit -m "feat(client): 新增用户登录界面"`
3.2 增强版实现方案
添加预提交检查脚本 scripts/pre-check.sh:
bash复制#!/bin/bash
# 检查代码风格
npm run lint || exit 1
# 检查敏感信息
git grep -l 'API_KEY' && echo "发现敏感信息" && exit 1
更新 SKILL.md 引用脚本:
markdown复制## 2.1 安全检查
运行 `bash scripts/pre-check.sh`,任何错误都终止流程
4. 高级应用场景
4.1 多技能协作模式
通过技能组合实现复杂流程:
code-review技能:静态分析代码质量auto-test技能:运行单元测试deploy-stage技能:部署到测试环境
创建协调技能 full-pipeline:
yaml复制description: 当用户说"完整流程"时,依次执行代码审查、测试和部署。
4.2 动态参数传递
支持运行时变量注入:
markdown复制## 构建配置
根据用户指定的环境变量 ${ENV} 选择配置:
- dev: 使用轻量级构建
- prod: 启用压缩优化
调用示例:
bash复制ENV=prod ag "请构建项目"
4.3 错误处理机制
完善的异常处理方案:
markdown复制## 错误处理
1. 任何步骤失败时保存现场信息到 /tmp/error.log
2. 根据错误类型提供修复建议:
- 依赖缺失:推荐安装命令
- 配置错误:指出问题行号
3. 允许用户选择继续或中止
5. 效能优化策略
5.1 性能提升技巧
-
缓存策略:对耗时操作添加缓存检查
markdown复制## 依赖安装 先检查 node_modules/.cache 目录,未变化则跳过 npm install -
并行执行:标记可并行的步骤
markdown复制[PARALLEL] ## 代码检查 - 同时运行 ESLint 和 Stylelint -
增量处理:仅处理变更部分
markdown复制
使用 git diff --name-only HEAD~1 获取修改文件列表
5.2 可维护性建议
-
版本控制:
yaml复制version: 1.0.2 changelog: 添加TypeScript支持 -
模块化设计:
bash复制smart-commit/ ├── core.md # 主流程 ├── frontend.md # 前端规范 └── backend.md # 后端规范 -
文档注释标准:
markdown复制<!-- 注意:此步骤需要Python 3.8+环境 --> ## 数据分析
6. 企业级应用方案
6.1 团队协作规范
-
技能命名空间:
bash复制skills/ ├── team-a/ # A组专用 ├── team-b/ # B组专用 └── shared/ # 共享技能 -
审核流程:
- 新增技能需发起 Merge Request
- 至少两位核心成员批准
- 通过CI测试后才合并
-
文档标准:
- 必须包含测试用例
- 需要维护者列表
- 注明技能依赖项
6.2 安全防护措施
-
脚本沙箱化:
markdown复制## 执行限制 所有脚本在容器内运行,超时设置为30秒 -
权限控制:
yaml复制required_permissions: - network_access: false - file_write: /tmp -
敏感信息处理:
markdown复制禁止技能读取以下文件: - *.env - *.key - config/secret/*
7. 调试与问题排查
7.1 常见错误代码
| 错误现象 | 可能原因 | 解决方案 |
|---|---|---|
| 技能未触发 | description 不匹配 | 优化描述关键词 |
| 步骤中断 | 权限不足 | 检查脚本可执行权限 |
| 输出混乱 | 缺少格式控制 | 添加输出模板 |
7.2 日志分析技巧
-
查看详细执行日志:
bash复制
ag --log-level debug > agent.log -
关键信息定位:
- 搜索
[SKILL]查找技能触发记录 - 关注
EXEC:开头的命令执行记录
- 搜索
-
性能分析:
bash复制grep 'Time elapsed' agent.log | sort -n
8. 技能生态建设
8.1 技能市场构想
-
分发平台功能:
- 技能评分系统
- 使用量统计
- 兼容性标识
-
打包标准:
bash复制skill-pack/ ├── skill.yaml # 元数据 ├── README.md # 使用说明 └── demo.gif # 效果演示 -
依赖管理:
yaml复制dependencies: - git: ^2.0 - node: >=16.0
8.2 技能开发工具链
-
本地测试工具:
bash复制ag-test skill-name "测试指令" -
模版生成器:
bash复制
ag-new skill --template=typescript -
验证套件:
bash复制
ag-validate skill-folder/
9. 未来演进方向
-
可视化编辑器:
- 拖拽式流程设计
- 实时预览效果
- 自动生成文档
-
智能推荐系统:
- 根据工作习惯推荐技能
- 自动组合常用技能序列
- 异常操作预警
-
跨平台支持:
- 导出为OpenAPI规范
- 兼容其他AI平台
- 移动端适配
10. 个人经验分享
在实际开发中,我发现这些策略特别有效:
-
渐进式开发:先实现核心流程,再逐步添加异常处理等增强功能。比如首次实现 smart-commit 时,我先确保能生成合规的提交信息,后续再添加代码检查等特性。
-
模式抽象:将重复操作抽象成可复用模式。例如多个技能都需要文件操作时,可以创建
file-utils.sh公共脚本库。 -
版本控制:对技能目录也进行 git 管理,方便回滚和协作。建议每个技能独立分支开发。
-
性能监控:在关键技能中添加执行耗时统计,定期优化慢速步骤。我曾通过缓存机制将部署技能的运行时间从3分钟缩短到40秒。
-
用户反馈:为技能添加
--feedback选项,收集实际使用数据改进设计。根据团队反馈,我优化了错误消息的可读性。