README.zh-CN.md
Rama main · réplica de lectura del repositorio original.
# kageos
语言: [English](README.md) | **简体中文**
后续翻译可以按 `README.<locale>.md` 的形式继续添加。
**面向个人、团队和企业的 AI 原生服务平台:业务目录、无人值守 Agent、类型化函数、自托管运行时和平台治理。**
**源码公开 · 可自托管 · BSL 1.1 · 发布三年后转 Apache-2.0**
kageos 把个人和业务能力变成开箱即用的目录。目录不是静态模板,也不是一次性 prompt 生成结果;它可以包含 Form、Table、Chart、Docs、Function、代码、数据模型、运行手册、定时任务、消息和权限。人可以直接打开使用,AI 可以按 schema 调用,无人值守 Agent 可以按计划运行,平台可以统一治理、审计、版本化、安装、导出和复用。
kageos 由[恰研智能](https://qiayan.ai)创建。核心平台源码公开、可自托管;当前采用 Business Source License 1.1,发布三年后转 Apache License 2.0。准确授权条款见 [LICENSE](LICENSE) 和 [LICENSE_FAQ.md](LICENSE_FAQ.md)。
## 为什么做 kageos
AI 已经能很快生成工具,但更快的工具生产也会带来新的混乱:孤立页面、脚本、prompt、自动化、数据表和 Agent 越来越多,彼此看不见,不能稳定调用,也不能变成长期可治理的资产。
kageos 走另一条路:
- 从**开箱即用的目录**开始,而不是从空白 prompt 开始。
- 让每个能力同时**人可用、AI 可调**。
- 用**类型化函数 schema**做契约,而不是让模型临场猜字段和类型。
- 让**无人值守 Agent**按计划巡检、分析、执行工具并通知用户。
- 把能力挂到 **Service Tree**,让权限、日志、trace、消息、定时任务和版本都有统一坐标。
- 保持运行时**可自托管**,让个人数据、团队流程和企业系统可以跑在私有 namespace 里。
kageos 的目标不是做一个更便宜的 AI app generator,而是让有价值的能力可以被安装、运行、组合、审计、复用和发布。
## 核心概念
| 概念 | 在 kageos 里的含义 |
| --- | --- |
| 目录 | 挂在 Service Tree 上的可运行能力单元,可以包含 UI、函数、文档、数据、定时任务和运行上下文。 |
| Service Tree | 目录、函数、文档、消息、定时任务、权限和操作日志共享的治理坐标系。 |
| 人机双入口 | 同一个 Form/Table/Chart 既能被人在 Web UI 里使用,也能被 AI 工作台通过 schema 调用。 |
| 类型化函数 | 函数输入输出由代码和 SDK 元数据定义,不依赖自然语言猜测。 |
| 无人值守 Agent | 定时的 `agent.session` 任务会创建工作台会话,在用户不在线时搜索、读目录、调用工具、执行函数、写结果并发通知。 |
| 能力包 | 可移植的 `capability.bundle.v1`,用于导出、安装、内置种子目录,后续也用于 Hub 发布。 |
## 当前已具备的能力
- **Service Tree**:组织工作空间、目录、函数和文档。
- **Form/Table/Chart/Docs**:由 Vue 前端渲染,由 Go SDK schema 驱动。
- **AI 工作台会话**:支持工具调用、PRD 草拟、代码编辑、构建修复、运行验证和持久化会话历史。
- **运行时工具**:支持 `run_form_submit`、`run_table_search`、表格写入、`run_chart_query`、Python 执行、通知和定时任务管理。
- **无人值守自动化**:通过 `timer-scheduler` 支持固定 `app.function` 任务和灵活的 `agent.session` 任务。
- **站内信和通知**:通过 `message-server`、SDK `ctx.SendNotification` 和 Agent `send_notification` 工具落库和展示。
- **操作日志、trace、source ref 和资源路径**:用于审计和排障。
- **目录能力包导入导出**:用于在 namespace 间迁移目录,也用于内置系统工具种子。
- **可自托管运行时**:基于 Go、Vue 3、MySQL、NATS、MinIO,以及 Podman 或 Docker。
## 产品状态
| 领域 | 状态 |
| --- | --- |
| 核心平台 | 已在主线:Service Tree、权限、操作日志、AI 工作台、Form/Table/Chart/Docs、站内信、函数任务、Agent 任务、应用运行时。 |
| 目录生命周期 | 已在主线:私有 namespace、生成应用运行时、能力包导入导出、内置种子目录。 |
| Hub | 建设中:公共目录市场、在线试用、发布链路、企业私有 Hub。 |
| 后续工作流层 | 路线储备:workflow 图、`workflow.run`、通用审批、讨论、评分、外部通知渠道和备份控制面。 |
## kageos 如何运转
```mermaid
flowchart LR
hub["Hub directory"] --> namespace["Private namespace"]
namespace --> tree["Governed Service Tree"]
tree --> human["Human UI"]
tree --> function["Typed functions"]
tree --> schedule["Scheduled automation"]
tree --> agent["AI workstation / unattended agent"]
function --> runtime["app-server + app-runtime + SDK"]
schedule --> runtime
agent --> runtime
runtime --> logs["Operation logs / trace / messages"]
```
## 架构
kageos 是 Vue 前端、Go 平台服务群和用户应用容器运行时组成的平台:
- `api-gateway` 负责认证后的 HTTP 流量转发。
- `app-server` 负责工作区 API、Service Tree 元数据、权限、操作日志、函数元数据和应用调用。
- `agent-server` 负责工作台会话、角色、工具、prompt、LLM 编排和定时 Agent worker。
- `app-runtime` 负责写入 namespace 文件、构建 Go 应用、管理版本并启动用户应用容器。
- `timer-scheduler` 负责定时任务状态、执行记录、租约、heartbeat、恢复和 outbox。
- `message-server` 负责站内信、线程、未读状态和通知命令。
- `kageos-sdk/agent-app` 是生成工作空间应用使用的公开 Go SDK。
完整架构见 [docs/current-architecture.md](docs/current-architecture.md) 和 [docs/kageos-blueprint.md](docs/kageos-blueprint.md)。
## 仓库结构
| 路径 | 作用 |
| --- | --- |
| `core/agent-server` | AI 工作台、工具调用、PRD/代码流程、定时 Agent 执行 |
| `core/app-server` | 工作区 API、Service Tree、权限、操作日志、函数元数据、应用调用 |
| `core/app-runtime` | namespace 文件写入、Go 构建、应用版本元数据、容器生命周期 |
| `core/app-storage` | 上传、下载、对象元数据、预签名 URL |
| `core/api-gateway` | API 网关、认证转发、静态前端入口 |
| `core/hr-server` | 登录、用户、部门、系统设置 |
| `core/connector-server` | OAuth provider 绑定和连接器代理 |
| `core/timer-scheduler` | 定时任务、执行记录、租约、重试/outbox |
| `core/message-server` | 站内信、线程、未读状态、通知命令消费 |
| `core/app-server/system-seed` | 内置 `capability.bundle.v1` 种子目录 |
| `pkg/scheduledsdk` | 定时任务 client 和 worker 契约 |
| `web` | Vue 3 前端 |
| `deploy` | 本地开发、生产部署、AIO、镜像和安全部署资料 |
| `docs` | 产品思考、架构文档、SOP 和治理文档 |
| `skills` | 随项目共同维护的五个 Codex/Claude Code Skill 唯一源码 |
| `plugins/kageos` | 生成的可安装 kageos 套件;不要直接修改其中的 Skill 副本 |
## 快速开始
前置条件:
- Go 1.25 或更新版本。
- Node.js 20.19 或更新版本,或 22.12 或更新版本。
- Docker Compose 或 Podman Compose。
- MySQL、NATS 和 MinIO 由 `kagectl` 启动本地开发栈时提供。
普通本地启动不需要手动配置环境变量。`kagectl bootstrap --dev` 会自动生成
`.kageos/` 下的本地 env 文件,里面包含后端密钥、数据库密码、NATS、MinIO、
JWT 和 `system` 用户密码。本地后端场景下,前端也不需要额外 `.env` 文件;
Vite 默认会把 API 请求代理到 `http://localhost:9090`。
拉取仓库代码:
```bash
git clone https://github.com/kageos/kageos.git
cd kageos
```
启动完整的本地开发环境:
```bash
./scripts/dev.sh
```
脚本会在同一个终端持续显示后端和前端输出。如果希望分别调试,也可以手动在两个终端运行:
```bash
go run ./cmd/kagectl bootstrap --dev
cd web
npm install
npm run dev
```
浏览器打开 `http://localhost:5173`。执行 `bootstrap --dev` 时,`kagectl`
会打印 `kageos dev initialization summary`;用用户名 `system` 和其中的
`Admin password` 登录。如果需要重新查看密码,可以再次执行
`go run ./cmd/kagectl init --dev`,或从 `.kageos/dev/env/kageos.env` 读取
`SYSTEM_USER_PASSWORD`。
本地邮箱验证码默认走日志模式。如果注册新账号,验证码会出现在后端日志中,也会通过接口返回的 `debug_code` 暴露给本地开发使用。
前端默认使用相对 API 路径。如果只想让前端指向远程后端,可以从 `web/.env.development.local.example` 创建 `web/.env.development.local`,并设置 `VITE_PROXY_TARGET`。
AI 工作台能力需要登录后配置 LLM,但 LLM API Key 不是启动平台和登录系统的前置条件。
如果启动卡住,可以在仓库根目录先执行 `go run ./cmd/kagectl doctor`、
`go run ./cmd/kagectl verify`、`go run ./cmd/kagectl status` 或
`go run ./cmd/kagectl logs infra`。
贡献者工作流、IDE 调试、只开发前端和提交前检查见 [CONTRIBUTING.md](CONTRIBUTING.md)。更完整的依赖说明和排障材料见 [deploy/dev/README.md](deploy/dev/README.md)。
## AI 贡献者套件
这个公共仓库同时维护面向 Codex 和 Claude Code、中文优先的 `kageos`
套件。它可以带贡献者完成依赖检查、源码拉取、本地启动、健康验证、源码
导览和聚焦 PR 准备。安装后可以直接说:
```text
$kageos 检查我的电脑环境,拉取并启动 kageos,成功后打开本地页面。
```
五个 Skill 的唯一源码位于 [`skills/`](skills)。其中
[`skills/kageos-contributor`](skills/kageos-contributor) 负责本地启动和平台
源码贡献;[`plugins/kageos`](plugins/kageos) 是 Codex/Claude 的生成发布物,
必须通过 `scripts/package-kageos-plugin.py` 与源码同步。
- 下载和安装:[kageos 中文开发套件](https://kageos.ai/zh/developer/)
- 套件贡献规则:[CONTRIBUTING.zh-CN.md](CONTRIBUTING.zh-CN.md#维护-ai-套件)
## 生产部署
当前生产主线是通过 `kagectl` 和 Compose 做单机部署。最短路径:
```bash
sudo ./install.sh --base-url app.example.com
tail -f .kageos/prod/kagectl-up.log
```
生产和 AIO 镜像说明见 [deploy/prod/QUICK_START.md](deploy/prod/QUICK_START.md)、[deploy/prod/README.md](deploy/prod/README.md) 和 [deploy/aio/README.md](deploy/aio/README.md)。
## 验证
后端:
```bash
go vet -tags exclude_graphdriver_btrfs ./cmd/... ./core/... ./dto/... ./pkg/...
bash scripts/test-core-go.sh
go run golang.org/x/vuln/cmd/govulncheck@latest ./cmd/... ./core/... ./dto/... ./pkg/...
```
前端:
```bash
cd web
npm audit --omit=dev
npm run check:architecture
npm run lint
npm run type-check
npm run test:unit -- --run
npm run build
```
仓库治理检查:
```bash
bash scripts/check-sensitive-files.sh
bash scripts/check-sdk-boundaries.sh
bash scripts/check-doc-links.sh
```
这些检查也接入了 `.github/workflows/ci.yml`。
## 文档
- [kageos Blueprint](docs/kageos-blueprint.md)
- [当前架构](docs/current-architecture.md)
- [平台能力总览](docs/platform-capabilities.md)
- [目录 vs Skills:确定性架构论证](docs/directory-vs-skills-certainty-architecture.md)
- [产品思考](docs/product-thinking-ai-era-application-governance.md)
- [官网叙事与定位](docs/website-story-and-positioning.md)
- [定时任务架构](docs/scheduled-tasks-architecture-design.md)
- [本地开发](deploy/dev/README.md)
- [生产部署](deploy/prod/README.md)
- [发布 SOP](docs/release-sop.md)
- [源码与授权对外口径](docs/source-available-messaging.md)
- [License FAQ](LICENSE_FAQ.md)
- [商业授权](COMMERCIAL_LICENSE.zh-CN.md)
## 命名口径
- 正文、UI、官网、SDK 文档和对外材料都写作 `kageos`。
- Go 包、模块、路径和域名标识使用小写 `kageos`。
- 环境变量和配置键使用全大写 `KAGEOS_*`。
- 对 BSL 授权的核心平台,统一使用“源码公开、可自托管”或 “source-available and self-hostable”,并遵循[源码与授权对外口径](docs/source-available-messaging.md)。
## 贡献
欢迎提交 Pull Request。开 PR 前请先阅读:
- [CONTRIBUTING.zh-CN.md](CONTRIBUTING.zh-CN.md):贡献流程、分支模型、commit 规范、本地开发和验证检查。
- [CODE_OF_CONDUCT.zh-CN.md](CODE_OF_CONDUCT.zh-CN.md):issue、discussion、pull request 和社区空间的行为准则。
请保持 PR 聚焦;行为变化请补充测试或说明验证方式;公开行为、部署方式或产品定位变化时,请同步更新文档。
不要提交真实 `.env`、生产 `kage.yaml`、客户 license、生成部署产物、`namespace/`、`local/` 或其他私有工作区。请使用示例文件和本地 override。
## 安全
请不要通过公开 GitHub Issue 报告疑似安全漏洞。
安全问题请发送邮件至 [admin@kageos.ai](mailto:admin@kageos.ai)。如果安全,请包含受影响版本、分支、commit、部署模式、复现步骤、PoC 和影响说明。完整流程见 [SECURITY.zh-CN.md](SECURITY.zh-CN.md)。
## 授权
kageos 核心采用 Business Source License 1.1,并在发布三年后转 Apache License 2.0。源码公开,允许组织及其关联公司内部使用、符合条件的客户侧表单、门户、API 和业务输出,也允许独立开发并通过公共 SDK 或公共接口接入的目录、应用、插件和集成采用自己的许可证进行商业化;未经授权的商业 SaaS、MSP 托管、白标、OEM、嵌入、改名和竞品化平台受到限制。
详情见 [LICENSE](LICENSE)、[LICENSE_FAQ.md](LICENSE_FAQ.md)和[商业授权](COMMERCIAL_LICENSE.zh-CN.md)。SDK、示例、模板和文档如有单独 license 文件,可以采用各自的宽松开源授权。
## 致谢
kageos 由[恰研智能](https://qiayan.ai)创建和维护。它构建在更广泛的开源基础设施和开发工具生态之上,包括 Go、Vue、MySQL、NATS、MinIO、Docker、Podman 以及许多其他项目。
kageos 不是 OCTO、TangSengDaoDao 或 WuKongIM 的 fork。我们依然感谢这些项目,以及更广泛的 Agent、协作系统和基础设施社区共同推动这个领域向前。