内容
# 自主操作系统
自主代理的任务控制平台 — 从网页仪表盘启动、观察和协调 Claude 代码会话。
## 这是什么?
自主操作系统是一个**用于管理 AI 代理的终端仪表盘**。它将 Claude 代码会话作为 PTY 子进程启动,提供通过钩子遥测的实时可观察性,并通过基于 URI 的消息网关实现多代理协调。
### 已构建功能
- **分屏终端** — 多个 Claude 代码会话并排显示,可拖拽分屏,键盘快捷键(Ctrl+D/Shift+D/W/B)
- **代理状态跟踪** — 基于 Claude 代码钩子事件的实时状态图标(工作中/空闲/需要输入/错误)
- **会话管理** — 创建、恢复、终止、自动重新连接、输出重放、服务器重启后自动持久化
- **自动信任** — 自动忽略 Claude 代码的启动信任提示,实现无缝会话启动
- **通知徽章** — 根据 SendUserMessage/Stop/Notification 事件显示每个代理的未读消息数,聚焦时自动清除
- **多代理消息传递** — 基于 URI 的网关(`agent://name`,`broadcast://all`)与 MCP 工具:`send`、`list_agents`、`create_agent`、`kill_agent`
- **Cron 调度器** — 原生定时调度(Croner v10)与 6 个 MCP 工具、REST API、仪表盘调度面板。代理创建调度;两种执行模式:`isolated`(无头 `claude -p`)和 `agent:<name>`(网关交付)。重叠策略、并发限制、一次性调度、启动跟进
- **钩子中继** — 通过 `--settings` 内联 curl 实现零配置遥测,13 个 Claude 代码钩子事件
- **Markdown 预览** — 在终端中按 Ctrl+click `.md` 链接,实时更新并支持 mermaid 图表
- **插件系统** — VSCode 风格的状态栏(内置 Claude 使用跟踪)
- **设置面板** — API 密钥、通道、自动信任切换、Anthropic API 覆盖
- **渐进式网页应用** — 可作为独立应用安装,支持桌面通知
- **主题** — Midnight、Daylight、Void
### 架构
```
仪表盘(React) 服务器(Hono + node-pty)
┌─────────────┐ ┌──────────────────────┐
│ xterm.js │◄──ws──────│ PTY 会话 │
│ 分屏窗口 │ │ 钩子中继 │
│ 侧边栏 │◄──poll────│ 代理状态机 │
│ 调度 │ │ MCP 服务器(HTTP) │
│ 状态栏 │ │ 网关路由器 │
└─────────────┘ │ 通道服务器(MCP) │
│ Cron 调度器 │
└──────────────────────┘
```
## 快速开始
```bash
cp -n .env.example .env # 创建 .env 文件(编辑以配置)
bun install # 安装依赖
make dev # 开发模式 — API 在 :3101,Vite HMR 在 :5173
make prod # 生产模式 — 构建 + OS 原生守护进程在 :3100
make down # 停止所有(移除服务)
```
`make prod` 使用 **OS 原生初始化系统** 监督服务器 — macOS 上的 launchd 启动代理,Linux 上的 systemd-user 单元,而不是 pm2。它在首次运行时自动迁移现有的 pm2 管理的 `autonomos`(设置 `NO_MIGRATE=1` 以跳过)。
### 所有 Make 目标
| 目标 | 描述 |
|--------|-------------|
| `make dev` | 启动 API 服务器(监视模式,:3101)+ Vite HMR (:5173) |
| `make prod` | 构建仪表盘 + (重新)安装 launchd/systemd-user 守护进程在 :3100 |
| `make deploy` | Rsync 到远程 + `make prod`(在 `.env` 中设置 `DEPLOY_HOST`) |
| `make check` | Lint(Biome)+ 类型检查(tsc)+ 服务器 + CLI 测试 |
| `make fmt` | 自动修复 lint + 格式问题 |
| `make stop` | 停止守护进程(通过监督器,确保它保持关闭) |
| `make restart` | 重启守护进程(launchctl / systemctl) |
| `make logs` | 跟踪服务器日志(`~/.autonomos/logs/autonomos.log`,最后 50 条) |
| `make down` | 移除服务 + 终止开发端口 |
`autonomos` CLI 直接公开相同的控制:`autonomos status`、`autonomos logs -f`、`autonomos restart`、`autonomos stop`、`autonomos install-service` / `uninstall-service`.
### 身份验证
可选的基于令牌的身份验证。当设置 `AUTONOMOS_TOKEN` 时,仪表盘显示登录页面,所有 API/WebSocket 端点都需要令牌。
```env
AUTONOMOS_TOKEN=您的安全令牌
```
留空以完全禁用身份验证。
### 远程部署
```env
DEPLOY_HOST=您的服务器主机名
# DEPLOY_PATH=~/autonomOS # 可选,默认为 ~/autonomOS
```
运行 `make deploy` — 将代码 rsync 到远程,安装依赖,构建并通过 systemd-user(macOS 上为 launchd)监督服务器,自动迁移现有的 pm2。
## 结构
```
packages/
dashboard/ # React + Zustand + Tailwind — 网页 UI
src/layout/ # 二叉树分屏系统
src/hooks/ # useTerminal(xterm.js + 焦点注册)
src/components/ # 侧边栏、预览窗格、会话窗格、对话视图
src/plugins/ # 状态栏插件(Claude 使用跟踪、设置)
server/ # Hono + node-pty — API、WebSocket、PTY 管理
src/gateway/ # 基于 URI 的消息路由器 + 平台适配器
src/channel-server/ # 独立 MCP 子进程(server:autonomos)
src/mcp/ # 共享 MCP 工具定义
src/routes/ # REST + WebSocket 端点
core/ # 共享类型(会话、网关、解析器)
docs/
DECISIONS.md # 架构决策(仅追加)
FEATURES.md # 功能规格(F-001 至 F-016)
ROADMAP.md # 当前优先级
RESEARCH.md # 研究发现
VISION.md # 项目愿景
research/ # 深入研究主题(20+ 条目)
```
## 技术栈
- **前端**:React 19、Zustand 5、Tailwind CSS 4、xterm.js 6、Mermaid、framer-motion、react-resizable-panels
- **后端**:Hono、node-pty、Claude 代理 SDK、MCP SDK(@modelcontextprotocol/sdk)
- **工具**:Bun、Biome、launchd / systemd-user 监督、TypeScript 项目引用
## 文档
- **[FEATURES.md](docs/FEATURES.md)** — 功能规格和设计意图
- **[ROADMAP.md](docs/ROADMAP.md)** — 已完成和待完成事项
- **[DECISIONS.md](docs/DECISIONS.md)** — 架构决策记录
- **[RESEARCH.md](docs/RESEARCH.md)** — 竞争对手分析和研究
- **[VISION.md](docs/VISION.md)** — 项目愿景
## 许可证
MIT — 见 [LICENSE](LICENSE).
## 商标
autonomOS 显示第三方提供商徽标(Claude、OpenAI Codex、Google Gemini),仅用于识别支持代理的运行时。所有产品名称、徽标和品牌均为其各自所有者的财产;其使用是命名性的,不暗示任何关联或认可。见 [NOTICE](NOTICE).