首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >看完Craft Agents 的源码,我删了我之前的 agent 平台的代码,立马开始重构

看完Craft Agents 的源码,我删了我之前的 agent 平台的代码,立马开始重构

原创
作者头像
老码小张
发布2026-01-24 20:58:31
发布2026-01-24 20:58:31
8780
举报
文章被收录于专栏:玩转全栈玩转全栈

最近圈子里有个怪象:大家都在卷 Agent 平台,但做出来的东西,怎么说呢?重,太重了。

动不动就是复杂的图编排(Graph)、莫名其妙的中间层,配上几十个不知所谓的 Python 类。结果呢?跑个 Hello World 都要 5 秒,接个新工具得写半天代码。

累不累啊?

前两天深夜,我把 lukilabs 开源的 Craft Agents 源码扒了一遍。说实话,看完我只有一种感觉:通体舒畅。

就像大热天喝了一杯冰可乐,原来做一个顶级体验的 Agent 桌面应用,可以像喝水一样简单。

如果你还在为“如何设计 Agent 架构”掉头发,或者正在被 LangGraph 的概念绕晕,这篇文章建议你反复读三遍。

今天,咱们不聊虚的,直接拆解这个教科书级别的项目,看看人家是怎么用最少的代码,做最强的功能


一、 放弃执念,别他妈在自己写“思考循环”了

很多开发者最大的误区,就是试图自己去写 Agent 的 While 循环。

“先调用 LLM,解析结果,如果是函数调用就执行,不是就输出……”

兄弟,这都是 2024 或者说2025上半年的老皇历了。看看 Craft Agents 的核心代码,你会发现它的逻辑简单得令人发指:

它根本没有自己写循环!它直接用了 @anthropic-ai/claude-agent-sdk。其实我感觉,使用 Codex 的那个 sdk也大差不大哈。

这就是第一课:借势。

Anthropic 官方出的 SDK,已经把“思考-行动-观察”的死循环封装到了极致。Craft Agents 做的,只是把这个“核动力引擎”塞进了一个漂亮的 UI外壳里。至于这个外壳是 electron,是 tauri ,还是 React,并没有卵关系,你爱用啥就用啥。

核心代码就这一行,优雅得想哭:

代码语言:javascript
复制
// 所有的复杂逻辑,都被这一行 query 搞定了,this.currentQuery = query({ prompt: userMessage, options })

而这个 query 背后就是丢给了 Claude agent sdk,那他做了啥呢?做了上下文管理,做了工具支撑,做了 mcp 管理,做了 skills 管理。

它告诉我们一个残酷的真相:在 2026 年,Agent 的核心竞争力不再是“基础循环”的实现,而是“上下文”的管理。

代码语言:javascript
复制
~/.craft-agent/├── config.json              # Main config (workspaces, auth type)├── credentials.enc          # Encrypted credentials (AES-256-GCM)├── preferences.json         # User preferences├── theme.json               # App-level theme└── workspaces/    └── {id}/        ├── config.json      # Workspace settings        ├── theme.json       # Workspace theme override        ├── sessions/        # Session data (JSONL)        ├── sources/         # Connected sources        ├── skills/          # Custom skills        └── statuses/        # Status configuration

二、 MCP干了啥:给 AI 插上 USB 接口

还在为每个 API 写各种 wrapper 吗?

Craft Agents 最让我兴奋的点,是它对 MCP (Model Context Protocol) 的全面拥抱。

在这个项目里,所谓的“数据源(Sources)”,无论是 GitHub、Linear 还是本地文件系统,统统被抽象成了 MCP Server

这有多爽?

  • 对于 AI 来说:它不需要知道自己在调 REST API 还是读文件,它只看到了一堆标准化的 Tool
  • 对于开发者来说:你只需要配置一个 JSON,告诉程序“这里有个 MCP 服务”,剩下的连接、鉴权、工具发现,SDK 全包了。

packages/shared/src/sources/server-builder.ts 里,作者通过一个巧妙的工厂模式,把所有的外部连接都变成了“即插即用”的模块。

这就是“自来水”哲学的精髓: 管道(MCP)铺好了,想要什么数据(水),接上去就行,不用每次都去打井。


三、 Skills 系统:把你复杂的 Python 代码删了吧

