1. 项目概述:从“狂人”到“伙伴”的AI实践之路

“狂人日记”这个标题,听起来有点自嘲,又带着点探索的狂热。这大概就是过去一年里,我深度使用各类AI工具,特别是围绕 Agent(智能体) MCP(模型上下文协议) Skill(技能) 构建个人工作流的真实写照。从最初被ChatGPT的对话能力震撼,到后来折腾各种AI编程助手、尝试让AI串联起我的整个工作台,这个过程充满了试错、惊喜和效率的质变。今天这篇“日记”,就想抛开那些浮夸的宣传,实实在在地聊聊我是怎么把AI,特别是像 CodeBuddy Hermes Agent 这类工具,用成我离不开的“数字同事”的。如果你也对如何超越简单的问答,让AI真正嵌入你的开发、写作、研究乃至日常事务处理流程感兴趣,那么我踩过的坑和总结的经验,或许能给你一条更清晰的路径。

简单来说,这篇分享的核心,就是 如何利用AI Agent框架和MCP协议,将单一的大模型能力扩展为一个可定制、可连接、具备专业技能的自动化工作流 。它解决的不仅仅是“怎么写一段代码”或“怎么润色一段文字”的孤立问题,而是“如何让AI理解我的整个项目上下文、调用我需要的工具、并按照我的习惯完成一系列复杂任务”的系统性问题。无论是开发者、内容创作者、研究者还是效率爱好者,只要你希望将AI的潜力榨取得更彻底,这里面的思路和实操细节都值得一看。

2. 核心理念拆解:AI从“工具”到“Agent”的跃迁

2.1 为什么是Agent?理解智能体的核心价值

最开始用AI,我们都在一个聊天框里输入问题,等待答案。这就像雇了一个无所不知但“手无缚鸡之力”的顾问,它只能动嘴给建议,具体执行还得你自己来。而 Agent(智能体) 的概念,则是给这位顾问配上了“手”和“脚”,甚至是一个专属的工具箱。

一个真正的AI Agent通常具备几个关键特征: 记忆(Memory) 规划(Planning) 工具使用(Tool Use) 。记忆让它能记住对话历史和你的偏好;规划让它能分解复杂任务,一步步思考;而工具使用,则是其能力扩展的基石。它可以根据你的指令,自动去调用搜索引擎查资料、读写本地文件、执行一段代码、调用某个API,或者操作一个专业软件。这就实现了从“建议者”到“执行者”的转变。

我选择深入Agent领域,根本原因在于我的工作流是碎片化和跨工具的。我可能上午在写代码(VS Code),下午在分析数据(Jupyter Notebook),晚上在写文档(Obsidian),中间还需要查资料、处理图片。如果每个环节都要我手动把内容复制粘贴到AI聊天框,效率瓶颈非常明显。我需要一个能 常驻在我工作环境里,理解当前上下文,并能直接操作这些环境 的AI伙伴。这就是CodeBuddy这类插件,以及基于MCP协议构建的生态吸引我的地方。

2.2 MCP协议:打破AI与工具之间的“巴别塔”

理解了Agent需要“用手”,下一个问题就是:手怎么连接工具?这就是 MCP(Model Context Protocol) 协议要解决的问题。你可以把它想象成AI世界的“USB标准”或“驱动协议”。

在没有MCP之前,每个AI应用(如ChatGPT、Claude)如果想连接一个新工具(比如你的数据库、你的项目管理软件),都需要针对这个工具单独开发一套连接逻辑。这非常低效,且难以复用。MCP协议定义了一套标准化的通信方式,让 工具提供方 可以按照统一格式暴露自己的功能(成为一个MCP Server),而 AI应用方 (如CodeBuddy、Claude Desktop)只要实现了MCP Client,就能无缝接入所有符合协议的工具。

举个例子,假设有一个 sqlite-mcp-server 的工具。它按照MCP协议告诉AI:“我可以接收SQL查询语句,并返回数据库结果”。那么,任何支持MCP的AI Agent(比如配置了该Server的CodeBuddy)在需要查询数据库时,就能直接调用这个工具,而不需要自己再去写连接数据库的代码。这极大地丰富了AI的能力边界。我后面会详细讲如何为CodeBuddy添加诸如Tavily搜索、Brave搜索这类MCP Server,这相当于瞬间为你的AI助手装上了“联网搜索”的技能。

2.3 Skill与Agent框架:定制你的专属AI能力模块

在具体的实现层面,我们常会遇到 Skill Agent框架 这两个词。它们密切相关,但各有侧重。

