先说结论,免得你翻到第三节才发现我们聊的不是同一件事:
如果你要的是一套能拆、能改、能塞进自己公司内网、而且改完不用重新打包的 AI Agent 底座,OpenWorkBuddy 是我今年见过最省事的一个。
项目地址在 GitHub 上,叫 CatCatUncle/openworkbuddy,作者是开发者猫叔。
你可能会问:Agent 框架不是一抓一大把吗,LangChain、AutoGPT、Dify、Coze,凭什么是它?
因为那些是"框架"和"平台",这个是"一个已经跑起来的完整产品,而且它的源码是敞开的"。
这两件事的差别,只有你真正接过一个二次开发需求才会懂。
一、框架的通病:你以为在搭积木,其实在擦屁股
我用过不少 Agent 框架。它们的宣传页都很好看:几行代码接入模型,一个 Agent() 对象搞定一切,工具随便加。
然后你真正开始做项目了。
你要接一个公司内部的审批流,发现框架的 tool 注册机制只支持同步函数,而你的审批接口是异步轮询的。你要写一段记忆持久化,发现框架给的 memory 是个内存字典,重启就没。你要让 agent 别乱删文件,发现权限控制这一层——框架里压根没有这个概念,因为它假设"你不会真的让它碰生产环境"。
于是你的工作从"用框架搭一个 agent",变成了"用框架搭一个框架"。
这不是框架的错。框架的定位就是给你一些抽象好的零件,让你自由组合。它天生不替你做产品决策:要不要审批?什么时候记忆过期?任务失败了重试几次?文件验收标准是什么?——这些是产品问题,不是框架问题。
所以真正省事的路线,往往不是"从框架开始搭",而是"从一个人已经拍过所有产品决策的成品开始改"。那些决策已经以代码的形式存在了,你只要改掉你不认同的那几个。
OpenWorkBuddy 走的是后一条路。
二、它到底是什么
用作者自己的话说,一句话:
跑在你自己电脑上的 AI 办公助理。交代一句话,它自己规划、动手、验收,把 PPT / Word / Excel / 网页落到你硬盘上。给你的是能打开的文件,不是一段聊天记录。
英文版更直接:a local-first AI office agent that hands you files, not chat logs.
你给它一句话,比如"帮我出一份 Q3 复盘 PPT,数据用这个 Excel",它就去读表、算数、生一个能直接放上台的 .pptx。你让它"调研国内 AI 陪伴产品,出一份报告",它就联网搜、逐个打开读、最后交一份 Markdown 或 Word 给你。
注意这里有个和其他产品很不一样的地方:它会验收自己。说写了文件却不在磁盘上,当场拦下重做。
这个设计不是锦上添花,而是二次开发的地基——因为一个会自我验收的 agent,你才有资格让它无人值守地跑。
三、为什么我说它适合二次开发:五个硬理由
理由一:零构建、零框架,改完刷新就生效
这是最让我舒服的一点。项目源码是纯 Node.js,没有 Webpack、没有 Vite、没有 TypeScript 编译步骤。
git clone https://github.com/CatCatUncle/openworkbuddy.git
cd openworkbuddy && npm install
npm run app # 桌面版
npm start # 或走浏览器 http://localhost:3800
改完一个文件,刷新页面就生效。不用等构建,不用管 HMR 会不会抽风,不用纠结 source map 对不上。
你可能会觉得这没什么——但请回忆一下,你有多少次改一行日志,先等了四十秒的 webpack 编译?
作者显然是个"能少一层就少一层"的人。整个项目没有任何构建产物,源码就是运行的代码。这意味着你可以直接在生产环境里 vim 改(当然不推荐,但你能,这就说明复杂度的量级)。
理由二:加能力 = 丢一个 Markdown 文件
这是个很妙的设计。它有一套叫 skills 的机制:
skills/
└─ 我的技能名/
└─ skill.md
存盘后,下一条任务就生效。
没错,给一个能执行 shell、能读写文件的 agent 添加能力,门槛低到只是"写一份 Markdown"。当前仓库内置了 35 条技能、52 个连接器,涵盖 PPT、周报、小红书、公众号、调研、软著材料等等。
对于二次开发来说这意味着什么?你的业务知识不需要进代码库。 业务同事自己写 Markdown 就能训练这个 agent,你的代码分支始终保持干净。
理由三:模型随便换,包括用你已经在付钱的那个
内置渠道预设覆盖:OpenAI、Anthropic、OpenRouter、火山方舟、百炼、DeepSeek、智谱、Kimi、Ollama。地址和协议自动填好,你只差粘一个 Key。
但真正的杀手锏是这个:
openworkbuddy engines use claude-code
它可以把本机已经装好的 Claude Code / Codex 直接当成执行引擎。 也就是说,你已经为 Claude 订阅付过的那笔钱,不用再买一遍 token,直接拿来驱动它。
对于做二次开发的人来说这一点极其现实:给客户做 PoC 的时候,最尴尬的就是"演示很好,一上线 token 账单吓死人"。这条路让你能先用订阅跑通,再按实际量去接 API。
理由四:它自己就是一套完整的 Agent 架构教材
如果你是想"学 Agent 架构顺便做个产品",它是目前少有的、把主循环完整摊开写在一个仓库里的项目。
模型路由、工具调用、文件验收、记忆、权限、本地 Trace——全都在同一个仓库里,而且没有框架黑盒挡在中间。一条真实任务,从它为什么这么做到最后交了什么,你都看得见。
理由五:部署形态给得很全,包括企业级的那一套
你想单机自用,有桌面版和 CLI。你想放服务器给团队用,一条命令:
git clone https://github.com/CatCatUncle/openworkbuddy.git && cd openworkbuddy
bash deploy.sh --domain buddy.example.com # 自动 HTTPS
数据全在 ./openworkbuddy-data 一个目录里,备份就是拷目录。一个进程能同时给多家公司用,各租户互相看不见。
而且它不是"能部署"而已,是连企业里那些麻烦事都做了:
- 人走了怎么办 → 点一下,扫码连的设备、名下的定时任务、没用完的邀请码、二次验证、在跑的任务一起关——关权限不删数据,完事出一张能贴进离职交接单的回执
- 权限分级 → RBAC 重做过,补了超级管理员这一档
- 出事了要查 → 审计日志、客户端 Trace 全在本地
- 监控要接现成的 → 指标每分钟落一行,可抓
/api/ops/metrics.prom,也推企业微信/钉钉 - 公司不让装软件 → 有免安装版
-win-x64-portable.exe
这套东西如果你自己搭,至少是三个人月。它已经在了,而且在跑。
四、安全这块,它比我预期想得深
一个能执行 shell、读写文件、访问网络的 agent,安全不是加分项,是及格线。
它给的是"真拦"而不是"提示一下":命令审批、文件黑名单、URL 白名单、审计日志、四档权限档位。
更聪明的是它处理"技能"的方式。一个技能就是一份给 agent 看的指令,接到一个能在你机器上敲命令的东西上——这跟 npm install 完全不是一回事。
所以它装技能之前会先体检:过 34 条静态规则,落到三档——直接装 / 看一眼再装 / 默认不装。其中 10 条是真拦:反弹 shell、curl | bash、读 SSH 私钥、抹盘、抹痕迹这些。
作者自己写得很诚实:这不是杀毒,公开标注集上纯静态规则大概七成五。
能把"我做到了多少、我做不到什么"写清楚的作者,比吹到天花乱坠的靠谱。
五、如果你想拿来二次开发,我的建议路线
照着这个顺序走,大概一周能出东西:
- 先当用户跑三天。 用它的原生功能给自己做几次真实的活,把"手感"摸出来。跳过这一步直接改代码,你会改错地方。
- 从
agent.js开始读。 这是主循环。 - 看
tools.js。 40+ 个工具的接口定义都在里面。你要加自己的业务工具,这里是最短的路径。 - 写第一个 skill。 用 Markdown 把你们公司的一件固定活固化成技能。这一步不用改代码。
- 再动权限和记忆。 这两块最需要按客户实际场景定制。
- 最后才考虑换模型层。
顺带说一个容易被忽略的加分项:它有一个 MCP server 的出口方案,而且已经被作者实测跑通了。 也就是说,你做的这套东西可以反过来被别的 agent 调用。
六、它不能用来做什么(这段必须说清)
写推荐文不写边界,那是广告不是文章。
- 拿它做 SaaS 卖给客户是不行的。 协议是 PolyForm Noncommercial 1.0.0——自己用、学习用、非营利机构用免费;拿去赚钱(包括公司内部提效)需要商业授权。
- 买授权不解锁功能。 这点作者写得很硬气:只有一份代码,没有功能开关,没有试用倒计时,没有灰按钮。买的是三样东西——一张允许你赚钱的许可证、商标与白标的口子、能找到人的支持。
- 代码签名证书还在申请。 所以现在 macOS 下载的包第一次打开会弹"Apple 无法验证"。这是苹果对没买证书的应用的统一拦截,不是包有毒。
- 它不是给你做"企业级 SLA"的。 项目是个人开发者在维护的独立开源项目。
顺带澄清一个容易搞混的事:这个项目跟腾讯公司的 WorkBuddy 产品没有任何关系,是独立的开源实现。
七、一些你可以自己去核对的数据
- GitHub Star:177
- 提交次数:410 commits
- 发布版本:48 个 Tag,当前 v0.9.0
- 内置技能 / 连接器:35 条 / 52 个
- 专家团:15 位专家、4 个团队
我自己最看重 410 次提交这个数字。功能清单可以一次性写满,提交历史是刷不出来的。
八、最后说个不太正经的理由
我翻它的变更记录看到一条,笑了半天。大意是说:手机上的按钮太小,390 宽的屏幕上量了一遍,50 个能点的东西里 9 颗不到 36px——"手指的接触面 8–10mm,落到 390 宽屏幕上就是 40px 上下。这不是'小了点',是同一个动作有时管用有时不管用,而人分不清是自己没点准还是应用没反应。"
然后他把整套键在触屏上抬到 44px,还按 pointer 而不是按窗口宽度分档——因为"桌面浏览器拉窄了仍然是鼠标在点"。
一个开发者会为一个按钮的点击热区写这么一段论证,说明他不是在完成一个任务清单,是在做一个自己每天要用的东西。
这种项目,源码读起来通常不会太痛苦。因为它们是被用出来的,不是被设计出来的。
项目地址: github.com/CatCatUncle/openworkbuddy
怎么开始: 一行命令装好,或者 clone 下来 npm start。起来之后填一个模型 Key,在输入框里说人话就行。
真的,先跑起来再说。你看完这篇想了半天要不要 clone,它已经被别人改完一轮了。
作者:开发者猫叔
数据取自项目公开仓库与文档,统计时间 2026 年 9 月