野蛮生长:我如何在 Vibe Coding 中重构 Agent 架构
起源:一次 “Vibe Coding” 的实战
前两天我用 Vibe Coding 的方式,通过飞书任务 MCP (Feishu Task MCP)在我的IDE中开发了一个专门用于帮我管理日程的小项目,我核心的诉求就是希望通过和AI对话的方式来管理我的日常生活中的日程、会议、工作任务等,然后和飞书进行同步。
并且我为了让这个日程管理更加丝滑,更少地消耗Token,专门创建了一个Agent和一些Skill来管理这个过程中的信息高效传递的过程。我被迫当了一回“架构师”,不断地去重构了我的Agent、Skill,只为了让整个过程尽享丝滑。我整个过程没有去翻官方的定义和说明,只是不停地问自己:怎么做自己感觉最爽(Vibe)?
我的答案只有两个词:低Token、高效率。
我的架构哲学:实用主义三部曲
为了实现极致的高效,我自己去尝试定义了三个核心概念的设计原则,试图实现我下发需求,Agent快速被调用,高效执行,整体低能耗。到目前为止,分享一下我核心的设计原则:
优先使用Skill,且保证Skill动作原子化/使用独立化和全链路化
- 错误设计:我不会去写一个
manage_feishu.py,里面既有读取,又有写入,还有数据清洗。 - 我的设计:我会专门去写一个读取飞书技能,尽可能实现动作原子化 (Atomic) & 使用独立化 (Independent)&全链路化。
- 动作原子化: 这个技能只负责通过飞书去实现读取相关的功能,不负责去实现分析或写入相关的功能
- 使用独立化: 这个技能不跟任何Agent挂钩,但会被写入经典调用场景SOP的举例。它就像一把锤子,谁拿起来都能用。
- 范围全面化:关于通过飞书MCP去读取相关的技能,比如读取飞书文档,读取飞书日程,读取飞书日历都会被打包到这个技能中。
Skill串联频繁时,通过极简的描述打包写入Agent的提示词中
当Skill 变多了,某些任务涉及到多个技能的编排,且这个链路重复出现2-3次之后,这个时候我才会去引入workflow。我核心的原则是把某个场景下频繁组合的Skill进行打包,变成一个足够经典的SOP,以极其精简的语言放到Agent的提示词中。
- 场景:比如,我不是专门做了一个日程管理Agent来帮我专门管理这些和日程相关的事情嘛。有的时候我不知道干啥,我会让他基于我当下和历史的日程,我手头的文件架构给我一些任务建议供我筛选,当我觉得其中某个任务比较好,他会把这个任务写入到飞书中。
- Workflow 注入:于是我把这个高频场景打包成一段精简的 Prompt,注入到
content-executor-agent的定义中。核心就三个,trigger、process、outcome。trigger是一句话的场景描述,process是技能1 → 技能2 → 技能3 的定义,outcome是执行结果的最终效果描述。 - 关键原则:通过极简的Skill编排来打包高频需求。只有当一个动作重复出现 3 次以上,我才把它固化为 Workflow。
Agent核心扮演某类业务负责人,负责思考和决策,然后调用workflow和Skill干活
- Agent 是帮我把某类任务需求落地的核心负责人,我有专门的内容Agent,代码Agent来专门负责某块的任务,然后通过管理Agent的Agent(HR),来实现角色定义、组织架构注入、技能和工具的分配。
- 关键原则:Agent = 负责执行某类业务的负责人 + 组织架构和执行规则记忆 + 经典执行SOP + Skill/MCP。
效率的秘密:电报体与数学语言
为了让这一套系统跑得更快,我甚至制定了一个底层语言规定:相关的文档说明优先使用数学语言/代码语言+英语的组合,中文核心负责说明和标注。为什么我会这么思考,我后续也会出个内容单独讲一下。感兴趣的朋友也可以关注一下。
这种 “High Conversion, Low Entropy” (高转化,低熵) 的沟通方式,让我看到了一种系统高效运转的可能性。
现实碰撞:我 vs 官方
做完这一切后,我才去查阅了 OpenAI 和 Anthropic 的官方文档。很有趣,我们殊途同归,但又截然不同。
| 维度 | 🏛️ 官方定义 (The Textbook) | 🛠️ 我的野蛮生长 (The Vibe) |
|---|---|---|
| Agent | 自主循环体。强调它自己思考、自己规划、自己反思。 | SOP 执行者。我不需要它太有想法,我需要它稳定地执行我的 Workflow。 |
| Skill | Function Calling。绑定在 Agent 身上的附属品。 | 公共设施。完全独立于 Agent,是系统级的原子能力。 |
| Workflow | DAG 图。复杂的代码编排。 | Prompt 链。注入到 Agent 里的几行文字指令。 |
我的优势 (Pros):
- 快:开发一个新 Agent 只需要写一个 Markdown 文件。
- 稳:原子化 Skill 极少出错。谁都能用。
- 爽:符合直觉,像搭积木一样简单。
我的劣势 (Cons):
- 不智能:Agent 缺乏那种“灵光一现”的自主性,它更像是一个高级的自动化脚本。但事实上我为了解决这个事情专门给了一个Agent极高的权限,他是我的首席思维导师,和我一起思考和决策,我和他一起打通0-1的过程后,我会用某个专门的Agent来负责后续1-N的过程。
结语:构建你的 Vibe
概念是概念,定义是定义,且定义应该由自己定义。
Build for your vibe, not for the definition.
只要这些概念能帮你高效搞定需求,管它叫什么呢?对吧。