Skill(技能) 是一个更偏向功能性的概念。它指的是一个具体的、可复用的能力单元。比如,“用Pandas进行数据清洗”可以是一个Skill,“生成Git提交信息”可以是另一个Skill。在CodeBuddy里,你可以看到很多预置的Skill,也可以自己编写或导入Skill。一个Skill内部封装了具体的提示词(Prompt)、可能需要的工具调用(Tools)和执行逻辑。你可以把它看作一个针对特定任务的、优化好的“工作指令包”。

Agent框架 则是构建和运行Agent的“脚手架”或“操作系统”。它提供了记忆管理、工具调度、任务规划、多Agent协作等基础能力。像 Hermes Agent AutoGen LangChain 等都属于Agent框架的范畴。CodeBuddy本身可以看作是一个集成在IDE里的、轻量级的Agent框架实现,它管理着Skill的加载和执行。

我的使用经验是:对于聚焦于编码和本地工作流自动化的场景, CodeBuddy以其与VS Code的深度集成和易用性胜出 ;而对于需要复杂逻辑编排、长期记忆和自定义程度更高的自动化任务,我会选择使用 Hermes Agent 这类更灵活的框架来构建独立的Agent应用。它们不是互斥的,而是可以配合使用。

3. 核心工具深度体验与选型指南

3.1 CodeBuddy详解:不只是代码补全

CodeBuddy常常被拿来和GitHub Copilot、Cursor比较,但它真正的威力远不止代码补全。它本质上是一个 基于MCP协议的、可扩展的AI编程助手平台

安装与基础配置: 安装非常简单,在VS Code的扩展商店搜索“CodeBuddy”即可。安装后,你需要一个兑换码(通常可以从其官网或社区活动获得)来激活高级功能。基础配置中,最关键的是 模型选择 Skill管理

注意:模型选择直接影响体验和成本。CodeBuddy支持接入OpenAI、Anthropic(Claude)以及一些开源的Ollama本地模型。对于日常开发,Claude 3 Sonnet或Haiku在代码理解、推理和成本间取得了很好的平衡。如果处理敏感代码或追求零成本,可以配置本地的DeepSeek-Coder或Qwen-Coder模型,但需要牺牲一些响应速度。

核心功能场景:

  1. 深度代码理解与操作 :选中一段代码,直接让CodeBuddy解释、重构、添加注释或生成测试。它的优势在于能结合整个文件甚至项目的上下文进行分析,而不仅仅是当前行。
  2. Skill的威力 :这是CodeBuddy的精华。例如,内置的“Code Review” Skill,可以像资深同事一样给你的代码提意见;“Generate Documentation” Skill能快速为函数或类生成标准化的Docstring。你还可以从社区导入Skill,比如一个专门优化SQL查询的Skill。
  3. 项目级问答 :你可以直接问:“我们这个项目里,处理用户认证的逻辑在哪里?” CodeBuddy会检索整个项目文件,给出准确的定位和解释。
  4. 与MCP Server联动 :这是打通外部世界的钥匙。后文会详细展开。

与WorkBuddy的区别: 很多人分不清CodeBuddy和WorkBuddy。简单来说, CodeBuddy聚焦于软件开发环境(主要是VS Code) ,深度集成代码编辑、调试、版本控制等开发流程。而 WorkBuddy的设计场景更泛化 ,可能面向办公自动化、跨应用脚本(如操作浏览器、Excel等),它可能通过其他插件或桌面Agent的形式存在。两者核心都基于类似的Agent和MCP理念,但目标领域和集成深度不同。对于程序员,CodeBuddy是首选。

3.2 Hermes Agent与开源Agent框架探索

当你的需求超出IDE,就需要更强大的Agent框架。 Hermes Agent 是一个功能强大且设计优雅的开源框架,我常用它来构建一些自动化的后台任务。

它的核心优势在于:

  • 清晰的架构 :将工具(Tools)、记忆(Memory)、规划器(Planner)、执行器(Executor)分离,易于理解和定制。
  • 强大的工具生态 :原生支持MCP,可以轻松集成海量工具。同时也支持自定义Python函数作为工具,灵活性极高。
  • 出色的长期记忆 :通过向量数据库存储对话历史,使得Agent能在很长的对话周期中保持上下文连贯,适合复杂的多轮任务。

