码桶

发现社区成员的开源项目

奶狗 / 公开

版本历史

5 次提交

提交详情

cabdcef
提交编号cabdcefd018a53f03ae5b568b33304775d72baa1
提交作者奶狗<codebucket@localhost>
提交时间2026-07-28 21:34:59 +0800
更新说明更新项目文件

文件变更 86 个文件

文件新增删除
.env.example+31-0
.gitignore+4-0
LICENSE+21-0
README.md+319-319
ecosystem.config.js+26-0
package-lock.json+3115-0
package.json+30-0
server.js+278-0
upload-test/calc-plugin.js+101-0
web/components.json+20-0
web/dist/assets/index-CLwUcXvc.css+1-0
web/dist/assets/index-fxOhqvHx.js+531-0
web/dist/favicon.ico二进制二进制
web/dist/favicon.svg+1-0
web/dist/index.html+17-0
web/index.html+15-0
web/package-lock.json+3561-0
web/package.json+47-0
web/public/favicon.ico二进制二进制
web/public/favicon.svg+1-0
web/src/App.tsx+100-0
web/src/components/DndPanel.tsx+239-0
web/src/components/DocsModal.tsx+75-0
web/src/components/ErrorBoundary.tsx+36-0
web/src/components/Markdown.tsx+40-0
web/src/components/McpConfig.tsx+146-0
web/src/components/PluginConfigPanel.tsx+197-0
web/src/components/PushConfig.tsx+242-0
web/src/components/RssConfig.tsx+106-0
web/src/components/RssFeedManager.tsx+119-0
web/src/components/SkillConfig.tsx+606-0
web/src/components/SupportCard.tsx+54-0
web/src/components/layout/AppShell.tsx+200-0
web/src/components/ui/alert-dialog.tsx+86-0
web/src/components/ui/alert.tsx+39-0
web/src/components/ui/avatar.tsx+37-0
web/src/components/ui/badge.tsx+31-0
web/src/components/ui/button.tsx+45-0
web/src/components/ui/card.tsx+46-0
web/src/components/ui/dialog.tsx+78-0
web/src/components/ui/dropdown-menu.tsx+67-0
web/src/components/ui/input.tsx+23-0
web/src/components/ui/label.tsx+17-0
web/src/components/ui/progress.tsx+24-0
web/src/components/ui/scroll-area.tsx+39-0
web/src/components/ui/select.tsx+81-0
web/src/components/ui/separator.tsx+19-0
web/src/components/ui/sheet.tsx+73-0
web/src/components/ui/skeleton.tsx+7-0
web/src/components/ui/sonner.tsx+21-0
web/src/components/ui/switch.tsx+24-0
web/src/components/ui/table.tsx+44-0
web/src/components/ui/tabs.tsx+46-0
web/src/components/ui/textarea.tsx+21-0
web/src/index.css+107-0
web/src/lib/api.ts+168-0
web/src/lib/auth.tsx+51-0
web/src/lib/logStore.ts+65-0
web/src/lib/site.tsx+69-0
web/src/lib/theme.tsx+61-0
web/src/lib/utils.ts+6-0
web/src/main.tsx+23-0
web/src/pages/AutomationPage.tsx+545-0
web/src/pages/Console.tsx+516-0
web/src/pages/LogConsole.tsx+133-0
web/src/pages/Login.tsx+91-0
web/src/pages/Market.tsx+564-0
web/src/pages/McpPage.tsx+125-0
web/src/pages/MemoryPanel.tsx+377-0
web/src/pages/NotFound.tsx+14-0
web/src/pages/Privacy.tsx+70-0
web/src/pages/Profile.tsx+347-0
web/src/pages/ProxySettings.tsx+141-0
web/src/pages/Settings.tsx+189-0
web/src/pages/SkillPage.tsx+70-0
web/src/pages/SmartPage.tsx+232-0
web/src/pages/SystemStats.tsx+479-0
web/src/pages/Terms.tsx+74-0
web/src/pages/UploadPlugin.tsx+167-0
web/src/vite-env.d.ts+1-0
web/tsconfig.json+23-0
web/tsconfig.node.json+12-0
web/vite.config.ts+25-0
worker.js+17-0
使用手册.md+190-0
开源说明.md+106-0

文件差异 逐行查看本次提交的修改

