每日了解一个智能体-WorkBuddy

每日了解一个智能体 ------ WorkBuddy:当 Agent 开始接住整条工作流

一、先用一个运维场景建立直觉

先看我们这行最典型的一件重复劳动:季度安全运营报告。

我做过一份某银行邮件网关的 Q2 报告:9 章、3 张表、20 张截图。它的真实工作流长这样:

复制代码
   ① 登录设备导出告警数据(几个界面、几种格式)
            │
   ② 从邮件网关 / 防毒墙 / 沙箱各拉一份原始数据
            │
   ③ 手工统计:TOP5 告警类型、趋势环比、处置率
            │
   ④ 挑代表性截图,逐张裁、逐张编号
            │
   ⑤ 按上季度的模板,把数据填进 Word
            │
   ⑥ 调格式:标题层级、表格表头、页眉页脚、图注
            │
   ⑦ 自查:数据口径是否自洽、章节编号是否断档
            │
   ⑧ 导出 PDF,发客户

前三代工具分别能帮到哪一步:

工具 能帮到 卡在哪
聊天式大模型 帮你写第 ⑤ 步的文字 数据得你喂,格式得 you 调,图得你贴。它只碰到了中间一环。
编码 Agent(Codex 那类) 帮你写脚本处理第 ③ 步 它活在代码仓库里,登不了你的设备,看不懂你的 Word 模板
通用工作型 Agent ① → ⑧ 全程接 前提是:它能拿到你的数据、记得你的规矩、会用你的工具

差别在哪? 前两代缺的都是同一件东西------接入。

聊天模型是孤岛 :你搬数据进去,它把文字搬出来。

编码 Agent 是车间 :它能自证代码对不对,但车间里没有你的业务系统。

通用工作型 Agent 要解决的,是把孤岛和车间连成一条流水线。

而"连起来"这件事,靠的不是模型更聪明,靠的是四样工程件:技能、连接器、记忆、子代理。


二、整体架构(先看全貌)

复制代码
┌──────────────────────────────────────────────────────────────────┐
│                        用户(一个岗位角色)                          │
│            安全运维 / 售后交付 / 报告编写 / 数据分析                  │
└────────────────────────────────┬─────────────────────────────────┘
                                 ▼
┌──────────────────────────────────────────────────────────────────┐
│  ① 能力装配层:按需加载(这是最核心的设计)                            │
│                                                                   │
│   ┌─────────────┐  ┌─────────────┐  ┌─────────────┐              │
│   │  技能 Skills │  │  专家 Experts│  │ 连接器/MCP   │              │
│   │ · 用户级     │  │ · 100+ 领域  │  │ · 腾讯文档   │              │
│   │ · 项目级     │  │ · 方法论注入 │  │ · 企业微信   │              │
│   │ · 触发词命中 │  │ · 团队协作   │  │ · 邮件/IM    │              │
│   │   才加载     │  │             │  │ · 自定义 MCP │              │
│   └─────────────┘  └─────────────┘  └─────────────┘              │
│         │                 │                 │                     │
│         └─────────────────┼─────────────────┘                     │
│                           ▼                                       │
│              ② 工具层(延迟加载 ToolSearch)                        │
│              几十上百个工具,用到才载入 schema                        │
└────────────────────────────────┬─────────────────────────────────┘
                                 ▼
┌──────────────────────────────────────────────────────────────────┐
│  ③ 执行层                                                          │
│   · 本地文件系统(读写/编辑/命令)                                    │
│   · 云服务(数据库 / 存储 / 认证 / 免密钥调 LLM)                     │
│   · 多模态生成(图片 / 视频 / 3D)                                   │
│   · 可视化(内联 SVG / HTML 图表、交互组件)                          │
│   · 文件交付(Word / Excel / PPT / PDF 生成与就地编辑)               │
└────────────────────────────────┬─────────────────────────────────┘
                                 ▼
┌──────────────────────────────────────────────────────────────────┐
│  ④ 协作层:子代理(上下文隔离 + 并行)                                │
│   主 Agent 派活 → 子 Agent 各自跑 → 只回传结论                       │
│   (探索 / 规划 / 表格 / 文档写作 / 排版 / 格式转换 ...)                │
└────────────────────────────────┬─────────────────────────────────┘
                                 ▼