一个简单的Hermes Agent应用实例: 假设我想让一个Agent每天自动从几个指定的科技博客抓取文章,总结要点,然后发到我的Notion知识库里。用Hermes实现的大致步骤:

  1. 定义工具:创建(或使用现有的) fetch_rss_feed (抓取RSS)、 summarize_text (调用大模型总结)、 append_to_notion (写入Notion)三个工具函数。
  2. 配置Agent:给Agent配备这三个工具,并设定一个向量数据库作为记忆存储。
  3. 编写任务规划:可以是简单的线性脚本,也可以利用其规划器让Agent自己决定步骤。例如:“每日执行:1. 调用 fetch_rss_feed 获取列表;2. 对每篇文章调用 summarize_text ;3. 调用 append_to_notion 写入结果。”
  4. 部署运行:可以部署为常驻的后台服务,通过cron定时触发。

相比于在CodeBuddy里写一次性脚本,用Hermes构建的Agent更 模块化、可维护、且具备状态 。你可以随时问它:“上周你都总结了哪些关于AI Agent的文章?” 它能从记忆里找出来。

其他框架浅析:

  • LangChain :生态最庞大,组件最丰富,但学习曲线陡峭,有时显得“重”。适合构建非常复杂、生产级的AI应用。
  • AutoGen :专注于多Agent协作,模拟团队工作模式(如让一个“程序员”Agent和一个“测试员”Agent对话协作解决问题)。在研究性、探索性任务上很有意思。
  • Semantic Kernel :微软出品,与.NET生态结合紧密,适合微软技术栈的开发者。

对于大多数想从“使用”迈向“创造”的进阶用户,我建议从 Hermes Agent 开始,它在易用性和能力之间取得了很好的平衡。

3.3 MCP Server实践:为你的AI装配“武器库”

MCP协议的魅力在于其连接能力。下面我以两个最实用的场景为例,展示如何为CodeBuddy添加MCP Server,从而极大扩展其能力。

场景一:添加搜索能力(Tavily / Brave Search MCP) 默认情况下,CodeBuddy不具备联网搜索能力。通过MCP,我们可以让它“学会上网”。

详细步骤:

  1. 获取MCP Server :搜索 tavily-mcp-server brave-search-mcp 。通常这些项目在GitHub上可以找到。以Tavily为例,它是一个专注于AI的搜索API。
  2. 安装与配置 :按照项目README的说明进行安装。通常是npm或pip安装。安装后,你需要获取对应的API Key(Tavily或Brave Search都需要注册账号获取)。
  3. 配置CodeBuddy :在VS Code中,打开CodeBuddy的设置(通常在设置界面搜索CodeBuddy)。找到MCP Servers配置项。添加一个新的Server配置,需要提供:
    • name : 自定义一个名字,如 my_tavily_search
    • command : 启动该MCP Server的命令。例如,如果是一个Node.js脚本,可能是 node /path/to/tavily-mcp-server.js
    • env : 环境变量,在这里传入你的API Key,如 {"TAVILY_API_KEY": "your_key_here"}
  4. 验证与使用 :重启VS Code或重新加载CodeBuddy。之后,你在和CodeBuddy对话时,就可以直接提出需要联网信息的问题,比如:“ 帮我搜索一下最新发布的MCP协议有哪些新特性? ” CodeBuddy会自动调用配置好的搜索工具,获取实时信息并整合到回答中。

实操心得:配置MCP Server时,最常遇到的问题是路径错误或环境变量未生效。建议先在终端手动运行一下 command 中的命令,确保它能独立启动成功。另外,不是所有MCP Server都稳定,社区维护的版本可能随着API变更而失效,需要留意。

场景二:连接本地数据库(SQLite MCP) 让AI直接查询或分析你的本地数据,这是另一个杀手级应用。

配置步骤:

  1. 同样,寻找一个 sqlite-mcp-server 的开源实现。
  2. 安装后,在配置 command 时,通常需要指定数据库文件路径作为参数。例如: sqlite-mcp-server /path/to/your/database.db
  3. 在CodeBuddy的MCP配置中添加此Server。
  4. 使用示例:你可以对CodeBuddy说:“ 连接到我的数据库,查询上个月销售额最高的前五个产品。 ” 或者更复杂:“ 分析一下用户表,给我一个用户活跃度随时间变化的总结。 ” AI会生成SQL语句,通过MCP Server执行,并解读结果。

通过组合不同的MCP Server,你可以将CodeBuddy打造成一个集成了 代码专家、搜索引擎、数据分析师、文档管理员 于一身的超级助手。

4. 高阶应用:构建个人自动化工作流

掌握了单个工具,就可以像搭积木一样,构建属于你自己的自动化工作流。这里分享两个我自用的、结合了多个概念的工作流。

4.1 自动化代码审查与知识沉淀流

这个工作流的目标是:每次完成一个功能模块或修复一个重要Bug后,自动生成高质量的技术笔记,并存入我的知识库。

