
Agent as Code:如何把 Agent 相关的东西全部放到代码库?

Infrastructure as Code(IaC)已经成了标准实践。
Terraform 管理基础设施,Kubernetes 管理容器,Ansible 管理配置。
但 AI Agent 时代,我们缺了一块:Agent as Code。
如何把 Agent 相关的一切——人设、技能、工作流、记忆——全部放进代码库?
一个被忽视的问题

现在很多人玩 AI Agent,是这样的:
在 ChatGPT 网页版里,写一个「你是一个专业前端工程师」的 Prompt。然后在 Cursor 里,写另一个「你是一个代码审查专家」的 Prompt。又在 claude.ai 里,写第三个「你是一个产品经理」的 Prompt。
这三个 Prompt 是孤立的。

它们不在一个地方。它们没有版本控制。它们无法协同工作。
更糟糕的是:
- 你改了 Prompt A,但忘了同步到 Prompt B
- 你团队里的三个人,各有各的 Prompt 版本
- 你不知道哪个 Agent 是在什么时候用什么配置跑的
- 出了问题,你无法复现
这不是工程化。这是「手工作坊」。
Agent as Code 的核心思想

把 Agent 当作代码一样管理。
这意味着什么?
1. 人设即代码(Persona as Code)

Agent 的「人设」不应该是一个藏在聊天窗口里的 Prompt。
它应该是一个文件。
# 仓库结构
agents/
├── frontend-engineer/
│ └── SOUL.md # 人设文件
├── code-reviewer/
│ └── SOUL.md
└── product-manager/
└── SOUL.mdSOUL.md 里写什么?
# SOUL.md - 前端工程师 Agent
## 你是谁
你是一个资深前端工程师,10 年经验,擅长 React、Vue、性能优化。
## 你怎么说话
- 直接、务实、不说废话
- 代码示例优先,理论其次
- 能给可执行方案,不给空泛建议
## 你怎么工作
1. 先理解需求,再动手
2. 写代码前先想测试
3. 完成后自己 review 一遍
## 你不做什么
- 不写后端代码(那是后端工程师的事)
- 不做 UI 设计(那是设计师的事)
- 不给空泛的「最佳实践」建议这个文件,就是 Agent 的「灵魂」。
它进代码库。它有版本控制。它能被复用。它能被团队共享。
2. 技能即代码(Skill as Code)
Agent 的「技能」不应该是一个个散落的脚本。
它们应该是一个个独立的、可复用的包。
# 技能目录结构
skills/
├── wechat-publisher/
│ ├── SKILL.md # 技能说明
│ ├── scripts/
│ │ ├── publish.sh # 发布脚本
│ │ └── wechat-publish.mjs
│ └── README.md
├── excel-processor/
│ ├── SKILL.md
│ ├── scripts/
│ │ └── process.py
│ └── README.md
└── docx-generator/
├── SKILL.md
├── scripts/
│ └── generate.py
└── README.md每个技能都是一个独立的功能单元。

- 它有清晰的接口(输入什么,输出什么)
- 它有文档(SKILL.md 说明用法)
- 它有版本(和代码一起管理)
- 它可以被多个 Agent 共享
技能就像 npm 包。 你可以 install,可以 update,可以贡献回社区。
3. 工作流即代码(Workflow as Code)
多 Agent 协作的工作流,不应该是在大脑里想象的。
它应该是可视化的、可配置的、可版本控制的。
# 工作流定义
workflows/
└── content-production.yaml
name: 内容生产流水线
steps:
- agent: product-manager
task: 从热点库筛选选题
output: topic.md
- agent: writer
task: 根据 topic.md 写文章
output: article.md
- human: true
task: 审核 article.md
output: article-approved.md
- agent: publisher
task: 发布到公众号
input: article-approved.md这个 YAML 文件,就是工作流。

- 它是声明式的(定义「做什么」,不定义「怎么做」)
- 它是可视化的(可以画成流程图)
- 它是可调试的(可以单步执行,可以断点)
- 它是可版本控制的(改了工作流,可以 diff、可以 rollback)
4. 记忆即代码(Memory as Code)
Agent 的「记忆」不应该只有聊天记录。
它应该是一个可维护的、结构化的知识库。
# 记忆目录结构
memory/
├── 2026-06-01.md # 每日日志
├── 2026-05-31.md
├── MEMORY.md # 长期记忆(人工整理)
├── project-context.md # 项目上下文
└── decisions.md # 关键决策记录MEMORY.md 是什么?
它是 Agent 的「长期记忆」。不是所有东西都往里塞,只放真正重要的:
- 项目的关键决策
- 重要的约定和规范
- 用户的偏好和习惯
- 需要长期记住的配置
它的价值:
- 跨会话保持上下文
- 新 Agent 可以快速接手
- 团队可以共享记忆
- 可以被检索和引用

