# nodeskclaw
**Repository Path**: mstitop/nodeskclaw
## Basic Information
- **Project Name**: nodeskclaw
- **Description**: nodeskclaw
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-04-08
- **Last Updated**: 2026-05-26
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
[English](README.md)
[Discord](https://discord.gg/y5NKqcP6eY)
[License](LICENSE)
# DeskClaw
**人与 AI,共同经营。** 开源的人机共营平台 -- 让人类的判断力与 AI 的执行力,共同经营每一份事业。
DeskClaw 是人与 AI 共同经营组织的平台。通过赛博办公室(Cyber Workspace),人与 AI 在同一个数字空间中作为经营伙伴协同运转 -- 人类提供战略判断,AI 提供不懈的执行力,共同创造单方无法实现的价值。
## 共同经营
我们相信,未来属于人与 AI 共同经营的组织 -- 不是主人与工具的关系,而是各自贡献不可替代价值的经营伙伴。
- **人类经营者**提供战略判断、创造性决策、价值观把控 -- 决定"做什么"和"为什么做"
- **AI 经营者**提供不知疲倦的执行力、模式识别、快速迭代 -- 把"怎么做"做到极致
- **赛博办公室**是共同经营的空间 -- 共享经营看板(黑板)、任务委派、实时协同,让人与 AI 的经营能力融为一体
## 核心概念
### 赛博办公室(Cyber Workspace)
人与 AI 共同经营的数字空间。六边形拓扑让经营团队的协作关系可视化;共享黑板是团队的经营看板;任务发布让人或 AI 都能将业务委派给最合适的经营伙伴。不是监控面板,而是经营发生的地方。
### 基因系统(Gene System)
对 AI 经营能力的投资。为 AI 装载新基因,就是为你的事业打开新的经营维度 -- 模块化能力包来自公共市场或企业私有库,按需组合,持续进化。经营什么样的事业,就装载什么样的基因。
### 弹性扩展(Elastic Scale)
经营规模的即时扩张。一键在 K8s 集群上部署 AI 经营伙伴。本地开发通过 `dev.sh` 快速启动。
## 亮点
- **赛博办公室** -- 六边形拓扑经营空间,人与 AI 共同经营、共享经营看板、委派业务
- **基因系统** -- 模块化能力投资:从公共或私有市场为 AI 装载新的经营维度
- **一键扩容** -- 端到端扩展经营规模,SSE 实时推送进度
- **多集群经营** -- 跨集群编排、健康巡检、弹性伸缩,覆盖整个经营版图
## 架构
```mermaid
flowchart LR
subgraph ops [" 经营者 "]
direction TB
Human["人类经营者
战略 · 判断"]
AI["AI 经营伙伴
执行 · 迭代"]
Human <-.->|共同经营| AI
end
ops --> channels
subgraph channels [" 经营入口 "]
direction TB
Portal["Web 门户"]
DingTalk["钉钉"]
OpenAPI["Open API"]
end
channels --> coopCore
subgraph coopCore [" 共营核心 "]
direction TB
subgraph cyberWS [" 赛博办公室 "]
direction LR
Topo["六边形拓扑"]
Board["共享黑板"]
Tasks["任务委派"]
end
subgraph geneSys [" 基因系统 "]
direction LR
Market["公共市场"]
EntLib["企业基因库"]
end
end
coopCore --> platform
subgraph platform [" 平台服务 "]
direction TB
Instance["实例生命周期"]
Cluster["多集群编排"]
Scale["弹性伸缩"]
LLMProxy["LLM 路由"]
ChPlugin["通道插件"]
end
platform --> infra
subgraph infra [" 基础设施 "]
direction TB
K8s["Kubernetes"]
Runtime["OpenClaw / Hermes"]
DB["PostgreSQL"]
LLMs["OpenAI · Anthropic · Gemini · ..."]
end
```
### 项目结构
```
DeskClaw/
├── nodeskclaw-portal/ # 用户门户 -- Vue 3 + Tailwind CSS
├── nodeskclaw-backend/ # API 服务 -- Python 3.12 + FastAPI + SQLAlchemy
├── nodeskclaw-llm-proxy/ # LLM 代理 -- Python + FastAPI
├── nodeskclaw-artifacts/ # Docker 镜像与部署制品
├── openclaw-channel-nodeskclaw/ # 赛博办公室经营通道插件
├── openclaw/ # DeskClaw 运行时源码(外部)
└── vibecraft/ # VibeCraft 源码(外部)
```
## 国际化
全栈国际化,覆盖 Portal 和 Backend 两端。
- 语言检测:`zh*` -> `zh-CN`,`en*` -> `en-US`,回退 `en-US`
- 错误展示:优先 `message_key` 本地翻译,缺失时回退 `message`
- 后端契约:`code` + `error_code` + `message_key` + `message` + `data`
## 快速开始
### Kubernetes 部署(推荐)
DeskClaw 以 Kubernetes 为主要部署方式,适用于 Staging 和 Production 环境。本地开发请使用 `dev.sh`(见下方)。
需要 K8s 集群、容器镜像仓库和外部 PostgreSQL 数据库。
#### 前置条件
| 依赖 | 说明 |
| ------------- | --------------------------------------------- |
| Kubernetes 集群 | 1.24+,需安装 Ingress Controller(如 ingress-nginx) |
| 容器镜像仓库 | 任意 Docker V2 仓库(Docker Hub、AWS ECR、GCR 等) |
| PostgreSQL | 外部数据库(如 AWS RDS、GCP Cloud SQL) |
| kubectl | 已配置集群访问权限 |
| Docker | 用于本地构建镜像 |
#### 1. 配置镜像仓库和集群上下文
```bash
# 创建 deploy/.env.local(已被 .gitignore 忽略)
cat > deploy/.env.local <<'EOF'
REGISTRY="your-registry.example.com/deskclaw"
KUBE_CONTEXT="your-kubectl-context"
EOF
# 登录容器镜像仓库
docker login your-registry.example.com
```
#### 2. 准备后端环境变量
```bash
cp nodeskclaw-backend/.env.example nodeskclaw-backend/.env
# 编辑 .env,填写 DATABASE_URL、JWT_SECRET、ENCRYPTION_KEY 等
# 最少需要配置:
# DATABASE_URL=postgresql+asyncpg://user:pass@your-rds:5432/nodeskclaw
# JWT_SECRET=<随机密钥>
# ENCRYPTION_KEY=<32字节base64密钥>
```
#### 3. 初始化集群
创建 Namespace、将 `.env` 上传为 K8s Secret、应用基础 Deployment + Service 清单:
```bash
./deploy/init.sh --staging --context # 默认 staging namespace
./deploy/init.sh --prod --context # 生产 namespace
```
#### 4. 发版并部署
```bash
./deploy/release.sh create v0.9.0
./deploy/deploy.sh deploy --tag v0.9.0 --staging --context
./deploy/deploy.sh deploy backend --tag v0.9.0 --staging --context
```
#### 5. 配置 Ingress
编辑 `deploy/k8s/ingress.yaml`,将 `example.com` 替换为实际域名,然后 apply:
```bash
kubectl --context -n apply -f deploy/k8s/ingress.yaml
```
Ingress 定义了两个域名入口(按需配置):
| Ingress | 默认域名 | 后端服务 |
| ------------ | ----------------------- | -------------------------------- |
| Portal(用户门户) | `console.example.com` | portal (80) + backend API (8000) |
| LLM Proxy | `llm-proxy.example.com` | llm-proxy (80) |
完整发版与部署工作流见 [deploy/README.md](deploy/README.md)。
### 本地开发
#### 前置条件
| 依赖 | 说明 |
| ------------------------------------------------- | --------------------------- |
| Python >= 3.12 + [uv](https://docs.astral.sh/uv/) | 后端运行时与包管理器 |
| Node.js >= 18 + npm | 前端运行时 |
| PostgreSQL | 数据库(或使用下方 `--docker-pg` 选项) |
#### 1. 配置
```bash
cd nodeskclaw-backend
cp .env.example .env
# 编辑 .env,填写 DATABASE_URL、JWT_SECRET 等
```
#### 2. 一键启动
```bash
./dev.sh # 启动所有服务(后端 + Portal)
./dev.sh --docker-pg # 用 Docker 启动 PostgreSQL(无需本地安装 PG)
./dev.sh --fresh # 强制重新安装所有依赖
```
脚本自动处理依赖安装,以带颜色的日志前缀启动所有服务,Ctrl+C 统一清理。`--docker-pg` 会自动启动一个本地 PostgreSQL 容器。
服务:backend (4510) + llm-proxy (4511) + portal (4517)
手动启动(备选)
**后端:**
```bash
cd nodeskclaw-backend
uv sync
uv run uvicorn app.main:app --reload --port 4510
```
API 地址 `http://localhost:4510` | Swagger 文档 `http://localhost:4510/docs` | 首次启动自动迁移数据库。
**前端(Portal):**
```bash
cd nodeskclaw-portal
npm install && npm run dev
```
Portal 地址 `http://localhost:4517` | `/api` 自动代理到后端。
#### 3. 登录
首次启动时,后端会在终端输出中直接打印初始管理员凭据:
```
========================================
超管初始账号
账号: admin
密码: <随机生成>
请登录后立即修改密码
========================================
```
打开 `http://localhost:4517`,使用打印的凭据登录。首次登录后会要求修改密码。
## 升级
### Kubernetes
K8s 发版和部署由独立脚本管理,标准流程为**先创建版本制品,再部署到 Staging,最后用同一个 tag 部署到 Production**。
**创建版本制品** -- 构建镜像、推送到 registry、打 git tag、创建 GitHub Pre-release:
```bash
./deploy/release.sh create v0.9.0
```
**Staging** -- 复用已发布镜像,更新 Staging namespace:
```bash
./deploy/deploy.sh deploy --tag v0.9.0 --staging --context
```
**Production** -- 部署同一镜像到 Production,然后将 Release 标记为正式版:
```bash
./deploy/deploy.sh deploy --tag v0.9.0 --prod --context
./deploy/release.sh finalize v0.9.0
```
数据库迁移在新的后端 Pod 启动时自动执行。完整 CLI 用法见 [deploy/README.md](deploy/README.md)。
### Docker Compose 部署
无需 Kubernetes 的快速自部署方式:
```bash
docker compose up -d # CE 模式(默认)
docker compose up -d --build # 重新构建镜像
```
### 构建镜像源加速
如果拉取依赖(PyPI、npm、Debian/Alpine 软件包)较慢,可使用镜像源预设加速构建:
```bash
# release.sh 发版
./deploy/release.sh create v0.9.0 --mirrors cn
# docker compose 构建
docker compose --env-file deploy/mirrors/cn.env up -d --build
# DeskClaw 引擎镜像构建
./nodeskclaw-artifacts/build.sh openclaw --mirrors cn
```
可用预设在 `deploy/mirrors/` 目录下,详见 [deploy/mirrors/README.md](deploy/mirrors/README.md)。
> **注意:** Docker Hub 基础镜像拉取(`FROM python:3.12-slim` 等)无法通过构建参数加速。请在 Docker daemon 中配置 [registry mirror](https://docs.docker.com/docker-hub/mirror/)。
### 升级注意事项
- **重大版本升级前请先备份数据库。**
- 查看 [GitHub Releases](https://github.com/NoDeskAI/nodeskclaw/releases) 了解版本变更和不兼容改动。
- 如果数据库此前未由 Alembic 管理,首次升级前可能需要执行一次 `alembic stamp head`,详见[后端 README](nodeskclaw-backend/README.md)。
## 文档
| | |
| --------------------------------------------- | ------------------ |
| [后端](nodeskclaw-backend/README.md) | API 中枢、目录结构、环境变量 |
| [用户门户](nodeskclaw-portal/README.md) | 经营者入口前端 |
| [构建制品](nodeskclaw-artifacts/README.md) | DeskClaw 镜像构建与部署清单 |
| [经营通道](openclaw-channel-nodeskclaw/README.md) | 赛博办公室通信基础设施 |
| [LLM 代理](nodeskclaw-llm-proxy/README.md) | AI 智力供给中枢 |
## 社区
- [Discord](https://discord.gg/y5NKqcP6eY) -- 加入讨论、提问、分享反馈
- [GitHub Issues](https://github.com/NoDeskAI/nodeskclaw/issues) -- Bug 报告与功能建议
- 微信 -- 扫描下方二维码加入开发者交流群;若微信群已满,请优先使用上方 Discord
## 贡献
欢迎提交 PR。详见 [CONTRIBUTING.md](CONTRIBUTING.md)。
## 许可证
[Apache License 2.0](LICENSE)