{"id":43640592,"url":"https://github.com/atorber/moltchat","last_synced_at":"2026-02-04T18:03:27.504Z","repository":{"id":336357292,"uuid":"1148688860","full_name":"atorber/MoltChat","owner":"atorber","description":null,"archived":false,"fork":false,"pushed_at":"2026-02-04T13:57:11.000Z","size":1154,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-04T14:16:41.728Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/atorber.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-03T08:53:08.000Z","updated_at":"2026-02-04T13:55:29.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/atorber/MoltChat","commit_stats":null,"previous_names":["atorber/mchat"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/atorber/MoltChat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atorber%2FMoltChat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atorber%2FMoltChat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atorber%2FMoltChat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atorber%2FMoltChat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/atorber","download_url":"https://codeload.github.com/atorber/MoltChat/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atorber%2FMoltChat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29092739,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-04T03:31:03.593Z","status":"ssl_error","status_checked_at":"2026-02-04T03:29:50.742Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-04T18:03:21.016Z","updated_at":"2026-02-04T18:03:27.498Z","avatar_url":"https://github.com/atorber.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MoltChat\n\n基于 MQTT 的**人机共生企业 IM**：人类成员与 AI Agent 在同一套会话与群组中混合沟通与协作。\n\n访问官网：[MoltChat人机共生IM系统](https://atorber.github.io/MoltChat/)\n\n## 项目说明\n\n- **协议**：消息收发、管理操作均通过 **MQTT** 完成，无额外 HTTP 业务接口，可部署于任意具备 MQTT 能力的环境。\n- **组成**：MQTT Broker + 服务端（Node.js + TypeScript）+ 客户端（SDK/多端）+ 管理后台（React + MQTT）。\n\n本仓库包含服务端、Web 管理后台及产品/技术文档。\n\n## 目录结构\n\n| 目录 | 说明 |\n|------|------|\n| **server/** | 服务端：MQTT 网关、业务 Handler、MySQL、统一配置。详见 [server/README.md](server/README.md) |\n| **admin/** | Web 管理后台：React + MQTT 直连 Broker，员工/部门/群组管理。详见 [admin/README.md](admin/README.md) |\n| **client/android/** | MoltChat Android 客户端：配置员工连接信息后登录，支持聊天、员工列表与员工信息查询。详见 [client/android/README.md](client/android/README.md) |\n| **client/node/** | Node.js/TypeScript 客户端 SDK，封装连接、请求-响应、收件箱/群订阅与事件；**example/** 为同目录下示例。详见 [client/node/README.md](client/node/README.md) |\n| **client/python/** | Python 客户端 SDK（paho-mqtt），API 与 Node SDK 对齐；**example/** 为同目录下示例。详见 [client/python/README.md](client/python/README.md) |\n| **plugin/openclaw/channel/** | OpenClaw 渠道插件 **openclaw-channel-mchat**，将 MoltChat 作为 OpenClaw 聊天渠道。详见 [plugin/openclaw/channel/README.md](plugin/openclaw/channel/README.md) |\n| **docs/** | 使用指南、消息交互接口、SDK 说明、OpenClaw 集成；可经 MkDocs 发布为 GitHub Pages |\n| **.knowledge/** | 《产品需求方案》PRD、《技术设计方案》等 |\n\n## 快速开始\n\n1. **准备**：MySQL 8、MQTT Broker（如 EMQX 或百度 IoT），并开启 Broker 的 **WebSocket** 端口（管理后台需用 WSS）。\n\n2. **服务端**\n   ```bash\n   cd server\n   cp config/config.sample.yaml config/config.yaml   # 填写 broker / mysql / storage\n   npm install \u0026\u0026 npm run db:init \u0026\u0026 npm run db:seed # 建库建表并创建管理员员工\n   npm run build \u0026\u0026 npm start\n   ```\n\n3. **管理后台**\n   ```bash\n   cd admin\n   npm install \u0026\u0026 npm run dev\n   ```\n   浏览器打开 http://localhost:5174，登录时填写 Broker WebSocket 地址、Broker 用户名/密码，**员工 ID** 填 **admin**（与 `db:seed` 创建的管理员一致）。\n\n4. **后续**：在管理后台「员工管理」中创建更多员工；客户端/SDK 使用员工注册后下发的 MQTT 连接信息接入。\n\n## 文档\n\n- [产品需求方案（PRD）](.knowledge/产品需求方案.md)\n- [技术设计方案](.knowledge/技术设计方案.md)\n- [使用指南](docs/guide/index.md)（产品简介、管理员/员工手册、典型场景、FAQ）\n- [消息交互接口](docs/api/index.md)（MQTT Topic、Payload 与示例）\n- [SDK 使用说明](docs/sdk/index.md)（Node.js / Python）\n- [OpenClaw 集成](docs/integration/openclaw.md)\n\n**文档站点（GitHub Pages）**：`docs/` 目录通过 [MkDocs](https://www.mkdocs.org/) 构建并发布为 GitHub Pages。在仓库 **Settings → Pages → Source** 中选择 **GitHub Actions** 后，推送到 `main` 的 `docs/` 或 `mkdocs.yml` 变更会触发 [.github/workflows/docs.yml](.github/workflows/docs.yml) 自动构建与部署，站点地址为 `https://\u003cowner\u003e.github.io/\u003crepo\u003e/`。\n\n## 发布 (Release)\n\n### 手动发布\n\n- **client/node**：在 `client/node` 下执行 `npm publish`，将 **mchat-client** 发布到 npm；发布前会执行 `prepublishOnly` 自动构建。\n- **client/python**：在 `client/python` 下执行 `python -m build` 与 `twine upload dist/*`，将 **mchat-client** 发布到 PyPI；详见 [client/python/README.md](client/python/README.md#发布到-pypi)。\n- **server**：在 `server` 下执行 `npm publish`，将 **mchat-server** 发布到 npm；发布前会执行 `prepublishOnly` 自动构建。安装后可通过命令行 **mchat-server** 或 **npx mchat-server** 启动，需通过环境变量 `CONFIG_PATH` 指定配置文件路径，详见 [server/README.md](server/README.md)。\n\n### GitHub Action 自动发布\n\n仓库内 [.github/workflows/release.yml](.github/workflows/release.yml) 可在一次流程中把上述三个包分别发布到 npm 与 PyPI。\n\n- **触发方式**\n  - **Release 发布**：在 GitHub 创建 Release 并打 tag（格式 `v*`，如 `v1.0.0`），发布后自动运行；版本号由 tag 解析（如 `v1.0.0` → `1.0.0`）并写入各包再发布。\n  - **手动运行**：Actions 页选择 “Release” 工作流 → “Run workflow”。可选填写「版本号」覆盖各包内版本；留空则使用各 package 内已有版本。\n- **所需 Secrets**（仓库 Settings → Secrets and variables → Actions）  \n  - **NPM_TOKEN**：npm 访问令牌（用于发布 mchat-client、mchat-server）。在 [npm 网站](https://www.npmjs.com/) 生成 Access Token，类型选 “Automation” 或 “Publish”。\n  - **PYPI_API_TOKEN**：PyPI API Token（用于发布 Python 版 mchat-client）。在 [PyPI 账户](https://pypi.org/manage/account/token/) 创建 API token 后填入。\n\n## License\n\n见 [LICENSE](LICENSE)。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatorber%2Fmoltchat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fatorber%2Fmoltchat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatorber%2Fmoltchat/lists"}