第1课:项目概览与架构 Agency Agents

← 返回目录下一章 → 第2课

一、项目背景

Agency Agents 是 GitHub 上 125K+ stars 的开源项目,由 msitarzewski 创建。核心理念:

🎯 一句话:把不同的 AI Agent 人格打包成 Markdown 文件,让任何 AI 工具(Claude Code、Hermes、Cursor 等)都能使用专业化的 Agent 角色。

项目起源于一个 Reddit 帖子,经过数月迭代发展到 273 个 Agent 文件,支持 15 个 AI 工具平台。

二、项目目录全景

agency-agents/ ├── academic/ # 🎓 学术 (5个Agent) ├── design/ # 🎨 设计 (9个Agent) ├── engineering/ # 🖥️ 工程 (34个Agent) ← 最大技术部门 ├── finance/ # 💰 金融 (5个Agent) ├── game-development/ # 🎮 游戏开发 (5个Agent) ├── gis/ # 🗺️ GIS地理信息 (13个Agent) ├── marketing/ # 📣 营销 (36个Agent) ← 第二大部门 ├── paid-media/ # 🎯 付费媒体 (7个Agent) ├── product/ # 📦 产品 (5个Agent) ├── project-management/ # 📋 项目管理 (7个Agent) ├── sales/ # 📈 销售 (9个Agent) ├── security/ # 🔒 安全 (10个Agent) ├── spatial-computing/ # 📐 空间计算 (6个Agent) ├── specialized/ # ✨ 专项 (53个Agent) ← 最大部门 ├── support/ # 🛟 技术支持 (6个Agent) ├── testing/ # 🧪 测试 (8个Agent) ├── integrations/ # 🔌 工具集成 (15个工具) ├── scripts/ # ⚙️ 自动化脚本 (10个) ├── strategy/ # 📊 战略手册/剧本 ├── examples/ # 📝 示例 ├── divisions.json # 部门定义(元数据) ├── tools.json # 工具定义(元数据) └── README.md # 项目说明

三、Agent 文件格式

每个 Agent 是一个 Markdown 文件,结构如下:

--- name: Multi-Agent Systems Architect emoji: 🕸️ description: 多Agent系统架构设计师 color: cyan vibe: 把AI Agent团队当分布式系统来设计 --- # 🕸️ Multi-Agent Systems Architect Agent ## 🧠 Your Identity & Memory - **Role**: ...(角色定义) - **Personality**: ...(人格特征) - **Memory**: ...(记忆模式) - **Experience**: ...(经验范围) ## 🎯 Core Mission & Workflows (核心任务和工作流) ## 📋 Technical Deliverables (技术交付物) ## ✅ Success Metrics (成功指标)

前端 YAML frontmatter 定义了 Agent 的元属性,正文是完整的系统提示词。

四、16 部门分布

部门Agent 数占比特点
specialized5319%各种专项角色(最大)
marketing3613%SEO、内容营销、社媒等
engineering3412%前后端、架构、DevOps、AI
gis135%地理信息系统专项
security104%安全审计、渗透
design93%UI/UX、视觉设计
sales93%销售策略
testing83%自动化测试、QA
paid-media73%广告投放
project-management73%项目管理
support62%技术支持
spatial-computing62%空间计算/AR/VR
academic52%学术研究
finance52%财务分析
product52%产品管理
game-development52%游戏开发
总计27316 部门

五、工具支持体系

工具集成方式安装命令
Claude Code~/.claude/agents/ 目录--tool claude-code
Cursor.cursorrules 或 rules/--tool cursor
GitHub Copilot.github/copilot-instructions.md--tool copilot
Gemini CLI~/.gemini/agent-config/--tool gemini-cli
OpenCode~/.opencode/agents/--tool opencode
Codex~/.codex/agents/--tool codex
Aider.aider.conf.yml 规则--tool aider
Windsurf.windsurf/ 规则--tool windsurf
Qwen~/.qwen/agents/--tool qwen
Kimi~/.kimi/agents/--tool kimi
Osaurus~/.osaurus/skills/--tool osaurus
Hermes~/.hermes/plugins/agency-agents-router/--tool hermes
Antigravity自定义--tool antigravity
OpenClaw自定义--tool openclaw
MCP Memory通用MCP协议独立集成

六、核心架构流程