┌──────────────────────────────────────────────────────────────────┐
│  ⑤ 记忆层(三层,这是它区别于"一次性聊天"的关键)                      │
│   · 云端记忆:跨会话检索历史讨论                                      │
│   · 用户级 MEMORY.md:跨项目的长期规矩                                │
│   · 工作区 memory/YYYY-MM-DD.md:项目日志(只追加)                   │
└────────────────────────────────┬─────────────────────────────────┘
                                 ▼
┌──────────────────────────────────────────────────────────────────┐
│  ⑥ 常驻层:自动化 + 发布                                             │
│   · 定时任务(RRULE:每天/每周/每月,或一次性)                        │
│   · 站点与小程序部署上线                                             │
└──────────────────────────────────────────────────────────────────┘

和前两篇对比一下,你就能看出定位差异:

千问(框架层) Codex(编码层) WorkBuddy(工作层)
核心命题 模型怎么调工具 怎么自证代码对不对 怎么接住整条业务流
主场 一个对话 一个代码仓库 一个岗位
关键工程件 Function Calling / ReAct 沙箱 / 验证环 技能 / 连接器 / 记忆 / 子代理
衡量标准 调用成功率 测试通过率 交付物能不能直接用

三、逐层拆解:六个真正有用的设计

3.1 技能系统:为什么要"按需加载"而不是"一次喂全"

这是整个架构里我最想讲的一个设计。

朴素做法 :把所有能力写成一大段系统提示词,一股脑塞进上下文。

后果:上下文被背景知识吃掉大半,真正留给"当前这件事"的空间所剩无几;而且能力一多,模型会"选择困难"------该用 A 技能的时候用了 B。

WorkBuddy 的做法 :技能是文件,不是提示词。

复制代码
~/.workbuddy/skills/                ← 用户级:跨项目通用
    └── 我的技能包/
            ├── SKILL.md            ← 触发条件 + 执行步骤
            ├── scripts/            ← 技能可调用的脚本
            └── references/         ← 参考资料,用到才读

{workspace}/.workbuddy/skills/      ← 项目级:团队共享

加载时机由"触发词"决定 ------只有当用户意图命中某个技能的描述时,那份 SKILL.md 才会被读进上下文。

复制代码
   用户说:"帮我把这份 PDF 整理成 Word"
              │
              ▼
   扫描已安装技能的描述(只读 description,很轻量)
              │
              ▼
   命中 → 文档处理技能
              │
              ▼
   加载 SKILL.md 全文 → 按其中的步骤执行
              │
              ▼
   过程中需要细节 → 再读 references/ 里的具体文件

这个三段式(描述 → 主文件 → 参考资料)是标准的"渐进式披露" ,也是上下文经济的核心手段:永远只把"此刻需要的"放进上下文。

对我们的启发很直接 :这跟我们做设备故障处置手册是一个道理。

你不会把 200 页手册一次性念给新人听,你会先给一张"什么症状对应哪一章"的索引表。

技能系统的 description 字段,就是那张索引表。

而索引表写得准不准,决定了整个系统会不会用错技能。

3.2 专家:把"方法论"而不是"知识"注入进来

技能解决的是"怎么做一件事",专家解决的是"用谁的标准做"。

比如同一个"漏洞分析报告":

  • 用安服工程师的专家视角 → 重攻击链、重 IOC、重处置时效
  • 用合规审计的专家视角 → 重等保条款映射、重证据链完整性
  • 用管理层汇报的专家视角 → 重风险量化、重业务影响、弱化技术细节

同一份素材,三种产出。专家包里装的是判断标准与取舍偏好,这比"知识"稀缺得多。

这里有个很容易被低估的点:一个人真正值钱的不是"会做",是"知道什么情况下该怎么做、做到什么程度算够"。 专家机制本质上是在尝试把这部分固化下来。

3.3 连接器与 MCP:把手伸进真实业务系统

这一层决定了 Agent 是"能聊"还是"能干"。