这是我最想吹爆的一个设计,当然现在肯定是非常火爆的一个技术热点了,仔细研究下,发现人家着实好用的一逼,如果你还不了解 skills 是啥,没关系,我建议你用 Claude code 安装一个,或者直接在我们今天这个项目中试试,写到这里,我就忍不住推荐一个好的网站给你了。这里面好用的技能多如狗。

https://llmskills.org/
https://llmskills.org/

https://llmskills.org/

以前我们要给 Agent 增加一个“新技能”,比如“代码审查”,通常流程是:

  1. 写个 Python/TS 函数。
  2. 定义 schema。
  3. 注册到工具列表。
  4. 重启服务。

太慢了!

看看 Craft Agents 是怎么做的?它设计了一个 SKILL.md 格式。

你没看错,就是 Markdown。这个 markdown 文件初看你回觉得这他么的不就是一个 prompt吗?是的,你这么说也似乎没错,但是错就错在,他还可以定义一些工具,甚至可用有些代码包,甚至有可以 mcp,甚至这玩意就不用整个都放到上下文中,框架会按需加载,超级省上下文。如下:

代码语言:javascript
复制
---name:"Review PR"description:"帮我审查代码变更"globs: ["*.ts"] ---# 技能指令请你像一个Google的资深工程师一样,检查以下代码的安全性...# 执行步骤...# 可用工具....# 注意事项....

没了。就这么简单。

它利用了文件系统作为“插件市场”。当你在对话框输入 @Review PR 时,系统会自动读取这个 Markdown,通过 SDK 注入到 Claude 的大脑里。

这就叫“降维打击”。 你在苦哈哈写代码,人家在写文档;文档写完了,功能也就上线了。对于开发者工具类 Agent,Prompt 即代码,Markdown 即插件。


四、 权限控制:让 AI 不太可能删了你的根目录

做桌面端 Agent,最怕的是什么?是你让它“清理一下缓存”,它反手把你 Documents 文件夹删了。

Craft Agents 展示了一个教科书级别的 “三级权限门阀” 设计(Hook 系统):

它利用了 SDK 的 PreToolUse 钩子函数(Hook)。在 AI 想要调用任何工具(比如 fs.delete)之前,代码会先拦截:

  1. Safe Mode(怂包模式):只读,不仅不能删,连写文件都不行。
  2. Ask Mode(请示模式):你要写文件?行,弹个窗,用户点了 OK 你再动。
  3. Allow All(狂暴模式):你是老大,随便搞。

特别是那个 SubmitPlan 的工作流设计,简直是交互体验的神来之笔。在 Safe Mode 下,Agent 必须先提交一个“计划书”,用户点点头,它才能切换模式去干活。

这给我们的启示是:安全不是靠 Prompt 喊出来的(比如“请不要删除文件”),而是靠代码层面的 Hook 拦截出来的。


五、 写在最后

看完 Craft Agents[1] 的架构,我最大的感受是:克制。

它没有引入复杂的向量数据库(Vector DB),没有搞花里胡哨的 Multi-Agent 辩论,也没有沉重的编排引擎。

它只是做好了三件事:

  1. 极致的 SDK 封装(站在巨人的肩膀上)。
  2. 标准的协议对接(MCP 走遍天下)。
  3. 顺滑的交互体验(Skills 和 权限管理)。

兄弟们,2026 年了,时代变了。

以前我们比谁的代码写得厚,现在我们比谁的架构做得薄。

如果你正准备动手写一个 Agent 平台,先别急着 npm init。去 GitHub 上把 lukilabs/craft-agents-oss 拉下来,跑一遍,读一遍。

你会发现,原来把事情做简单,才是最高级的技术。


PS:别光收藏不看,代码我已经扒完了,想不想自己动手改一个专属的 Agent?评论区见。

引用链接

[1] Craft Agents: https://github.com/lukilabs/craft-agents-oss

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、 放弃执念,别他妈在自己写“思考循环”了
  • 二、 MCP干了啥:给 AI 插上 USB 接口
  • 三、 Skills 系统:把你复杂的 Python 代码删了吧
  • 四、 权限控制:让 AI 不太可能删了你的根目录
  • 五、 写在最后
    • 引用链接
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档