源代码(.md Agent 人格) │ ▼ convert.sh ──→ 转换为各工具格式 │ ├──→ claude-code/ (Markdown) ├──→ cursor/ (.cursorrules) ├──→ hermes/ (plugin.yaml + __init__.py + agents.json) ├──→ github-copilot/ (instructions.md) └──→ ... 其他工具 │ ▼ install.sh ──→ 安装到目标工具路径 │ │ 自动检测已安装的工具 │ 交互式选择部门/Agent │ 复制/生成对应文件 │ ▼ ✓ 使用:在你的工具中激活 Agent

七、divisions.json — 部门元数据

项目用 divisions.json 作为部门的"数据源:"

{ "divisions": { "academic": { "label": "Academic", "icon": "GraduationCap", "color": "#8B5CF6" }, "engineering": { "label": "Engineering", "icon": "Code", "color": "#3B82F6" }, ... } }

每个部门有 label(显示名)、icon(Lucide 图标名)、color(品牌色)。被 app 和 CI 脚本消费。

八、关键设计决策

决策方案理由
Agent 存储格式Markdown + YAML frontmatter人类可读、Git 友好、工具通用
工具集成convert.sh 生成各工具格式一套源码 → 适配所有工具
Hermes 集成Lazy-router 插件全量存磁盘,按需加载,不占上下文
安装方式脚本 + App命令行用户用脚本,桌面用户用 App
CI 校验check-divisions.sh目录结构与 JSON 定义一致

九、实战:安装 DevOps Agent 到 Claude Code

理论讲完了,接下来动手实战——从源码安装一个 DevOps Automator Agent 到 Claude Code,然后在命令行中使用它。

9.1 源文件概览

我们先看选中的 Agent 源文件:

属性
源文件路径/root/agency-agents/engineering/engineering-devops-automator.md
nameDevOps Automator
emoji⚙️
vibeAutomates infrastructure so your team ships faster and sleeps better.
文件大小375 行,12.8 KB(含前端 YAML + Markdown 提示词 + 代码示例)

这个 Agent 专注于:基础设施即代码(Terraform)、CI/CD 流水线(GitHub Actions)、容器编排(Kubernetes)、监控告警(Prometheus/Grafana)。

9.2 安装流程

Claude Code 的安装类型是 per-agent + identity 格式——意味着源文件直接复制到目标目录,无需任何格式转换。

# 完整安装(所有 Agent,所有已检测到的工具)
cd /root/agency-agents
./scripts/install.sh

# 只安装 Claude Code(最快)
./scripts/install.sh --tool claude-code

# 只安装 Engineering 部门的 Agent 到 Claude Code
./scripts/install.sh --tool claude-code --select engineering

# 干运行模式(不实际复制,只看会装什么)
./scripts/install.sh --tool claude-code --dry-run

执行 --tool claude-code 时,install.sh 内部做了这些事:

1. detect_claude_code()  ← 检测 ~/.claude/ 目录是否存在
2. 解析目标路径 → ~/.claude/agents/
3. 遍历所有部门目录中的 *.md 文件
4. 对每个文件:
   a. is_agent_file()  ← 校验是否以 YAML frontmatter 开头
   b. agent_slug()     ← 从 name 字段生成 slug
   c. slug_allowed()   ← 检查是否在白名单/黑名单中
   d. install_file()   ← 复制源文件到 ~/.claude/agents/{slug}.md
5. 输出统计:"Claude Code: N agents -> ~/.claude/agents"

9.3 slug 的生成规则

slug 是安装过程中的关键中间值。它由 name 字段经过 agent_slug() 函数生成:

# agent_slug() 实现(简化)
agent_slug() {
  local name
  name="$(get_field name "$1")"    # 提取 YAML name 字段
  [[ -n "$name" ]] && slugify "$name"  # 转为 kebab-case
}

# slugify 将 "DevOps Automator" → "devops-automator"
# 规则:小写 + 空格变连字符 + 去除非字母数字
源文件name 字段生成的 slug目标路径
engineering-devops-automator.mdDevOps Automatordevops-automator~/.claude/agents/devops-automator.md
engineering-systems-architect.mdSystems Architectsystems-architect~/.claude/agents/systems-architect.md
security-penetration-tester.mdPenetration Testerpenetration-tester~/.claude/agents/penetration-tester.md
💡 关键:slug 不一定等于文件名!文件名是 engineering-devops-automator.md(含部门前缀),但 slug 是从 name: DevOps Automator 提取的 devops-automator。所以目标文件名是 devops-automator.md,不是 engineering-devops-automator.md

9.4 安装后的目录结构

安装完成后,~/.claude/agents/ 目录变成这样:

~/.claude/
├── agents/                     ← Agent 存放目录
│   ├── devops-automator.md     ← 我们刚装的 DevOps Automator
│   ├── systems-architect.md    ← 其他工程的 Agent
│   ├── lead-software-engineer.md
│   ├── penetration-tester.md   ← 安全部门的 Agent
│   ├── marketing-aeo.md        ← 营销部门的 Agent
│   └── ... (安装了多少就有多少)
├── projects/                   ← Claude 项目配置
└── CLAUDE.md                   ← 项目级指导文件

与源文件的对比:

# 源码目录(完整结构,含部门分类)
/root/agency-agents/
├── engineering/
│   ├── engineering-devops-automator.md    ← 原名
│   ├── engineering-systems-architect.md
│   └── ...
├── security/
├── marketing/
└── ...

# 安装后(扁平化,所有 Agent 在一个目录下,以 slug 命名)
~/.claude/agents/
├── devops-automator.md         ← slug 化后的文件名
├── systems-architect.md
├── penetration-tester.md
└── ...
⚠️ 注意:Claude Code 的 format: identity 意味着安装到 ~/.claude/agents/ 的文件和源文件完全一样——就是完整 375 行的 Markdown 内容,含 YAML frontmatter。不是只有提示词部分,是整个文件原封不动复制。

9.5 在 Claude Code 中使用

安装完成后,在 Claude Code CLI 中有两种用法:

方式一:在对话中切换 Agent

# 启动 Claude Code
claude

# 在对话中切换到 DevOps Automator Agent
/agent devops-automator

# 效果:Claude 的角色立即变成 DevOps Automator
# 它会加载 engineering-devops-automator.md 中的系统提示词
# 以该 Agent 的身份和逻辑回答后续问题

方式二:启动时直接指定 Agent

# 一次性任务,以 DevOps Automator 的身份运行
claude --agent devops-automator "帮我设计一个 GitHub Actions CI/CD 流水线"

# 或者简写
claude -a devops-automator "分析我的 Terraform 配置"

使用场景示例

场景命令Agent 行为
审查 CI/CD 配置/agent devops-automator → 贴入你的 GitHub Actions 配置检测安全漏洞、缺少的阶段、建议优化
架构 Terraformclaude -a devops-automator "设计 AWS 三层架构"输出完整 IaC + 监控 + 自动扩缩配置
K8s 排障claude -a devops-automator "Pod 一直 CrashLoopBackOff"按自动化流程诊断并提出修复方案
审计安全/agent devops-automator → "审查这个 Dockerfile"检查镜像安全、非 root 运行、分层优化

Agent 切换的效果

当你在 Claude Code 中使用 /agent devops-automator 后:

  1. 系统提示词更新—Claude 的底层 prompt 被替换为该 Agent 的完整 Markdown 内容(Identity & Memory + Core Mission + Critical Rules + Deliverables)
  2. 角色人格激活—回答风格从通用 Claude 变成"系统性、自动化优先、可靠性导向"的 DevOps 专家
  3. 领域知识聚焦—会主动提出 Terraform/GitHub Actions/Docker/K8s 等技术方案,而不是泛泛而谈
  4. 约束生效—Critical Rules 中的"自动化优先、安全合规嵌入流水线"等限制会约束 Agent 的行为
💡 省流版:/agent devops-automator = 把你的 Claude 瞬间变成一个专注 DevOps 的高级工程师。再 /agent default 就切回通用模式。

9.6 卸载与更新

# 卸载:直接删除文件即可
rm -i ~/.claude/agents/devops-automator.md

# 更新:重新运行 install.sh(覆盖旧文件)
./scripts/install.sh --tool claude-code

# 或者只更新特定部门
./scripts/install.sh --tool claude-code --select engineering

9.7 Agent vs Skill:人格 vs 工作流

学到这里,你可能会问:这个项目叫 Agency Agents,但我们 Hermes 里也有 Skills。它们到底有什么区别?什么时候该用 Agent,什么时候该用 Skill?

9.7.1 本质区别

维度Agent(Claude Code /agent)Skill(Hermes skill_view)
本质🎭 人格替换📋 工作流手册
回答的问题"我是谁?我的领域是什么?""该怎么做?步骤是什么?"
激活方式/agent devops-automatorskill_view('teach-course')
文件位置~/.claude/agents/*.md~/.hermes/skills/*/SKILL.md
文件结构YAML frontmatter + Identity & Memory + Mission + RulesYAML frontmatter + 前置条件 + 步骤 + 注意事项
影响范围替换整个系统提示词附加到现有上下文,补充分片
工具声明无内置——依赖宿主工具可声明所需工具集和外部命令
复用方式一次安装,全工具可用按需加载到当前会话

