README.md
Rama main · réplica de lectura del repositorio original.
<p align="center"><img src="build/icon.png" width="64" alt="OpenWorkBuddy"></p>
<h1 align="center">OpenWorkBuddy</h1>
<p align="center"><b>本机优先的 AI 办公工作台,把你的资料和要求变成可打开、可修改的文件。</b><br>
给经常做周报、PPT、表格和文档的人,也给需要自托管的团队。<br>
使用你选择的模型,查看执行过程,在成果区核对交付文件。</p>
<p align="center"><a href="#quick-start"><b>▶ 做一份项目汇报 PPT</b></a> · <a href="https://github.com/CatCatUncle/openworkbuddy/releases/latest">下载安装包</a> · <a href="https://catcatuncle.github.io/openworkbuddy/zh/?utm_source=github&utm_medium=readme&utm_campaign=first_result">项目网站</a> · <a href="#文档">文档</a> · <a href="README.en.md">English</a></p>
<p align="center"><a href="https://github.com/CatCatUncle/openworkbuddy/releases/latest"><img src="https://img.shields.io/github/v/release/CatCatUncle/openworkbuddy?style=flat-square" alt="正式发布版本"></a> <a href="LICENSE"><img src="https://img.shields.io/badge/License-PolyForm%20NC-5b5ff7?style=flat-square" alt="PolyForm Noncommercial 许可证"></a> <a href="https://github.com/CatCatUncle/openworkbuddy/stargazers"><img src="https://img.shields.io/github/stars/CatCatUncle/openworkbuddy?style=flat-square&label=Star&color=5b5ff7" alt="收藏项目"></a></p>
<p align="center"><a href="https://www.opensourcealternatives.to"><img src="https://www.opensourcealternatives.to/badge-osa.svg" alt="As seen on Open Source Alternatives" width="378" height="28"></a></p>
<p align="center"><sub>个人非商用、学校和公益机构免费;公司及个人商用须获 <a href="COMMERCIAL-LICENSE.md">商业授权</a>。购买授权:<a href="mailto:contact@aijentra.com">contact@aijentra.com</a> · 微信:<b>agi_smith</b>。模型与媒体服务的费用由所选服务商决定。</sub></p>
<p align="center"><img src="docs/images/demo.gif" width="720" alt="OpenWorkBuddy 操作演示:输入任务、查看执行过程、打开成果文件"><br><sub>界面流程演示;首次成功耗时按下面的任务实测。</sub></p>
---
<a id="quick-start"></a>
<a id="三分钟跑起来"></a>
## 快速开始:做一份项目汇报 PPT
**前置条件**:一台能运行应用的电脑,以及一个可用的模型服务、已安装的本地模型或已登录的本机 CLI。用 API 时需要自己的 Key。本例用文字和简洁图形生成 PPT,不需要生图、视频、消息渠道或额外连接器;准备 PowerPoint、WPS 或 LibreOffice,方便下载后打开检查。
1. **安装并启动。** macOS / Windows 在 [Releases](https://github.com/CatCatUncle/openworkbuddy/releases/latest) 选择适合芯片的安装包:Windows 安装版 `*-win-setup.exe`,免安装版 `*-win-x64-portable.exe` / `*-win-arm64-portable.exe`;macOS 用 `.dmg`。Linux 用下方源码方式或 [Docker 部署](docs/部署.md)。
2. **连接模型。** 首次启动注册账号;在「设置 → 模型」选择服务商、填写准确型号和 API 地址、添加 Key,再测试连接。已有本机 CLI 的用户也可在「设置 → 智能体」选择它。
3. **复制任务,打开结果。** 选择 Craft 执行模式,粘贴下面的任务。完成后在「成果文件」预览或下载 `project-update.pptx`,用演示软件打开核对四页内容,再试一句“把第 4 页的下周计划改成两列表格,保留其他页”。
```text
请做一份 4 页的项目汇报 PPT,保存为 project-update.pptx。
汇报对象:项目负责人。项目:示例网站上线。
第 1 页|封面:示例网站上线——项目进展汇报。
第 2 页|本周完成:上线产品页;修复移动端菜单。
第 3 页|当前进展:正在补充用户指南。
第 4 页|下周计划:完成英文版;收集 5 条试用反馈。
要求:16:9、中文、简洁商务风;正文使用可编辑文本,
每页一个重点、字号适合投屏、无文字溢出;保留原始事实,不补造数据。
写完确认文件存在,并在成果区提供可打开的文件。
```
**成功标准**:磁盘上有非空的 `project-update.pptx`;PowerPoint、WPS 或 LibreOffice 能打开,四页内容与输入一致、文字可编辑、排版无溢出;第二次要求能更新同一份文件的第 4 页。看到聊天回复或“安装完成”,都还未达到这次任务的成功标准。可复制的任务文件:[中文](examples/quick-start/task.md) / [English](examples/quick-start/task.en.md)。
**计时方式**:从开始安装计到首次打开且核对通过,分别记录下载、启动、模型配置和任务等待。“三分钟”是优化目标,实际时间取决于网络、模型准备情况和任务执行,当前没有发布实测成功率。
<details>
<summary><b>从源码运行:Node.js 18+、npm 与 Git</b></summary>
```bash
git clone https://github.com/CatCatUncle/openworkbuddy.git
cd openworkbuddy
npm ci
npm start
```
看到服务已启动后,打开 <http://localhost:3800>,继续上面的第 2、3 步。桌面开发模式用 `npm run app`。开发时数据默认在仓库的数据目录;安装包的数据默认在 `~/OpenWorkBuddy`。完整说明见 [安装与启动](docs/安装与启动.md)。
</details>
### 卡住时先看这里
| 卡在哪 | 下一步 |
|---|---|
| 系统阻止首次打开 | 按 [安装与启动](docs/安装与启动.md) 对应系统的说明处理 |
| `npm ci` 在 Electron 下载处失败 | 核对网络与 Node 版本,查看 [源码启动排错](docs/安装与启动.md#启动时容易卡住的几件事) |
| 服务启动报端口占用 | macOS / Linux 用 `PORT=3801 npm start`;Windows cmd 用 `set PORT=3801 && npm start`,打开新端口 |
| 测试连接失败,或任务报上游错误 | 核对服务商的 API 地址、型号、Key 和额度,见 [模型配置](docs/配置模型.md) |
| 任务在等批准或答复 | 查看输入框上方的审批卡或收件箱,处理后继续 |
| 回复说完成但找不到文件 | 确认当前项目,在成果区和工作目录核对文件;让助理检查 `project-update.pptx`,不要直接把这次计作成功 |
跑通后再试 [核心场景](#你说一句它交给你),或阅读 [用户指南](https://catcatuncle.github.io/openworkbuddy/zh/guides/user.html)。觉得有用可以 Star 收藏;要收到新版本通知,设置 **Watch → Custom → Releases**。
字号、主题和显示密度可在「头像菜单 → 外观」调整。
v0.18.3 的预览优化会在首次打开及预览栏尺寸变化时自动适配,手动放大后保留所选比例,无需先点击“适合宽度”。详见 [预览操作与格式限制](docs/文件预览与转换.md);自 v0.18.3 提供。
删除历史任务时,可同时清理应用为该任务创建的独立文件夹(默认勾选,也可取消勾选保留成果)。桌面版将文件移入系统废纸篓;纯服务端运行时移入原工作目录的 `.trash/tasks/`,附带 `restore.json` 记录原位置。项目根目录和多个任务共用的文件夹会保留。正在运行的任务会先停止并完成收尾;清理失败时,对话仍保留并显示原因。
整理中间文件和资料库删除改为可恢复回收:桌面版进入系统废纸篓/回收站,服务端保存在原目录 `.trash/files/` 并记录原路径;不再仅凭 `out/` 等目录名清理整目录,有任务或后台命令在运行时禁止回收。详见 [文件清理与恢复](docs/文件清理与恢复.md)。回收后仍占用空间,系统回收失败不会转为永久删除。
<details open>
<summary><b>第一次打开被系统拦住</b></summary>
当前 macOS 发行包使用本地签名,尚未通过 Apple 公证。请使用本仓库 Releases 的安装包。
- **macOS「无法验证」**:如你选择继续安装,先关闭提示,进入 **系统设置 → 隐私与安全性 → 仍要打开**,按系统要求确认。[Apple 操作说明](https://support.apple.com/guide/mac-help/open-a-mac-app-from-an-unknown-developer-mh40616/mac)。
- **macOS「已损坏」**:先重新下载;仍打不开时按[安装与启动](docs/安装与启动.md)检查签名与启动日志,不能只按「无法验证」处理。
- **Windows**:核对下载来源后,在 SmartScreen 选择「更多信息 → 仍要运行」。
- **双击没反应**:查看 `~/OpenWorkBuddy/logs/boot.log`,见[双击了没反应](docs/安装与启动.md#双击了没反应)。
</details>
HTML 内嵌预览使用隔离的临时存储(`localStorage`、`sessionStorage` 各最多 64 MiB,关闭后清除)。需要让网页保存业务数据时,点预览上方的「手动在浏览器打开」;它会启动仅本机可访问的服务并打开当前网页,数据可跨页面刷新保留。此时使用浏览器原生存储配额,具体上限因浏览器而异;重要数据仍应使用网页自己的导出/备份功能。
## 你说一句,它交给你
| 你说一句 | 它交给你 |
|---|---|
| 帮我出一份 Q3 复盘 PPT,数据用这个 Excel | 读表 → 算 → 一个能直接放的 `.pptx` |
| 调研国内 AI 陪伴产品,出一份报告 | 联网搜 → 逐个打开读 → Markdown / Word |
| 把这份材料做成手机上能看的网页 | 写 HTML → 起本机服务 → 扫码就能看([成品](https://hunan-travel.pages.dev/)) |
| 每天 9 点抓行业新闻,做成晨报发我飞书 | 定时任务 + IM 推送,错过了会补跑 |
| 做个 30 秒产品宣传片,竖版横版各一份 | 填表挑时长、画幅、声音 → 配音、动效、合成 → `.mp4` |
<p align="center">
<img src="docs/images/how-it-works.svg" width="1120" alt="一句话进去,OpenWorkBuddy 自己规划、动手、验收,出来的是 PPTX / DOCX / XLSX / HTML 文件">
</p>
> [!NOTE]
> 多任务并行、目标验收、👍👎 进自进化、双层记忆、权限档位、IM 远程指挥、桌面宠物…… 全部能力见 **[功能清单](docs/功能清单.md)**。
## 为什么是它
<table>
<tr>
<td width="50%" valign="top">
<b>📄 文件是真的。</b>
PPT / Word / Excel / 网页都真生成,成果面板里点开就能验收。交付后在成果区和磁盘上核对实际文件。
</td>
<td width="50%" valign="top">
<b>🔌 模型随便换,东西全在你手里。</b>
DeepSeek / 通义 / 智谱 / Kimi / OpenRouter / Ollama 界面点一下就切;本机装了 <b>Claude Code / Codex</b> 的,一键拿它当发动机,不用另买 token。配置与成果文件留在本机,默认只听 <code>127.0.0.1</code>;云模型和远程连接器会收到完成任务所需的数据。
</td>
</tr>
<tr>
<td width="50%" valign="top">
<b>🧩 加个能力 = 丢一个 Markdown 文件。</b>
存成 <code>skills/<名字>/skill.md</code>,存盘后下一条任务就生效——不改代码、不重启、不打包。
</td>
<td width="50%" valign="top">
<b>🔍 也适合拿来读懂 Agent。</b>
模型路由、工具调用、文件验收、记忆、权限、本地 Trace 全在同一个仓库里:一条真实任务,从它为什么这么做到最后交了什么,你都看得见。
</td>
</tr>
</table>
<details>
<summary><b>📣 想推荐给别人?这段直接复制</b></summary>
```text
OpenWorkBuddy:开源的 AI 办公助理,跑在自己电脑上。
说一句话,它自己规划、动手、验收,交给你能打开的 PPT / Word / Excel / 网页,不是一段聊天记录。
· 模型随便换:DeepSeek、通义、Kimi、智谱、Ollama,本机的 Claude Code / Codex 也能直接当发动机
· 数据全在本机,默认只听 127.0.0.1;也能放服务器给团队用,每个人绑自己的微信、飞书
· 加个能力 = 丢一个 Markdown 文件
适合:天天做 PPT、周报、调研报告的人;想私有化部署 AI 助理的团队;想读懂 Agent 怎么搭的开发者。
个人非商用免费:https://github.com/CatCatUncle/openworkbuddy
```
</details>
## 长这样
**「同一个人,换四个场景,手里举块写着字的牌子——要像随手拍的,别像 AI 图」**
<p align="center">
<img src="docs/images/case-photoreal.jpg" width="640" alt="同一位人物在咖啡馆窗边、雨夜街头、工位、清晨卧室四个场景,举着写有「关注 OpenWorkBuddy 项目」的木牌,写实照片风格">
</p>
难的不是画人,是四张里得是同一个人、牌子上的中文不能糊。它先出一张,再用看图工具真去读自己刚生的那张(不是凭记忆吹),确认了才照这个方向铺开其余三张。
**「做个湖南旅游攻略网站,14 个市州一个都不能少」**
<p align="center">
<a href="https://hunan-travel.pages.dev/"><img src="docs/images/case-hunan-site.jpg" width="860" alt="湖南怎么玩 · 14 市州完全攻略:水墨首屏,以及按湘中/湘北/湘南/湘西分好的 14 个市州索引"></a>
</p>
**<https://hunan-travel.pages.dev/>** —— 点开就能逛。一个 HTML 加一个图片文件夹,不挂任何外部 CDN,扔到静态托管上就是一个站。这不是截图拼的示意图,是它交出来的那份东西本身。
**「我要去北京玩三天,给我做一个旅游规划,用地图组件」**
<p align="center">
<img src="docs/images/case-trip-map.jpg" width="860" alt="北京三日游行程卡的地图视图:第 1 天天坛、天安门、故宫、景山、前门按顺序标在地图上,右边是带照片的地点卡片,顶上是「打开路线」和「发到手机」">
</p>
<p align="center">
<img src="docs/images/case-trip-route.jpg" width="860" alt="点「打开路线」换成 Google 地图打开的第 1 天:天坛公园、天安门广场、故宫博物院、景山公园、前门大街五站按顺序连成一条路线,站名和行程卡上的一样">
</p>
<p align="center">
<img src="docs/images/case-trip-timeline.jpg" width="860" alt="同一张行程卡切到时间线:第 3 天从上午的颐和园排到南锣鼓巷">
</p>
回答里的行程直接画成一张行程卡:按天切换,地图上按顺序标好每个地点,右边是带照片的地点卡片。点「打开路线」,这一天的几站按顺序整条带进地图,站名和卡上一样;国内默认用高德打开,旁边能换成 Google(上面第二张就是),国外开 Google 地图;「发到手机」出二维码,扫了在手机上接着走。右上角切到「时间线」,一天从上午排到晚上。不填 Key 也能用;在 设置 → 地图 填了高德 Key,国内地点更准。
**「每天早上七点,把今天的天气和该注意的事发到我飞书」**
<p align="center">
<img src="docs/images/case-schedule-feishu.jpg" width="820" alt="OpenWorkBuddy 的定时任务每天早上推到飞书的早报:今天的天气、紫外线、明天的雨,外加两句今天该干什么">
</p>
应用运行时,定时任务可自动执行;每趟过程和通知送达状态都在「自动化 → 运行记录」。飞书主动通知需在助理设置保存机器人凭证和接收 ID;详见 [IM 与定时任务](docs/IM与定时任务.md)。
怎么做到的、本机 Claude Code 当发动机长什么样 → **[三个案例,拆开讲](docs/案例.md)**
## 创作无限画布
从一张图、一段视频或一组素材开始:卡片里写描述、连接参考、生成、做变体或继续做视频。短剧工作流还支持剧本、角色、场景、分镜、配音与时间线,连线会成为实际生成输入。按 `/` 搜节点,图片能切宫格、批量做视频,常用的一组卡能存成工作流。
角色定妆照、场景图都能在卡片里填写设定、选择图像模型。未指定型号时跟随当前窗口的默认模型,Agent 写入未配置型号时会被拦下。型号失效时会先提示重新选择;点「默认模型」可覆盖旧的剧本设置。[使用与排错](docs/无限画布使用.md#角色定妆照与场景图)。
火山视频的人像审核错误会保留在卡片上;支持已审核素材 ID 的参考生成,首尾帧传输保留原图。[人像素材与模式说明](docs/无限画布使用.md#火山视频提示输入图片可能包含真人)。
<p align="center">
<img src="docs/images/canvas-start.png" width="960" alt="OpenWorkBuddy 创作画布示例:直接创作图片、制作视频或导入素材,Agent 按需展开">
</p>
<details>
<summary>展开:75 秒 AI 短剧实例</summary>
**一句话做出来的 AI 短剧**:说一句「做一集《不烧心》竖屏短剧」,剧本、定妆、分镜、首帧、镜头视频、成片一路做到底,下面这集 75 秒就是这么出来的(点封面看成片)。
<p align="center">
<a href="docs/videos/ai-short-drama-ep01.mp4"><img src="docs/images/ai-short-drama-poster.jpg" width="300" alt="AI 短剧《不烧心》EP01 竖屏成片封面,点开播放 75 秒成片"></a>
</p>
</details>
左侧点「无限画布」就能开始。空白处拖拽平移,`Shift`+拖拽框选,`Shift`/`⌘` 点节点加选减选,展开底部 Agent 后可 `@` 引用节点和素材。
卡片内可改模型、查看参考、对比版本;Agent 按需展开,空提示词不会生成。批量长高只让位一次,未选中的卡片也能看到生成失败原因。支持保留参考的复制、多选整理、小地图,以及画布与素材一起导出。操作与恢复方法见[无限画布使用指南](docs/无限画布使用.md)。
## 放服务器给团队用:多人、私有化部署
```bash
git clone https://github.com/CatCatUncle/openworkbuddy.git && cd openworkbuddy
bash deploy.sh --domain buddy.example.com # Docker + 自动 HTTPS
```
多租户、席位、额度、离职一键收权限都有。**起来先注册管理员**——第一个注册的就是超管,密码自己记牢。成员碰不到企业 Key,能否自带模型由后台决定;Linux 上直接部署要先装 bubblewrap。
→ [部署](docs/部署.md) · [运维手册](deploy/README.md) · [多人协作](docs/多人协作.md) · [账号与部署运维](docs/账号与部署运维.md)
## 配模型:DeepSeek / 通义 / Kimi / Ollama / Claude Code / Codex
**设置 → 模型**,挑预设(OpenAI / Anthropic / OpenRouter / DeepSeek / 通义 / 智谱 / Kimi / 火山方舟 / Ollama),粘 Key,保存即生效。生图、配音、转写、生视频另有一张表,配多个时按顺序回退;官方下线的型号会提前告警。对照表 → [配置模型](docs/配置模型.md)
助理模式也可在模型菜单选择本机 Codex、Claude Code 或已配置的 API 模型;默认沿用当前引擎,单独切换不改变定时任务的设置。
> [!IMPORTANT]
> Key 只存在 `config.json`,已在 `.gitignore` 里,别手滑提交。
## 命令行也能用
`openworkbuddy` 跟桌面版**共用同一份**配置、技能、记忆、连接器和会话——终端里起的活儿,手机和网页上看得见、插得上话;桌面上做到一半,终端里 `openworkbuddy resume` 接着往下走。
在有源码的目录里运行,会用精简的写代码档就地改代码。默认简洁显示,只保留当前进度、最终回答和本轮实际成果。`/details` 看工具过程,`/usage` 看用量,`/verbose on` 展开详情。生成网页后说“给我打开啊”,会直接交给本机程序打开;也可用 `/open 1` 或 `/open 子目录/index.html`。
```bash
npm link # 一次性:装成全局命令(也可以直接 node cli.js …)
openworkbuddy "帮我写一份本周周报" # 单发:跑完就退
openworkbuddy # 交互:连续对话,打一个 / 出命令菜单
cat error.log | openworkbuddy "这是什么问题" # 管道:管道内容当材料送进去
openworkbuddy -q "生成本周周报" > 周报.md # 文件里只有周报,没有进度条
openworkbuddy engines use claude-code # 换执行引擎:跑在你已经付过钱的订阅上,不烧 API 额度
```
单发和管道模式下**不会**反问你,脚本和 cron 里不会卡住。退出码说实话:`0` 成功、`1` 任务失败、`2` 参数写错、`130` Ctrl+C,所以 `openworkbuddy doctor && npm start` 拦得住没配好的机器。
`sessions` / `resume` / `engines` / `doctor` / `pair`(扫码把手机连上来)/ `worktree`,以及 `--mode` `--perm` `-C` `-f` `--json` 等全部参数 → **[命令行用法](docs/命令行用法.md)**
## 它是怎么搭的
<p align="center">
<img src="docs/images/architecture.svg" width="1120" alt="OpenWorkBuddy 技术架构:桌面端、CLI 和 IM 通过各自宿主进入 Agent Runtime,由 Runtime 协调模型、安全审批、工具、项目上下文、成果交付与执行追踪">
</p>
入口分别在 `server.js`、`cli.js`、`src/im/`;Agent 在 `src/agent/agent.js`,工具在 `src/agent/tools.js` 与 `src/tools/`。会话、配置和用量记在本机 `data/`,任务文件写入项目工作区。代码分层 → [代码架构](docs/代码架构.md);任务流程 → [实现细节](docs/实现细节.md)
内置 Agent 使用模型与工具交替执行的循环,支持同批只读查询与独立媒体生成并发。v0.18.3 的进度核对会定期核对清单,区分上次确认的完成数与当前操作,防止专家子任务覆盖主进度;不按工具次数推算完成率。当前架构、Plan / Execute 与 LLMCompiler 的区别见 [Agent 执行与进度](docs/Agent执行与进度.md)(自 v0.18.3 提供)。
## 最新动态
- **11-10** v0.19.3:附件名带中文右括号时不再被截断,对话里不再多出打不开的附件。
- **11-06** v0.19.2:资料库打开笔记时,全部文件等页签不再一起高亮,一次只选中一个页签。
- **11-06** v0.19.1:Linux 多人部署的成员命令进系统沙箱,修复 Key 文件可被绕过读取的漏洞;升级前先装 bubblewrap。
- **11-06** 企业后台能按连接器和技能控制成员权限,设存储配额,打开组织内任务分享;连接器接入增加内置检查。
- **11-06** 记忆可挂在项目上,甲客户的口径不跟到乙客户。
- **11-06** 画布按 / 搜节点,图片可切宫格、批量做视频,一组卡能存成工作流再插回。
- **11-06** 工程线显示工作目录和改动数,逐文件看 diff,可放弃单个文件的修改;有源码的文件夹就地读写。
- **11-06** 资料库上万文件点击即响应,遍历移到后台线程;多任务按内存排队,重活单独限流,不再拖慢电脑。
- **11-06** 命令行写代码每轮提示词减少 75%,有源码的目录就地运行,工具按需加载。
- **11-06** 评测集支持 CSV、Excel、TXT 上传和页面新建,可设权重、必须项和扣分项,人工与评委对账看 kappa。
- **11-06** 方舟下线型号提前告警,生图生视频按顺序回退;新增豆包配音、转写和自定义语音接口,线上请先自测。
- **11-06** 对话悬停看时间,回复可直达执行追踪,追踪显示 TTFT、TPOT;侧栏直接列项目,页签不再被挤走。
- **11-04** v0.18.4:模型接入修复,云端也能重选型号,按 Key 刷新清单;更新方舟预设,区分未开通与已关停。
- **11-03** v0.18.3:文件清理可恢复,保护 out/ 和运行中任务;预览自动适配,长任务进度定期核对。
格式支持与限制见[文件预览与转换](docs/文件预览与转换.md),完整历史见[变更记录](CHANGELOG.md)。
## ⚠️ 这个 agent 手里有 shell
它能跑命令、读写文件、上网,所以有命令审批、文件黑名单、URL 白名单、审计日志和四档权限;macOS 和 Windows 上,它跑的命令还套一层系统沙箱,读不到 Key 和账本;Linux 多人部署用 bubblewrap,隔离立不起来成员命令就拒绝执行。装别人的技能前会先过一遍静态体检,危险的默认不装——但它不是杀毒,装前自己读一眼 `skill.md`。
**放公网前先读 [安全](docs/安全.md)**,默认配置只为本机调。
## 交流群
用崩了、有想法、想一起改,进飞书群直接说:
<p align="center">
<img src="docs/images/feishu-group.png" width="360" alt="OpenWorkBuddy 飞书交流群">
</p>
## 一起把它做下去
- **用崩了、卡住了,开个 [issue](https://github.com/CatCatUncle/openworkbuddy/issues/new)**,哪怕只贴一句报错——你以为「只有我遇到」的坑,多半所有人都在踩。贴之前扫一眼,别把 API Key 带上。
- **10 分钟** 写个技能:一个 Markdown 存成 `skills/<名字>/skill.md`,存盘即生效,[模板在这](CONTRIBUTING.md#提交一个技能3-分钟)
- **一晚上** 挑个 issue 改:`npm install && npm start` 就跑起来,`npm test` 不用 API Key 也能全绿
项目结构、测试、PR 规范都在 [参与贡献](CONTRIBUTING.md)。不用先开 issue 问,直接发 PR。
## 商用授权 · 企业服务
> [!IMPORTANT]
> **个人非商用、学校公益免费;公司使用(哪怕只在内部用)和个人商用,必须买商业授权。**
> 公司可以免费试用 30 天(前提是还没用在实际业务上),长期用必须买。
> **购买商业授权:发邮件至 [contact@aijentra.com](mailto:contact@aijentra.com),或添加微信 `agi_smith`。** 请说明公司、使用场景和预计人数,微信备注「OpenWorkBuddy 商业授权」。细则见 [COMMERCIAL-LICENSE.md](COMMERCIAL-LICENSE.md)。
| 你的情况 | 要不要买授权 |
|---|---|
| 个人非商用:自用、学习、研究、业余项目 | 免费 |
| 学校、科研机构、公益组织、政府机构 | 免费 |
| 公司评估试用:最长 30 天,还没用在实际业务上 | 免费 |
| 公司 / 团队用在实际业务里,**哪怕只在内部** | **必须买** |
| **个人商用**:个人接单、给客户干活、做付费产品或服务 | **必须买** |
| 做 SaaS 对外服务、打包售卖、给客户交付 / 外包 / 定制 | **必须买** |
买授权不解锁任何功能:只有这一份代码,没有功能锁、不倒计时,授权不联网验证。软件不向作者或任何第三方回传使用数据;检查更新时会去 GitHub Releases 查有没有新版(GitHub 能看到本机 IP)。
没授权就商用,权利人可以依法追究民事责任;未经许可删改版权声明,还可能单独构成侵权——依据和判例见 [未授权商用的法律后果](COMMERCIAL-LICENSE.md#未授权商用的法律后果)。
除了授权,我们还承接企业 AI 业务:
| 服务 | 做什么 |
|---|---|
| **企业 FDE(驻场工程)** | 工程师进你们团队,把 Agent 接进真实业务流程,跑起来再交接 |
| **AI 培训** | 企业内训,让团队把 AI 用进日常工作,不停在尝鲜 |
| **AI 落地咨询** | 挑场景、定方案、算成本;私有化部署、行业智能体都能谈 |
作者是前大厂 Agent 工程师,服务过跨境电商、制造业、AI 初创、私募金融机构、消费品巨头、国央企等客户。常驻深圳,欢迎来交流和考察。
📮 商业授权与合作:邮箱 **[contact@aijentra.com](mailto:contact@aijentra.com)** · 微信 **`agi_smith`**
## 从别家换过来:Claude Cowork、Codex、豆包办公的开源替代
在找 **Claude Cowork、Codex、豆包办公、千问办公的开源替代**,或者想给 **DeepSeek 找一个 agent 外壳(harness)**?每一家都写了一页老实对比,也写了什么时候还是用它更合适:
| 你在用 / 在找 | 对比页 |
|---|---|
| Claude Cowork | [Claude Cowork 开源替代:本机运行、模型随便换](https://catcatuncle.github.io/openworkbuddy/zh/alternatives/claude-cowork/) |
| Codex | [Codex 办公版替代:交付的是文件,还能拿 Codex 当发动机](https://catcatuncle.github.io/openworkbuddy/zh/alternatives/codex/) |
| 豆包办公 | [豆包办公开源替代:也能用豆包模型](https://catcatuncle.github.io/openworkbuddy/zh/alternatives/doubao/) |
| 千问办公 | [千问办公开源替代:通义模型照样用](https://catcatuncle.github.io/openworkbuddy/zh/alternatives/qwen/) |
| DeepSeek | [DeepSeek agent 外壳:填上 Key 就能干活](https://catcatuncle.github.io/openworkbuddy/zh/alternatives/deepseek-agent/) |
OpenWorkBuddy 是独立开源项目,跟上面这些公司都没有关联。
## 文档
首次成功的试用流程、计时口径与缺失指标 → [采用与反馈](docs/采用与反馈.md)。
在线文档:**[用户指南](https://catcatuncle.github.io/openworkbuddy/zh/guides/user.html)** · **[开发者指南](https://catcatuncle.github.io/openworkbuddy/zh/guides/developer.html)** · [中英文项目网站](https://catcatuncle.github.io/openworkbuddy/zh/)
| 文档 | 一句话 | 文档 | 一句话 |
|---|---|---|---|
| [功能清单](docs/功能清单.md) | 全部能力、技能与工具 | [部署](docs/部署.md) | 服务器 / Docker / 反代 |
| [案例](docs/案例.md) | 上面那几张图怎么做出来的 | [多人协作](docs/多人协作.md) | 多租户、账号、权限、额度 |
| [安装与启动](docs/安装与启动.md) | 安装包、源码、常见卡壳 | [安全](docs/安全.md) | 审批闸门、黑白名单、审计 |
| [配置模型](docs/配置模型.md) | 各家 base_url / 模型名对照 | [数据同步与搬家](docs/数据同步与搬家.md) | 数据存哪、换电脑怎么搬 |
| [命令行用法](docs/命令行用法.md) | CLI 参数、管道、`--json`、cron | [开源与商业版边界](docs/开源与商业版边界.md) | 买授权到底买到什么 |
| [扩展](docs/扩展.md) | 写技能、接 MCP、装插件、建专家 | [路线图](docs/路线图.md) | 接下来做什么、怎么算做完 |
| [IM 与定时任务](docs/IM与定时任务.md) | 飞书 / QQ / 企微 / 微信 / 钉钉 | [变更记录](CHANGELOG.md) | 一句话一条,最新在上 |
| [实现细节](docs/实现细节.md) | agent 主循环怎么转的 | [参与贡献](CONTRIBUTING.md) | 项目结构、测试、提 PR |
| [安全基线](docs/安全基线.md) | 数据落在哪、谁看得见、哪些没做到 | [远程访问](docs/远程访问.md) | 手机/外网连本机,两个开关默认关着 |
| [账号与部署运维](docs/账号与部署运维.md) | 开号、离职、找回密码、备份升级、带几家组织 | [代码架构](docs/代码架构.md) | 代码分几层、谁能引谁、新代码放哪 |
## 同一个作者的其他项目
- **[toolward](https://github.com/CatCatUncle/toolward)** —— 给 agent 用的技能 / MCP 连接器静态安检:37 条规则分六族,零运行时依赖。`npm i -g toolward` 装上,OpenWorkBuddy 自动把它当第二把尺子用,不装也完全不影响。同样是 PolyForm Noncommercial。
## 协议
**个人非商用、学校公益免费;公司使用(哪怕只在内部)和个人商用要买商业授权**,公司可先免费试用 30 天。购买商业授权请发邮件至 **[contact@aijentra.com](mailto:contact@aijentra.com)**,或添加微信 **`agi_smith`**(备注「OpenWorkBuddy 商业授权」)。
协议 [PolyForm Noncommercial 1.0.0](LICENSE),细则和没授权商用的后果见 [COMMERCIAL-LICENSE.md](COMMERCIAL-LICENSE.md)。部署配置、脚本、技能模板另按 MIT([清单](COMMERCIAL-LICENSE.md#按-mit-授权的部分));名称和图标不在授权范围内。
复制或分发本软件的任何部分,都要带上协议全文(或网址)和 [LICENSE](LICENSE) 开头所有以 `Required Notice:` 开头的行。
官方发布只有 GitHub 上的 CatCatUncle/openworkbuddy 及其 Releases。非官方渠道的安装包不由作者提供更新和支持,使用者的授权以 PolyForm Noncommercial 1.0.0 的条件和商业授权为准。
**KylinWork 等项目未经作者许可拿本项目代码二次开发,还擅自改了开源协议,作者已要求其全网下架。**
Copyright (c) 2026 开发者猫叔 (DeveloperCatUncle)
## 免责声明
独立开源项目,与腾讯及其 WorkBuddy 产品无任何关联,不含其代码或素材;对接的 IM 均走公开接口。借鉴来源见 [NOTICE.md](NOTICE.md)。有问题请开 [Issue](https://github.com/CatCatUncle/openworkbuddy/issues)。
## 支持这个项目
<p align="center">
<a href="https://github.com/CatCatUncle/openworkbuddy">
<img src="docs/images/star-guide.svg" width="640" alt="仓库右上角那颗 Star,点一下">
</a>
</p>
<p align="center">
<a href="https://github.com/CatCatUncle/openworkbuddy"><img src="https://img.shields.io/github/stars/CatCatUncle/openworkbuddy?style=for-the-badge&logo=github&label=Star%20this%20repo&color=5b5ff7" alt="Star this repo"></a>
</p>
<p align="center">
<sub>顺手把它转给一个天天手搓 PPT、周报、会议纪要的同事,比一百次曝光管用。</sub>
</p>
## 贡献者
感谢每一个动手改过这个项目的人。想加入他们:[参与贡献](CONTRIBUTING.md)。
<p align="center">
<a href="https://github.com/CatCatUncle/openworkbuddy/graphs/contributors">
<img src="https://contrib.rocks/image?repo=CatCatUncle/openworkbuddy" alt="OpenWorkBuddy contributors">
</a>
</p>
## Star 历史
<p align="center">
<a href="https://star-history.com/#CatCatUncle/openworkbuddy&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=CatCatUncle/openworkbuddy&type=Date&theme=dark">
<img src="https://api.star-history.com/svg?repos=CatCatUncle/openworkbuddy&type=Date" alt="Star History Chart" width="600">
</picture>
</a>
</p>