Agent as Code 的五个好处
1. 版本控制
你改了 Agent 的人设,你知道什么时候改的、改了什么、谁改的。
你改了工作流,你可以 diff,可以 rollback。
你改了技能,你可以回滚到上一个版本。
就像代码一样。
2. 可复用
你写了一个「微信公众号发布」技能,你的团队都能用。
你设计了一个「内容生产」工作流,其他项目也能用。
不用每次从零开始。
3. 可测试
你改了 Agent 的 Prompt,你可以跑测试:给它 100 个任务,看它的输出有没有退化。
你改了工作流,你可以单步调试,看每个环节的输出对不对。
就像测试代码一样。
4. 可协作
团队成员可以一起维护 Agent 的人设。
可以一起优化技能的脚本。
可以一起设计工作流。
不像各自在 ChatGPT 里写 Prompt,无法协同。
5. 可观测
你可以追踪:这个任务是用哪个 Agent、哪个版本的技能、哪个配置跑的。
出了问题,你可以复现。
而不是「上次能跑,这次就不行了,不知道为什么」。
OpenClaw 的实践
OpenClaw 是「Agent as Code」的完整实践。
目录结构:
~/.qclaw/
├── workspace/ # 工作空间
│ ├── AGENTS.md # 工作区说明
│ ├── SOUL.md # Agent 人设
│ ├── MEMORY.md # 长期记忆
│ ├── TOOLS.md # 工具配置
│ └── memory/ # 每日日志
│ └── 2026-06-01.md
├── skills/ # 技能目录
│ ├── wechat-publisher/
│ │ ├── SKILL.md
│ │ ├── scripts/
│ │ └── README.md
│ ├── excel-processor/
│ └── ...
└── ... # 其他配置每个文件都有明确的职责:
- SOUL.md → Agent 是谁,怎么说话,怎么工作
- MEMORY.md → 长期记忆,跨会话保持
- TOOLS.md → 工具的 API Key、配置、使用说明
- SKILL.md → 技能的用法、依赖、示例
- memory/YYYY-MM-DD.md → 每日日志,记录发生了什么
进 Git 仓库:
# 把 Agent 放进代码库
git add ~/.qclaw/"
git commit -m "Add frontend engineer agent"
git push团队成员同步:
# 别人拉取你的 Agent
git pull
# 现在 Ta 也能用你的 Agent 了实战:创建一个 Agent
假设你要创建一个「前端工程师 Agent」。
步骤 1:写人设
# 创建 workspace
mkdir -p ~/.qclaw/workspace/frontend-engineer
# 写人设文件
cat > ~/.qclaw/workspace/frontend-engineer/SOUL.md << 'EOF'
# SOUL.md - 前端工程师 Agent
## 你是谁
你是一个资深前端工程师,10 年经验...
(省略)
EOF步骤 2:装技能
# 安装相关技能
skillhub_install install_skill excel-processor
skillhub_install install_skill docx-generator步骤 3:配置工具
# 写工具配置
cat > ~/.qclaw/workspace/frontend-engineer/TOOLS.md << 'EOF'
### GitHub
- Token: xxx
- 默认仓库: my-org/frontend
### NPM
- Registry: https://registry.npmjs.org
- 默认 scope: @my-company
EOF步骤 4:进代码库
cd ~/.qclaw/workspace/frontend-engineer
git init
git add .
git commit -m "Add frontend engineer agent"
git remote add origin git@github.com:my-org/agents.git
git push -u origin main完成。
现在你的「前端工程师 Agent」是一个代码仓库了。
- 你可以 clone 到其他机器用
- 你的团队可以 pull 下来用
- 你可以版本控制、可以 diff、可以 rollback
三个常见的错误
错误 1:把 Agent 当 Prompt 玩
在 ChatGPT 里写一个 Prompt,觉得这就是 Agent 了。
不是。
Agent 是一个系统:人设 + 技能 + 记忆 + 工具。
Prompt 只是人设的一部分。
错误 2:把技能藏在自己的机器上
写了一个很厉害的技能,但只在自己的电脑上能用。
这不是技能,这是脚本。
技能应该是可分享的、可安装的、可版本控制的。
错误 3:工作流只在大脑里
你知道「多 Agent 协作」怎么做,但从来没有把它写下来。
那不叫工作流,那叫「想象」。
工作流应该像代码一样,可以被阅读、被修改、被执行。
写在最后
Agent as Code,不是技术概念,是工程实践。
它的核心是:把所有和 Agent 相关的东西,都放进代码库。
- 人放进 SOUL.md
- 能力放进 Skill
- 流程放进 Workflow
- 记忆放进 MEMORY.md
然后像管理代码一样管理 Agent。
版本控制、可复用、可测试、可协作、可观测。
这样,Agent 才能从「玩具」变成「工具」。
从「手工作坊」变成「工业体系」。
Agent as Code,就是让 Agent 像 Linux 内核一样:
可被 fork、可被贡献、可被共享、可被演进。
这才是 AI Agent 的未来。