9.7.2 使用场景对比

# ── Agent 场景:需要 AI「成为」某个角色 ──

# ✅ 适合 Agent
/agent devops-automator
"帮我审查这个 GitHub Actions 配置,看看安全问题"

→ Agent 以 DevOps 专家的身份深入分析,主动提出
  Terraform/K8s/监控等 DevOps 领域细节

# ❌ 不适合 Agent
/agent devops-automator
"教我安装 PostgreSQL"

→ Agent 可能给出冗长的 DevOps 视角回答,
  但缺少安装 Postgres 的标准化步骤

# ── Skill 场景:需要 AI「执行」标准化流程 ──

# ✅ 适合 Skill
skill_view('teach-course')
→ 加载完整教学课程创建流程:
  材料准备 → 目录结构 → 课程页 → Nginx → Git

# ❌ 不适合 Skill
skill_view('teach-course')
"帮我调试这个 Kubernetes Pod"

→ Skill 不包含 K8s 调试知识,无效加载

9.7.3 详细对比表

对比项Agent(Agency Agents)Skill(Hermes Skills)
定义方式Markdown 人格文件(自然语言描述角色)YAML+Markdown 步骤文件(结构化指令)
粒度粗粒度——整段系统提示词替换细粒度——步骤级指令、可选子任务
确定性低——人格驱动,AI 自由发挥空间大高——步骤明确,减少 LLM 自由发挥
工具绑定无——只提供人格,工具由宿主环境决定可能——可声明 terminal、web、file 等工具
版本管理Git 管理 273 个文件,CI 校验格式Git 管理 Skill 目录,无 CI 校验
可测试性弱——人格效果依赖主观判断强——步骤可逐条验证
跨工具兼容强——15 个工具(Claude/Cursor/Copilot/Hermes…)弱——通常绑定到特定 Agent 框架
学习成本低——写一段 Markdown 描述角色即可中——需要理解 frontmatter 和步骤编排

9.7.4 协作模式:Agent + Skill 组合

Agent 和 Skill 不是二选一,而是互补关系。最佳实践是两者搭配使用:

# 模式 1:Skill 提供流程 + Agent 提供角色
skill_view('teach-course')          ← 加载「教学课程」工作流
/agent devops-automator              ← 以 DevOps 专家身份执行
"帮我设计第3课中的 CI/CD 实战示例"

# 结果:既遵循了 teach-course 的标准化步骤,
# 又以 DevOps 专家的深度输出内容

# 模式 2:Agent 做深度诊断 + Skill 做标准化修复
/agent devops-automator              ← DevOps 专家诊断问题
"这个 K8s Pod 为什么 CrashLoopBackOff?"
→ 给出诊断结论
skill_view('systematic-debugging')  ← 调试 skill 引导修复
→ 按 4 阶段流程系统化修复

# 结果:Agent 发现病灶,Skill 提供手术流程
💡 一句话总结:
Agent = 给你一个专家人格("你是 DevOps 工程师")
Skill = 给你一套标准化流程("按这 5 步部署")
Agent + Skill = 专家拿着 SOP 干活,效率和质量兼得

9.7.5 各自的优缺点

AgentSkill
✅ 优势 • 一次安装,15 个工具通用
• 人格驱动,回答有"人情味"和专业感
• 无需编程,纯 Markdown 即可创建
• CI 自动校验格式完整性
• 步骤明确,结果可预期
• 可声明所需工具(terminal、web 等)
• 适合标准化、重复性任务
• 可包含具体命令和代码模板
❌ 劣势 • 人格自由发挥,输出质量不稳定
• 无工具绑定,依赖宿主环境
• 没有步骤保证,复杂任务可能遗漏
• 273 个 Agent 质量参差不齐
• 跨工具不通用(Hermes 专属)
• 创建门槛较高(需理解技能结构)
• 不改变助手人格,缺乏角色深度
• 需要手动加载到会话

9.7.6 实际选择建议

你的需求推荐方案理由
需要领域专家深入回答🎭 Agent人格驱动让 AI 进入专家模式
需要按固定流程操作📋 Skill步骤明确,不遗漏任何环节
既要专家深度又要流程严谨🎭 + 📋 组合Agent 提供人格,Skill 提供流程
创建可复用的团队标准📋 Skill(优先)步骤固化,新人也能执行
制作面向公众的 AI 角色🎭 Agent(优先)跨工具兼容,覆盖面广
执行一次性的探索任务🎭 Agent快速加载无需预定义步骤

十、课后小结

← 返回目录下一章 → 第2课