复制代码
   ┌──────────────┐
   │   Agent      │
   └──────┬───────┘
          │  统一协议
          ▼
   ┌──────────────────────────────────────┐
   │  连接器 / MCP Server                   │
   ├──────────────────────────────────────┤
   │ · 腾讯文档 / 企业微信文档               │
   │ · 即时通讯(读会话、发消息)             │
   │ · 智能体邮箱(收发邮件、附件)           │
   │ · 知识库 / 网盘 / 会议                  │
   │ · 工单 / 代码仓库 / 项目管理系统         │
   │ · 自定义 MCP server(你自己写的)        │
   └──────────────────────────────────────┘

MCP(Model Context Protocol)的意义,是把"接一个外部系统"从定制开发变成配一段 JSON。 自定义 MCP 写在 ~/.workbuddy/mcp.json 里,加个 command + args + env 就能接入一个新的内部系统。

对我们这行的实际价值:想象一下把下面这些接进来------

  • 堡垒机的操作审计日志
  • 工单系统的待办列表
  • 资产台账(CMDB)
  • 漏洞扫描器的结果库

接上之后,"帮我看看这个季度哪几台设备还没打 XX 补丁"就不再是"你把 Excel 传给我",而是它自己去查、自己去对。

但这里有一条红线必须说清楚 :客户环境数据(内网拓扑、真实 IP、账号口令、告警原始日志)禁止直接送进公网大模型 。

我在自己的长期记忆里就写死了这条规矩,每次会话自动加载。

接入能力越强,这条红线越要提前写成机器可读的约束,而不是靠临场记得。

3.4 三层记忆:它为什么记得住你的规矩

这是 WorkBuddy 区别于"每次都是新对话"的产品最本质的地方。

层 存什么 作用域 特点
云端记忆 历史会话、过往决策 跨会话检索 服务端排序检索,适合"上次那个方案我们怎么定的"
用户级 MEMORY.md 长期偏好、红线、既定事实 跨所有项目 人工可编辑,写进去就是硬约束
工作区 memory/YYYY-MM-DD.md 项目日志 当前项目 只追加不覆盖,形成时间线

这三层不是冗余,是三种完全不同的用途:

  • 云端记忆解决"我记不清是哪次聊的了"------检索式。
  • 用户级 MEMORY.md 解决"这件事每次都要说一遍"------声明式。
  • 工作区日志 解决"这个项目走到哪一步了"------时间线式。

举个真实的用法(这是我自己记忆文件里的一条):

markdown 复制代码
## 红线(必须提醒)
- 客户环境数据(内网拓扑、真实 IP、账号口令、告警原始日志)
  禁止上传公网 AI,需脱敏或本地处理。
- AI 只做结构与语言层,数据、结论、口径必须真实,
  不得让 AI 编造安全数据。

这两行字,每次新会话都会被自动读进来。 它不是一个"我希望 AI 记住"的愿望,是一条写死在配置里、每次都生效的约束。

我在第 2 篇讲 Codex 时提过 AGENTS.md------把团队隐性约定变成 Agent 可读的显式上下文。这三层记忆是同一个思路,只是把作用域从"一个仓库"扩到了"一个岗位"。

工作区日志为什么设计成"只追加"?

因为它要的是可追溯的时间线 ,不是一份状态快照。三个月后回看,你能看到"10-28 决定用方案 A,10-29 发现数据口径不一致改了口径 B"------决策的来龙去脉比结论本身更值钱。这也是我做事故复盘时最看重的东西。

3.5 子代理:上下文隔离 + 并行

长任务最大的敌人不是模型不够聪明,是上下文污染------跑到后面,前面塞进去的中间结果把窗口挤满了,模型开始丢约束。

子代理的解法是:派一个独立的上下文去干活,只把结论带回来。

复制代码
                  主 Agent
                      │
        ┌─────────────┼─────────────┐
        ▼             ▼             ▼
   ┌─────────┐  ┌─────────┐  ┌─────────┐
   │探索子代理│  │规划子代理│  │文档子代理│
   │(只读)  │  │(设计)  │  │(写作)  │
   │ 读 50 个 │  │ 出方案   │  │ 出初稿   │
   │ 文件     │  │         │  │         │
   └────┬────┘  └────┬────┘  └────┬────┘
        │            │            │
        └────────────┼────────────┘
                     ▼  【只回传结论,不回传过程】
              主 Agent 汇总