README.md+319-319
@@ -1,319 +1,319 @@
1-# 奶狗 WeBot
2-
3-> 一个跑在你自己服务器上的 **微信智能机器人**。基于微信 **iLink 开放平台**,内置 AI 智能助手、插件系统、技能 / MCP 工具、超级记忆、知识库、定时提醒等能力。**单用户、本地优先、数据自持**,开箱即用。
4-
5-[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6-[![Node](https://img.shields.io/badge/node-%3E%3D20-brightgreen.svg)](https://nodejs.org)
7-[![Platform](https://img.shields.io/badge/platform-Linux%20%7C%20macOS%20%7C%20Windows-blue.svg)]()
8-
9-
10-## 💡 这是什么
11-
12-奶狗 WeBot 是 [WeBot Plus](https://www.naigou.cn/contact/)(商业版)面向个人用户开源发布的精简版本,专注于「一个人 + 自己的微信号」的单机使用场景,未包含多用户、会员、积分、卡密售卖、后台管理等商业运营能力。
13-
14-你可以用它:
15-
16-- 把微信机器人接上大模型(OpenAI / 通义 / DeepSeek / 任意 OpenAI 兼容接口),让它替你聊天、查资料、写文案;
17-- 让 AI **自动记住你说过的账号、地址、纪念日、卡证**等(可随时查看 / 编辑 / 删除);
18-- 一句话**设置提醒、订阅 RSS、生成图片、转写语音、检索你的知识库**;
19-- 安装社区 / 自己写的**插件**扩展能力;连接 **MCP 服务器**、安装**技能包**;
20-- 所有数据存在本地 SQLite,不依赖任何外部服务,**隐私可控**。
21-
22-> 本版本所有高级能力(MCP / 技能 / 插件)**全部免费开放**,无会员门槛。
23-
24-
25-## ✨ 功能特性
26-
27-### 核心
28-- **微信机器人绑定** — 控制台扫码即绑,自带聊天控制台(可收发图文 / 语音 / 文件)
29-- **AI 智能助手(smart)** — 自然语言交互,无需指令前缀,自动识别意图
30-- **插件系统** — 官方插件一键安装 / 启用 / 禁用;支持上传自己的插件
31-- **技能 & MCP** — 安装技能包、连接 MCP 服务器,扩展 AI 工具调用(均免费)
32-- **用户记忆(Memory)** — 自动沉淀重要信息,Markdown 可读写,隐私优先、可关闭
33-- **知识库 / IMA** — 检索与写入知识库、笔记,智能问答
34-- **定时提醒 / RSS / 每日简报 / 关键词回复** — 消息自动化
35-- **AI 图片生成、语音转文字、邮件** 等实用工具
36-
37-### AI 智能助手细节
38-- 支持任意 **OpenAI 兼容** API(可自定义 endpoint、模型、Key)
39-- **Function Calling** 自动工具调用 + 多轮对话上下文(内存缓存 30 分钟)
40-- **微信语音自动转文字**:本地 Whisper(默认)或云端转写,识别后由 AI 理解回复
41-- **AI 图片生成**:独立图片接口(非对话接口),支持 base64 内联返回,国内服务器友好
42-- Token 用量统计与限额
43-
44-### 与 WeBot Plus(商业版,需商业授权)的区别
45-
46-| 能力 | 奶狗 WeBot(个人版) | WeBot Plus(商业版,需商业授权) |
47-|------|------|------|
48-| 适用场景 | 个人单机自用 | 团队 / 企业多账号运营 |
49-| 多用户 / 注册 | 单一管理员 | 支持 |
50-| 会员 / 积分 / 卡密体系 | 不提供 | 支持 |
51-| 管理后台 `/admin` | 不提供 | 提供 |
52-| 插件市场分享 / 挂售 | 仅自用安装 | 支持 |
53-| 登录方式 | 单一管理员(默认 `admin`/`admin123`) | 用户名 + 密码(多账号) |
54-| 智能助手模型 | 统一「AI 配置」全局模型 | 可逐机器人自定义 |
55-| 数据存储 | 内置 SQLite(零配置) | 可选 MySQL |
56-
57-
58-## 🧱 技术栈
59-
60-| 层级 | 技术 |
61-|------|------|
62-| 运行时 | Node.js ≥ 20 |
63-| Web 框架 | Express 4 |
64-| 数据库 | SQLite(`node:sqlite`,无需额外安装) |
65-| 消息通道 | 微信 iLink OpenAPI |
66-| 前端 | React 18 + Vite 5 + TypeScript + Tailwind CSS + shadcn/ui + Radix + sonner |
67-| 本地推理 | `@huggingface/transformers` + `onnxruntime-node`(Whisper 语音识别) |
68-| 配置 | dotenv |
69-
70-
71-## 🚀 快速开始
72-
73-### 环境要求
74-- **Node.js ≥ 20**(推荐 20 LTS 或 22)
75-- 一台能联网的普通机器(iLink 走云端通道,**无需公网 IP 或独立服务器**)
76-- 一台已安装 **微信** 的手机(用于扫码绑定机器人)
77-- (可选)一个 OpenAI 兼容的 AI 接口地址与 Key
78-
79-### 1. 获取代码
80-```bash
81-git clone https://github.com/你的用户名/ngbot-open.git
82-cd ngbot-open
83-```
84-
85-### 2. 安装依赖
86-```bash
87-npm install
88-```
89-> 仅服务端依赖。前端源码在 `web/`,已提供构建产物;如需自行改前端见下文「开发模式」。
90-
91-### 3. 配置(可选但推荐)
92-复制 `.env.example` 为 `.env` 并按需修改:
93-```bash
94-cp .env.example .env
95-```
96-最简配置只需改两项(详见「配置说明」):
97-```env
98-PORT=3000
99-SESSION_SECRET=请改成一段随机字符串
100-```
101-
102-### 4. 启动
103-```bash
104-node server.js
105-```
106-看到日志输出监听端口即启动成功。浏览器访问 `http://你的服务器IP:3000`。
107-
108-> 💡 生产环境可用 `pm2`:`pm2 start ecosystem.config.js`,项目已附带 `ecosystem.config.js`。
109-
110-### 5. 登录
111-首次打开会跳到登录页。默认账号:
112-- **账号**:`admin`
113-- **密码**:`admin123`
114-
115-登录后请到「个人中心」修改密码。
116-
117-### 6. 绑定你的微信机器人
118-1. 左侧进入「控制台」;
119-2. 点击「创建机器人」,会生成一张二维码;
120-3. 用**手机微信**扫码(需微信内已具备 iLink 通道)完成绑定;
121-4. 状态变为「已绑定」后,即可在微信里给机器人发消息,或直接在控制台聊天框测试。
122-
123-
124-## ⚙️ 配置说明
125-
126-配置文件为项目根目录 `.env`(不存在则使用默认值)。常用项:
127-
128-| 变量 | 默认 | 说明 |
129-|------|------|------|
130-| `PORT` | `3000` | 服务端口 |
131-| `SESSION_SECRET` | `change-me-to-random-string` | **务必改成随机串**,否则会话可被伪造 |
132-| `WORKER_KEY` | `ilink_worker_2024` | `/worker?key=` 轮询密钥;仅本地轮询用,暴露在公网时请修改 |
133-| `ILINK_BASE` | `https://ilinkai.weixin.qq.com` | iLink 通道地址,一般无需改 |
134-| `ILINK_CDN` | `https://novac2c.cdn.weixin.qq.com/c2c` | 媒体 CDN 地址 |
135-| `CHANNEL_VERSION` | `2.0.0` | 通道版本 |
136-| `BASE_URL` | 空 | 公网可访问的基础地址(用于回调 / webhook),本地可留空 |
137-| `SQLITE_PATH` | `data/app.db` | SQLite 数据库文件路径 |
138-
139-> 数据目录 `data/` 与日志目录 `logs/` 会在运行时自动创建,建议备份 `data/`。
140-
141-
142-## 🧭 使用指南
143-
144-### AI 配置(最重要)
145-左侧「**AI 配置**」是**全局唯一的 AI 入口**,智能助手直接复用它:
146-- **对话接口**:填写 OpenAI 兼容的 `API Base` / `API Key` / 模型名;
147-- **图片生成**:独立接口(与对话分开),填图片接口 Base / Key / 模型 / 尺寸;
148-- **语音识别**:选择本地 Whisper 或云端转写;
149-- 保存后即时生效,无需重启。
150-
151-### 智能助手(smart)
152-装好机器人后,直接在微信里对机器人说话即可,**不用加任何前缀**:
153-- 「帮我记一下我的快递单号是 SF123456」→ 写入记忆
154-- 「明天上午 9 点提醒我开会」→ 定时提醒
155-- 「今天有什么新闻 / 来份早报」→ 每日简报
156-- 「画一只在月亮上睡觉的猫」→ AI 图片生成
157-- 「我的记忆 / 导出记忆 / 关闭记忆」→ 记忆管理
158-
159-### 插件
160-左侧「**插件市场**」→「系统插件」一键安装 / 启用;「用户插件」可上传自己的 `.js` 插件(仅你自己可用)。每个插件可调独立配置。
161-
162-### 技能 & MCP
163-- **技能**:安装技能包(系统提示扩展 / 自定义工具 / 对话模板),增强 AI 行为。
164-- **MCP**:填写 MCP 服务器地址,工具会被自动发现并暴露给 AI 调用。
165-
166-### 用户记忆(Memory)
167-「用户记忆」页可查看 / 在线编辑 / 下载 / 清除 AI 为你沉淀的信息。默认开启、隐私优先,可随时关闭。
168-
169-### 控制台
170-「控制台」即聊天面板:可像微信一样收发消息,支持发送图片 / 文件 / 语音 / 视频,并实时显示插件处理事件日志,方便调试。
171-
172-### 个人中心
173-修改登录密码、查看账号信息。
174-
175-
176-## 🔌 插件开发(简述)
177-
178-插件是 `plugins/<id>/index.js`,导出 `meta` 与 `onMessage(msg, ctx)`:
179-
180-```js
181-module.exports = {
182- meta: {
183- id: 'hello',
184- name: '示例插件',
185- description: '收到 hi 回复你好',
186- version: '1.0.0',
187- builtin: true,
188- },
189- async onMessage(msg, ctx) {
190- if (msg.content === 'hi') await ctx.sendText('你好呀!')
191- },
192-}
193-```
194-
195-- `ctx.sendText(text)` / `ctx.sendMedia(path, mediaType, filename, playtime)` 发送消息;
196-- 用户配置通过 `meta.settingsSchema` 声明,前端自动生成表单;
197-- 改完插件需重启 `server.js` 生效。
198-
199-完整文档见 `docs/插件开发指南.md`(控制台「文档」可在线查看)。
200-
201-
202-## 🗂️ 目录结构
203-
204-```
205-ngbot-open/
206-├── server.js # 后端入口(Express + 静态托管 + SPA fallback)
207-├── config/ # 配置加载(合并 .env)
208-├── lib/ # 核心库:auth / db / plugins / stt ...
209-├── routes/ # HTTP 路由(api / skill / market ...)
210-├── plugins/ # 内置插件(smart / mcp / skill / memory / ima-knowledge ...)
211-├── services/ # worker 轮询、消息处理
212-├── web/ # 前端(React + Vite),构建产物在 web/dist
213-│ ├── src/ # 源码
214-│ └── dist/ # 构建产物(已由 npm run build 生成)
215-├── docs/ # 使用 / 插件开发文档
216-├── data/ # SQLite 数据库(运行时生成,建议备份)
217-├── logs/ # 运行日志(运行时生成)
218-├── .env.example # 配置样例
219-└── package.json
220-```
221-
222-
223-## 🛠️ 开发模式
224-
225-改前端时需要重新构建:
226-```bash
227-cd web
228-npm install
229-npm run dev # 本地开发服务器 :5173,代理到后端
230-# 或仅构建产物:
231-npm run build # 输出到 web/dist,由 server.js 托管
232-```
233-> ⚠️ 改了 `web/src` 后**必须** `npm run build`,否则 `server.js` 仍提供旧的 `web/dist`。
234-
235-
236-## 🚢 部署建议
237-
238-- **反向代理**:用 Nginx / Caddy 将域名反代到 `http://127.0.0.1:3000`,并配置 HTTPS;此时设 `BASE_URL=https://你的域名`。
239-- **进程守护**:`pm2 start ecosystem.config.js`(name `naigou-webot`)。
240-- **安全**:务必修改 `SESSION_SECRET`、登录密码;如对外暴露 `WORKER_KEY` 请一并修改。
241-- **备份**:定期备份 `data/app.db`。
242-
243-
244-## ❓ 常见问题
245-
246-**Q:机器人收不到消息 / 消息不回复?**
247-A:确认控制台机器人状态为「已绑定」;检查服务端日志 `logs/` 是否有 iLink 拉取错误。
248-
249-**Q:改了 AI Key 不生效?**
250-A:在「AI 配置」保存即生效(智能助手复用全局配置)。若仍无效,确认接口为 OpenAI 兼容且模型名正确。
251-
252-**Q:语音消息没反应?**
253-A:默认本地 Whisper 首次会下载模型(缓存于 `data/stt-models`,可能较慢);也可在「AI 配置」切到云端转写(需接口支持 `/v1/audio/transcriptions`)。
254-
255-**Q:能多用户吗?**
256-A:奶狗 WeBot 为单管理员设计,无多用户 / 会员体系。需要多人或商业授权,请使用 WeBot Plus(商业版)。
257-
258-
259-## 📄 许可证
260-
261-[MIT](LICENSE) — 可自由使用、修改、分发,但**不提供任何担保**。
262-
263-
264-## ☕ 致谢
265-
266-本项目基于 WeBot Plus(商业版)裁剪而来,感谢所有插件 / 技能的贡献者。
267-
268-
269-## 💖 赞助支持
270-
271-如果这个项目对你有帮助,欢迎扫码赞助我们 ☕ 你的支持是项目持续维护与迭代的动力!
272-
273-![赞助二维码](https://cdn.naigou.cn/cdn/naigou/2026/02/20260223143808263374.webp)
274-
275-> 赞助后可在 Issues 留言,或加入交流群获取优先支持。
276-
277-
278-## 📦 主要依赖
279-
280-**后端(Node.js)**
281-- `express` · `express-session` · `session-file-store` — Web 服务与会话管理
282-- `cors` · `dotenv` · `multer` · `adm-zip` — 基础设施
283-- `axios` · `http-proxy-agent` · `socks-proxy-agent` — HTTP 请求与代理
284-- `bcryptjs` — 密码哈希
285-- `nodemailer` · `imapflow` · `mailparser` — 邮件收发与解析
286-- `silk-wasm` — 微信语音 silk 格式转码
287-- `@huggingface/transformers` · `onnxruntime-node` — 本地 Whisper 语音识别
288-
289-**前端**:React 18 · Vite 5 · TypeScript · Tailwind CSS · shadcn/ui · Radix UI · sonner(详见上文「🧱 技术栈」)
290-
291-## 🔗 参考项目与致谢
292-
293-- [微信 iLink 开放平台](https://ilinkai.weixin.qq.com) — 机器人绑定与消息通道能力来源
294-- **WeBot Plus(商业版 / 多人版)** — 本项目的完整版前身,个人版由其裁剪而来([商业授权](https://www.naigou.cn/contact/))
295-- 前端基于 [shadcn/ui](https://ui.shadcn.com) · [Radix UI](https://www.radix-ui.com) · [Tailwind CSS](https://tailwindcss.com) · [Vite](https://vitejs.dev) 等开源生态构建
296-- 本地语音识别基于 [Hugging Face transformers.js](https://huggingface.co/docs/transformers.js) 与 [ONNX Runtime](https://onnxruntime.ai)
297-
298-
299-## 📚 更多文档
300-
301-- [使用手册](./使用手册.md) — 从安装部署到各功能上手的逐步指南
302-- [开源说明](./开源说明.md) — 许可、开源范围、与商业版关系、贡献与免责
303-- 插件开发:`docs/插件开发指南.md`(控制台「文档」可在线查看)
1+# 奶狗 WeBot
2+
3+> 一个跑在你自己服务器上的 **微信智能机器人**。基于微信 **iLink 开放平台**,内置 AI 智能助手、插件系统、技能 / MCP 工具、超级记忆、知识库、定时提醒等能力。**单用户、本地优先、数据自持**,开箱即用。
4+
5+[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6+[![Node](https://img.shields.io/badge/node-%3E%3D20-brightgreen.svg)](https://nodejs.org)
7+[![Platform](https://img.shields.io/badge/platform-Linux%20%7C%20macOS%20%7C%20Windows-blue.svg)]()
8+
9+---
10+
11+## 💡 这是什么
12+
13+奶狗 WeBot 是 [WeBot Plus](https://www.naigou.cn/contact/)(商业版)面向个人用户开源发布的精简版本,专注于「一个人 + 自己的微信号」的单机使用场景,未包含多用户、会员、积分、卡密售卖、后台管理等商业运营能力。
14+
15+你可以用它:
16+
17+- 把微信机器人接上大模型(OpenAI / 通义 / DeepSeek / 任意 OpenAI 兼容接口),让它替你聊天、查资料、写文案;
18+- 让 AI **自动记住你说过的账号、地址、纪念日、卡证**等(可随时查看 / 编辑 / 删除);
19+- 一句话**设置提醒、订阅 RSS、生成图片、转写语音、检索你的知识库**;
20+- 安装社区 / 自己写的**插件**扩展能力;连接 **MCP 服务器**、安装**技能包**;
21+- 所有数据存在本地 SQLite,不依赖任何外部服务,**隐私可控**。
22+
23+> 本版本所有高级能力(MCP / 技能 / 插件)**全部免费开放**,无会员门槛。
24+
25+---
26+
27+## ✨ 功能特性
28+
29+### 核心
30+- **微信机器人绑定** — 控制台扫码即绑,自带聊天控制台(可收发图文 / 语音 / 文件)
31+- **AI 智能助手(smart)** — 自然语言交互,无需指令前缀,自动识别意图
32+- **插件系统** — 官方插件一键安装 / 启用 / 禁用;支持上传自己的插件
33+- **技能 & MCP** — 安装技能包、连接 MCP 服务器,扩展 AI 工具调用(均免费)
34+- **用户记忆(Memory)** — 自动沉淀重要信息,Markdown 可读写,隐私优先、可关闭
35+- **知识库 / IMA** — 检索与写入知识库、笔记,智能问答
36+- **定时提醒 / RSS / 每日简报 / 关键词回复** — 消息自动化
37+- **AI 图片生成、语音转文字、邮件** 等实用工具
38+
39+### AI 智能助手细节
40+- 支持任意 **OpenAI 兼容** API(可自定义 endpoint、模型、Key)
41+- **Function Calling** 自动工具调用 + 多轮对话上下文(内存缓存 30 分钟)
42+- **微信语音自动转文字**:本地 Whisper(默认)或云端转写,识别后由 AI 理解回复
43+- **AI 图片生成**:独立图片接口(非对话接口),支持 base64 内联返回,国内服务器友好
44+- Token 用量统计与限额
45+
46+### 与 WeBot Plus(商业版,需商业授权)的区别
47+
48+| 能力 | 奶狗 WeBot(个人版) | WeBot Plus(商业版,需商业授权) |
49+|------|------|------|
50+| 适用场景 | 个人单机自用 | 团队 / 企业多账号运营 |
51+| 多用户 / 注册 | 单一管理员 | 支持 |
52+| 会员 / 积分 / 卡密体系 | 不提供 | 支持 |
53+| 管理后台 `/admin` | 不提供 | 提供 |
54+| 插件市场分享 / 挂售 | 仅自用安装 | 支持 |
55+| 登录方式 | 单一管理员(默认 `admin`/`admin123`) | 用户名 + 密码(多账号) |
56+| 智能助手模型 | 统一「AI 配置」全局模型 | 可逐机器人自定义 |
57+| 数据存储 | 内置 SQLite(零配置) | 可选 MySQL |
58+
59+---
60+
61+## 🧱 技术栈
62+
63+| 层级 | 技术 |
64+|------|------|
65+| 运行时 | Node.js ≥ 20 |
66+| Web 框架 | Express 4 |
67+| 数据库 | SQLite(`node:sqlite`,无需额外安装) |
68+| 消息通道 | 微信 iLink OpenAPI |
69+| 前端 | React 18 + Vite 5 + TypeScript + Tailwind CSS + shadcn/ui + Radix + sonner |
70+| 本地推理 | `@huggingface/transformers` + `onnxruntime-node`(Whisper 语音识别) |
71+| 配置 | dotenv |
72+
73+---
74+
75+## 🚀 快速开始
76+
77+### 环境要求
78+- **Node.js ≥ 20**(推荐 20 LTS 或 22)
79+- 一台能联网的普通机器(iLink 走云端通道,**无需公网 IP 或独立服务器**)
80+- 一台已安装 **微信** 的手机(用于扫码绑定机器人)
81+- (可选)一个 OpenAI 兼容的 AI 接口地址与 Key
82+
83+### 1. 获取代码
84+```bash
85+git clone https://github.com/你的用户名/ngbot-open.git
86+cd ngbot-open
87+```
88+
89+### 2. 安装依赖
90+```bash
91+npm install
92+```
93+> 仅服务端依赖。前端源码在 `web/`,已提供构建产物;如需自行改前端见下文「开发模式」。
94+
95+### 3. 配置(可选但推荐)
96+复制 `.env.example` 为 `.env` 并按需修改:
97+```bash
98+cp .env.example .env
99+```
100+最简配置只需改两项(详见「配置说明」):
101+```env
102+PORT=3000
103+SESSION_SECRET=请改成一段随机字符串
104+```
105+
106+### 4. 启动
107+```bash
108+node server.js
109+```
110+看到日志输出监听端口即启动成功。浏览器访问 `http://你的服务器IP:3000`。
111+
112+> 💡 生产环境可用 `pm2`:`pm2 start ecosystem.config.js`,项目已附带 `ecosystem.config.js`。
113+
114+### 5. 登录
115+首次打开会跳到登录页。默认账号:
116+- **账号**:`admin`
117+- **密码**:`admin123`
118+
119+登录后请到「个人中心」修改密码。
120+
121+### 6. 绑定你的微信机器人
122+1. 左侧进入「控制台」;
123+2. 点击「创建机器人」,会生成一张二维码;
124+3. 用**手机微信**扫码(需微信内已具备 iLink 通道)完成绑定;
125+4. 状态变为「已绑定」后,即可在微信里给机器人发消息,或直接在控制台聊天框测试。
126+
127+---
128+
129+## ⚙️ 配置说明
130+
131+配置文件为项目根目录 `.env`(不存在则使用默认值)。常用项:
132+
133+| 变量 | 默认 | 说明 |
134+|------|------|------|
135+| `PORT` | `3000` | 服务端口 |
136+| `SESSION_SECRET` | `change-me-to-random-string` | **务必改成随机串**,否则会话可被伪造 |
137+| `WORKER_KEY` | `ilink_worker_2024` | `/worker?key=` 轮询密钥;仅本地轮询用,暴露在公网时请修改 |
138+| `ILINK_BASE` | `https://ilinkai.weixin.qq.com` | iLink 通道地址,一般无需改 |
139+| `ILINK_CDN` | `https://novac2c.cdn.weixin.qq.com/c2c` | 媒体 CDN 地址 |
140+| `CHANNEL_VERSION` | `2.0.0` | 通道版本 |
141+| `BASE_URL` | 空 | 公网可访问的基础地址(用于回调 / webhook),本地可留空 |
142+| `SQLITE_PATH` | `data/app.db` | SQLite 数据库文件路径 |
143+
144+> 数据目录 `data/` 与日志目录 `logs/` 会在运行时自动创建,建议备份 `data/`。
145+
146+---
147+
148+## 🧭 使用指南
149+
150+### AI 配置(最重要)
151+左侧「**AI 配置**」是**全局唯一的 AI 入口**,智能助手直接复用它:
152+- **对话接口**:填写 OpenAI 兼容的 `API Base` / `API Key` / 模型名;
153+- **图片生成**:独立接口(与对话分开),填图片接口 Base / Key / 模型 / 尺寸;
154+- **语音识别**:选择本地 Whisper 或云端转写;
155+- 保存后即时生效,无需重启。
156+
157+### 智能助手(smart)
158+装好机器人后,直接在微信里对机器人说话即可,**不用加任何前缀**:
159+- 「帮我记一下我的快递单号是 SF123456」→ 写入记忆
160+- 「明天上午 9 点提醒我开会」→ 定时提醒
161+- 「今天有什么新闻 / 来份早报」→ 每日简报
162+- 「画一只在月亮上睡觉的猫」→ AI 图片生成
163+- 「我的记忆 / 导出记忆 / 关闭记忆」→ 记忆管理
164+
165+### 插件
166+左侧「**插件市场**」→「系统插件」一键安装 / 启用;「用户插件」可上传自己的 `.js` 插件(仅你自己可用)。每个插件可调独立配置。
167+
168+### 技能 & MCP
169+- **技能**:安装技能包(系统提示扩展 / 自定义工具 / 对话模板),增强 AI 行为。
170+- **MCP**:填写 MCP 服务器地址,工具会被自动发现并暴露给 AI 调用。
171+
172+### 用户记忆(Memory)
173+「用户记忆」页可查看 / 在线编辑 / 下载 / 清除 AI 为你沉淀的信息。默认开启、隐私优先,可随时关闭。
174+
175+### 控制台
176+「控制台」即聊天面板:可像微信一样收发消息,支持发送图片 / 文件 / 语音 / 视频,并实时显示插件处理事件日志,方便调试。
177+
178+### 个人中心
179+修改登录密码、查看账号信息。
180+
181+---
182+
183+## 🔌 插件开发(简述)
184+
185+插件是 `plugins/<id>/index.js`,导出 `meta` 与 `onMessage(msg, ctx)`:
186+
187+```js
188+module.exports = {
189+ meta: {
190+ id: 'hello',
191+ name: '示例插件',
192+ description: '收到 hi 回复你好',
193+ version: '1.0.0',
194+ builtin: true,
195+ },
196+ async onMessage(msg, ctx) {
197+ if (msg.content === 'hi') await ctx.sendText('你好呀!')
198+ },
199+}
200+```
201+
202+- `ctx.sendText(text)` / `ctx.sendMedia(path, mediaType, filename, playtime)` 发送消息;
203+- 用户配置通过 `meta.settingsSchema` 声明,前端自动生成表单;
204+- 改完插件需重启 `server.js` 生效。
205+
206+完整文档见 `docs/插件开发指南.md`(控制台「文档」可在线查看)。
207+
208+---
209+
210+## 🗂️ 目录结构
211+
212+```
213+ngbot-open/
214+├── server.js # 后端入口(Express + 静态托管 + SPA fallback)
215+├── config/ # 配置加载(合并 .env)
216+├── lib/ # 核心库:auth / db / plugins / stt ...
217+├── routes/ # HTTP 路由(api / skill / market ...)
218+├── plugins/ # 内置插件(smart / mcp / skill / memory / ima-knowledge ...)
219+├── services/ # worker 轮询、消息处理
220+├── web/ # 前端(React + Vite),构建产物在 web/dist
221+│ ├── src/ # 源码
222+│ └── dist/ # 构建产物(已由 npm run build 生成)
223+├── docs/ # 使用 / 插件开发文档
224+├── data/ # SQLite 数据库(运行时生成,建议备份)
225+├── logs/ # 运行日志(运行时生成)
226+├── .env.example # 配置样例
227+└── package.json
228+```
229+
230+---
231+
232+## 🛠️ 开发模式
233+
234+改前端时需要重新构建:
235+```bash
236+cd web
237+npm install
238+npm run dev # 本地开发服务器 :5173,代理到后端
239+# 或仅构建产物:
240+npm run build # 输出到 web/dist,由 server.js 托管
241+```
242+> ⚠️ 改了 `web/src` 后**必须** `npm run build`,否则 `server.js` 仍提供旧的 `web/dist`。
243+
244+---
245+
246+## 🚢 部署建议
247+
248+- **反向代理**:用 Nginx / Caddy 将域名反代到 `http://127.0.0.1:3000`,并配置 HTTPS;此时设 `BASE_URL=https://你的域名`。
249+- **进程守护**:`pm2 start ecosystem.config.js`(name `naigou-webot`)。
250+- **安全**:务必修改 `SESSION_SECRET`、登录密码;如对外暴露 `WORKER_KEY` 请一并修改。
251+- **备份**:定期备份 `data/app.db`。
252+
253+---
254+
255+## ❓ 常见问题
256+
257+**Q:机器人收不到消息 / 消息不回复?**
258+A:确认控制台机器人状态为「已绑定」;检查服务端日志 `logs/` 是否有 iLink 拉取错误。
259+
260+**Q:改了 AI Key 不生效?**
261+A:在「AI 配置」保存即生效(智能助手复用全局配置)。若仍无效,确认接口为 OpenAI 兼容且模型名正确。
262+
263+**Q:语音消息没反应?**
264+A:默认本地 Whisper 首次会下载模型(缓存于 `data/stt-models`,可能较慢);也可在「AI 配置」切到云端转写(需接口支持 `/v1/audio/transcriptions`)。
265+
266+**Q:能多用户吗?**
267+A:奶狗 WeBot 为单管理员设计,无多用户 / 会员体系。需要多人或商业授权,请使用 WeBot Plus(商业版)。
268+
269+---
270+
271+## 📄 许可证
272+
273+[MIT](LICENSE) — 可自由使用、修改、分发,但**不提供任何担保**。
274+
275+---
276+
277+## ☕ 致谢
278+
279+本项目基于 WeBot Plus(商业版)裁剪而来,感谢所有插件 / 技能的贡献者。
280+
281+---
282+
283+## 💖 赞助支持
284+
285+如果这个项目对你有帮助,欢迎扫码赞助我们 ☕ 你的支持是项目持续维护与迭代的动力!
286+
287+![赞助二维码](https://cdn.naigou.cn/cdn/naigou/2026/02/20260223143808263374.webp)
288+
289+> 赞助后可在 Issues 留言,或加入交流群获取优先支持。
290+
291+---
292+
293+## 📦 主要依赖
294+
295+**后端(Node.js)**
296+- `express` · `express-session` · `session-file-store` — Web 服务与会话管理
297+- `cors` · `dotenv` · `multer` · `adm-zip` — 基础设施
298+- `axios` · `http-proxy-agent` · `socks-proxy-agent` — HTTP 请求与代理
299+- `bcryptjs` — 密码哈希
300+- `nodemailer` · `imapflow` · `mailparser` — 邮件收发与解析
301+- `silk-wasm` — 微信语音 silk 格式转码
302+- `@huggingface/transformers` · `onnxruntime-node` — 本地 Whisper 语音识别
303+
304+**前端**:React 18 · Vite 5 · TypeScript · Tailwind CSS · shadcn/ui · Radix UI · sonner(详见上文「🧱 技术栈」)
305+
306+## 🔗 参考项目与致谢
307+
308+- [微信 iLink 开放平台](https://ilinkai.weixin.qq.com) — 机器人绑定与消息通道能力来源
309+- **WeBot Plus(商业版 / 多人版)** — 本项目的完整版前身,个人版由其裁剪而来([商业授权](https://www.naigou.cn/contact/))
310+- 前端基于 [shadcn/ui](https://ui.shadcn.com) · [Radix UI](https://www.radix-ui.com) · [Tailwind CSS](https://tailwindcss.com) · [Vite](https://vitejs.dev) 等开源生态构建
311+- 本地语音识别基于 [Hugging Face transformers.js](https://huggingface.co/docs/transformers.js) 与 [ONNX Runtime](https://onnxruntime.ai)
312+
313+---
314+
315+## 📚 更多文档
316+
317+- [使用手册](./使用手册.md) — 从安装部署到各功能上手的逐步指南
318+- [开源说明](./开源说明.md) — 许可、开源范围、与商业版关系、贡献与免责
319+- 插件开发:`docs/插件开发指南.md`(控制台「文档」可在线查看)