所用工具与技能:

  • 核心 :CodeBuddy (VS Code内)
  • 辅助 :一个自定义的“代码审查与总结” Skill,一个连接Obsidian(我的笔记软件)的MCP Server(或通过其本地API)。
  • 触发 :Git提交前(通过Git钩子)或手动触发。

工作流步骤:

  1. 我在VS Code中完成代码编写。
  2. 我唤出CodeBuddy,使用自定义的“代码审查与总结” Skill。这个Skill的提示词经过精心设计,会要求AI做以下几件事:
    • a. 分析本次变更的代码差异(Diff)。
    • b. 从设计模式、性能、可读性、潜在Bug等方面进行审查,提出建议。
    • c. 用通俗的语言总结这个变更解决了什么问题,采用了什么方案,关键点是什么。
    • d. 生成包含“背景”、“解决方案”、“核心逻辑”、“注意事项”等章节的Markdown文档。
  3. CodeBuddy执行这个Skill,调用代码分析工具和模型,生成一份完整的审查报告和总结文档。
  4. 紧接着,我配置的“Obsidian MCP Server”被调用,将这份Markdown文档自动写入我指定的知识库文件夹,并以“日期-功能名”的格式命名。
  5. 现在,我的代码提交了,同时一份结构化的开发笔记也自动生成了。日积月累,这就形成了一个宝贵的项目知识库。

这个流程将 编码、审查、文档编写 三个动作无缝衔接,极大地提升了技术债的管理水平和个人知识的沉淀效率。

4.2 跨平台信息聚合与处理流

这个工作流处理的是更泛化的信息:我可能在看论文、刷推文、读新闻,看到有价值的信息,希望快速摘录、翻译、总结并分类存档。

所用工具与技能:

  • 核心 :Hermes Agent (作为常驻后台服务)
  • 工具 :浏览器剪藏插件(如简悦)、网页内容提取MCP Server、翻译API MCP Server、大模型总结工具、Notion API MCP Server。
  • 触发 :浏览器插件一键发送。

工作流步骤:

  1. 我在网页上看到一篇好文章,点击浏览器插件的“发送到我的AI助手”按钮。
  2. 插件将当前网页的URL和选中的文本发送到我本地运行的Hermes Agent服务。
  3. Hermes Agent接收到任务,启动一个处理流程:
    • a. 调用 web_scraper_mcp 工具,获取网页的纯净正文内容。
    • b. 调用 translator_mcp 工具,将非中文内容翻译成中文(如果需要)。
    • c. 调用 summarizer 工具(本质是提示词调用大模型),要求生成一个包含“核心观点”、“关键论据”、“个人启发”的三段式摘要。
    • d. 根据我预设的规则(或让AI判断)给这篇文章打上标签(如“AI前沿”、“编程技巧”)。
    • e. 调用 notion_mcp 工具,将标题、原文链接、摘要、标签等信息,作为一条新记录插入到我Notion的“阅读清单”数据库中。
  4. 整个过程在后台秒级完成,我无需离开当前浏览的页面。所有碎片信息被自动结构化地保存起来,方便日后检索和回顾。

这个工作流的关键在于 Hermes Agent的任务编排能力 MCP工具链的打通 。它实现了一个信息从“采集”到“处理”再到“入库”的全自动管道。

5. 避坑指南与未来展望

5.1 实操中的常见“坑”与解决方案

在近一年的深度使用中,我遇到了不少问题,这里总结几个最具代表性的:

1. 成本失控问题: AI模型调用,尤其是高性能模型,费用不菲。无节制地使用可能导致账单惊人。

  • 解决方案
    • 分层使用模型 :简单的代码补全、语法检查用低成本模型(如Claude Haiku, GPT-3.5-Turbo);复杂的系统设计、逻辑推理再用高级模型(如Claude Sonnet/Opus, GPT-4)。
    • 设置使用限额 :在OpenAI或Anthropic后台为API Key设置每月用量上限。
    • 善用本地模型 :对于不涉及敏感信息的重复性任务或离线场景,部署开源的Ollama模型(如Qwen、DeepSeek)。CodeBuddy和Hermes都支持接入Ollama。
    • 优化提示词 :清晰、具体的提示词能减少模型的“胡思乱想”和无效输出轮次,直接降低成本。