关键点在"只回传结论" :探索子代理读了 50 个文件、消耗了几万 token,但主上下文里只多出几百字的摘要。这跟 Codex 的"上下文自动压缩"是同一类工程手段,只是粒度不同------一个是压缩,一个是隔离。

子代理还有几种典型分工(都是真实存在的角色):

类型 干什么 什么时候用
Explore 快速摸清代码库/文件结构 面对陌生项目时,先派它去
Plan 设计实施方案 动手前的方案评审
表格代理 读写分析 Excel/CSV 数据处理类任务
文档三段式 写作 → 排版 → 格式转换 正式文档交付
general-purpose 通用多步执行 复杂长任务

3.6 自动化与发布:从"一次对话"到"常驻流程"

前五层解决的都是"这一次对话能干多好"。第六层解决的是"我不在的时候它能不能自己跑"。

复制代码
   一次性执行:2026-11-05 14:30 提醒我提交季度报告
   周期执行:  FREQ=WEEKLY;BYDAY=MO;BYHOUR=9;BYMINUTE=0
              → 每周一 09:00
              → 【拉取上周告警数据 → 多周期对比 → 生成报告 → 推送】

注意自动化提示词的写法原则(这是踩过坑的经验):

❌ 错:"每天早上九点,拉取 A 股开盘数据并生成报告"

✅ 对:"拉取 A 股开盘数据并生成报告"

------ 调度信息写在调度字段里,不写在提示词里。未来执行时看不到你当前的对话,提示词必须自包含:公司名、文件路径、指标口径、偏好,全都要写进去。

这条原则值得单独记 :凡是要"以后再跑"的东西,提示词必须能脱离上下文独立成立。

配套的发布能力(站点部署、小程序托管)则把"生成一个网页"推进到"这个网页真的在线上跑着"------从产出物到服务。


四、一个真实跑通的案例:把季度报告做成流水线

前面都是架构,这一节讲我实际跑过的一条流水线。它正好把上面几层设计串起来了。

任务:把一份 PDF 版的事故分析报告,重做成一份带正式排版的 Word 交付文档。

三段式流水线:

复制代码
   ┌────────────────────────────────────────────────┐
   │ S1  doc-writer    创作 :产 Markdown 正文        │
   │     ↓ 中间产物,不是交付物                        │
   ├────────────────────────────────────────────────┤
   │ S2  doc-formatter 排版 :产 HTML 版式            │
   │     ↓ 选模板 / 仿参考文档风格                     │
   ├────────────────────────────────────────────────┤
   │ S3  doc-converter 转换 :HTML → DOCX            │
   │     ↓ 强制打开预览                               │
   └────────────────────────────────────────────────┘

为什么要拆三段? 因为这三件事的失败模式完全不同:

阶段 失败模式 谁该负责
创作 内容缺项、逻辑不通、口径矛盾 内容与领域知识
排版 标题层级乱、表格无表头、间距不一致 版式规范
转换 图片丢失、字体替换、分页错乱 工程实现

合成一步做,出问题时你根本分不清是哪一层错了。拆开之后,每一段都能单独重跑、单独验收。 这跟我们做变更要拆步骤、每步验证是一个道理。

踩过的三个坑(真实记录,很有代表性):

坑一:转换后图片全丢了。

原因:转换服务不读本地相对路径的图片。解决办法是把图片转成 base64 data URI 内嵌进 HTML。8.45 MB 的 HTML,转换后图片全部落地。

坑二:排版评分只有 45 分。

自动评审指出三类问题:25 张表格缺 <thead>/<tbody>;间距用了裸值(1.5em)没走 CSS 变量;缺执行摘要区。注意这些都是"机器可判定"的问题------这正是"能自证"的价值:它不是"我觉得不好看",是逐条可检查。

坑三:用户删了几章之后,编号断档了。

5.5 应该变 5.3,6.4/6.6 应该变 6.2/6.3,还有汇总表里的序号 1/2/3/5------这个用文本替换改不到,因为它在表格里,要用专门的表格写入工具。