2. 上下文长度与记忆丢失问题: 大模型有上下文窗口限制(如128K)。长对话或处理长文档时,早期的信息可能会被“遗忘”。

  • 解决方案
    • 关键信息摘要与注入 :在对话进行到一定长度后,主动让AI对之前的讨论重点进行摘要,然后在后续提问时将摘要作为新的上下文输入。
    • 利用Agent的记忆机制 :像Hermes Agent这类框架,其向量数据库长期记忆功能就是为了解决这个问题。确保重要信息被存入长期记忆。
    • 分而治之 :处理超长文档时,先让AI进行分段总结,再基于总结进行全局分析,而不是一次性喂入全部文本。

3. 工具调用不稳定或错误: MCP Server可能因为网络、API变更、自身Bug等原因失效或返回错误。

  • 解决方案
    • 为工具调用添加重试和超时机制 :在构建自己的Agent时,这是基本操作。
    • 设置清晰的错误处理与用户反馈 :当工具调用失败时,Agent应该能捕获错误,并以友好的方式告知用户“XX功能暂时不可用”,而不是卡死或输出乱码。
    • 定期维护你的工具链 :关注所用MCP Server项目的更新,及时替换掉已失效的服务。

4. 过度依赖与思维惰性: 这是最隐蔽也最危险的“坑”。AI能快速给出答案,也可能让你停止深入思考。

  • 解决方案
    • 明确AI的定位 :它是“副驾驶”(Copilot),不是“自动驾驶”。最终决策、架构设计、关键算法,必须经过你自己的批判性思考。
    • 把AI当作学习伙伴 :不要只问“怎么做”,多问“为什么这么做?”“有没有更好的方法?”“这里的原理是什么?”。用AI的回答来激发和验证你自己的思考。
    • 定期进行“无AI”工作 :刻意安排一些时间,完全靠自己解决问题,保持独立思考和动手能力。

5.2 技能(Skill)的编写与调优心得

自己编写Skill是发挥AI Agent潜力的关键一步。一个好的Skill和普通的提示词有天壤之别。

编写高质量Skill的要点:

  1. 单一职责 :一个Skill只做好一件事。比如“生成单元测试”和“优化SQL查询”就应该分成两个Skill。这有利于维护和复用。
  2. 提供丰富上下文 :在Skill的指令(Instruction)中,除了任务描述,尽可能提供背景信息、输入输出格式示例、约束条件(如“不要使用eval函数”)。
  3. 结构化输出 :要求AI以特定格式(如JSON、Markdown表格、特定章节的文本)输出,这极大方便了后续的程序化处理。
  4. 迭代优化 :没有一个Skill是一次写成的。通过实际使用,观察AI在哪些地方会误解或出错,不断修正和补充你的指令。这是一个“训练”AI理解你需求的过程。

示例:一个简单的“代码解释”Skill

# 这不是真实配置语法,仅示意结构
name: explain_code
description: 用通俗易懂的语言解释一段代码的功能和逻辑,面向编程新手。
instruction: |
  你是一个耐心的编程导师。用户会给你一段代码。请你:
  1. 用一句话概括这段代码的**核心目的**。
  2. 按执行顺序,逐行或逐关键部分解释代码在**做什么**。避免使用过于专业的术语,用比喻和生活化的例子说明。
  3. 指出代码中可能存在的**关键点或容易混淆的概念**(如果有的话)。
  4. 最后,提供一个**简单的、相关的类比**来帮助理解。

  输出格式请严格遵循以下Markdown结构:
  ## 核心目的
  [你的回答]
  ## 逐行解释
  [你的回答]
  ## 关键点提示
  [你的回答]
  ## 理解类比
  [你的回答]

  现在,请解释以下代码:
  {{code_snippet}}

通过这样结构化的Skill,你每次都能得到高质量、格式统一的解释,而不是随机的、质量参差不齐的回答。

回顾这段“狂人”般的探索历程,最大的体会是:AI Agent和MCP所代表的“可组装、可扩展的智能”范式,正在将AI从一种“云端的魔法”变成一种“可编程的电力”。我们不再只是魔法的祈求者,而是电路的搭建者。这个过程需要学习新的概念(Agent, MCP, Skill),需要动手配置和调试,甚至需要写一点代码,门槛确实存在。但一旦打通,你所获得的不是一个更聪明的聊天机器人,而是一个真正能理解你的工作环境、调用你的工具、按照你的方式去解决问题的数字伙伴。这种效率的提升和思维模式的扩展,是革命性的。未来的方向,我认为会朝着 Agent的专精化 (出现更垂直、更强大的特定领域Agent)、 工具生态的标准化与繁荣 (更多好用的MCP Server),以及 人机协作流程的深度重塑 发展。而我们能做的,就是保持好奇,持续动手,在这场变革中为自己打造最趁手的“利器”。

更多推荐