这三个坑有个共同点:都是"看起来完成了,实际交付不了"的问题。

生成 Word 容易,生成一份能直接发给客户的 Word 难。中间那段距离,全靠工程细节填。

这跟第 2 篇 Codex 的结论是同一句:"能演示"和"能交付"之间的距离,就是全部工程量。


五、运维人最该从这里抄走的三件事

5.1 把重复的交付物,做成"技能"而不是"模板"

模板是死的,技能是活的。区别在哪?

传统模板 技能
形态 一个 .docx 文件 一个目录:SKILL.md + scripts/ + references/
怎么用 人去填空 Agent 按步骤执行,脚本自动干活
知识放哪 全塞在模板里 分层:主文件放流程,参考资料按需读
能不能校验 不能 能(脚本 + 自检清单)

一个"季度安全运营报告"技能包大概长这样:

复制代码
quarterly-security-report/
├── SKILL.md                    ← 触发条件 + 8 个步骤
├── scripts/
│   ├── collect_alerts.py       ← 从导出文件抽取告警数据
│   ├── check_consistency.py    ← 口径自洽检查(数字加起来对不对)
│   └── render_charts.py        ← 生成趋势图
├── references/
│   ├── 章节结构规范.md
│   ├── 术语与口径表.md          ← "攻击次数"到底是什么口径
│   └── 脱敏规则.md              ← 哪些字段必须脱敏
└── templates/
    └── QBR-template.docx

口径表和脱敏规则这两份参考资料,是最值钱的部分。 它们承载的是"我们单位对这件事的标准",而不是"AI 对这件事的理解"。

5.2 把红线写进记忆,而不是写进每次的提示词

我自己的 MEMORY.md 里有两条,前面贴过。再强调一遍为什么它必须放在记忆里:

复制代码
❌ 每次对话开头提醒自己"这次别把客户 IP 发出去"
   → 会忘,尤其在长任务的第 20 轮

✅ 写进用户级 MEMORY.md
   → 每次会话自动加载,不依赖你的记性,也不依赖上下文还剩多少

判断标准很简单:凡是"每次都要说一遍"的规矩,就该写进长期记忆。 脱敏规则、报告口径、客户命名规范、交付物存放路径------这些都属于这一类。

5.3 长任务拆子代理,别硬扛

一条硬经验:单次对话里塞超过 15~20 个工具调用结果,后面的质量会明显下降。 这时候该做的不是"精简提示词",是拆出子代理。

复制代码
   主 Agent:定目标、派活、验收
        │
        ├── 子代理 A:去摸清 30 台设备的配置现状(只读,探索)
        ├── 子代理 B:对照基线,算出偏差清单
        └── 子代理 C:把偏差清单写成报告初稿

每个子代理在自己的上下文 里干活,只把结论带回来。这跟我们做大型变更要分组实施、各组只汇报结果是同一个道理。

相关推荐
OpenAnolis小助手8 小时前
龙蜥社区亮相 GOSIM AI Vision Forum 共话“Agentic Native”开源新
人工智能·ai·开源·操作系统·龙蜥社区·agent
4ever.ov08 小时前
精学C++第一站 从命名空间到引用:C++入门核心语法全梳理(13000字长文)
开发语言·c++·clion
小杨互联网8 小时前
Go 现代 CLI 工具离线镜像合集
开发语言·后端·golang·开源·go·命令行
恩喜玛生物9 小时前
03_GROMACS分子动力学实战:从 Factor Xa 输入准备到轨迹分析
ai
揽星河..9 小时前
【C语言】数组
c语言·开发语言·算法
FRing039 小时前
JavaScript入门到精通三十三(异常处理、call方法、apply方法、bind方法、防抖、节流)
开发语言·前端·javascript
呆呆敲代码的小Y9 小时前
【实战精选面试题】C# 面试题详细解答,按难易程度排序
android·java·游戏·c#·游戏开发·unity面试题·c#面试题
geovindu9 小时前
rust: Semaphore Pattern
开发语言·后端·设计模式·rust·代理模式·企业级信号量模式·同步型模式
淡海水9 小时前
09-01-内存-Unity资源生命周期全景
unity·c#·游戏引擎·.netcore·gc