Joncik91/aaOS
GitHub: Joncik91/aaOS
基于 Linux 内核 Landlock 与 seccomp 机制的 Agentic 终端,通过不可伪造的能力令牌对 AI Agent 的每次工具调用实施强制访问控制,从根本上防御 prompt 注入导致的越权访问。
Stars: 3 | Forks: 1
# aaOS
[](https://github.com/Joncik91/aaOS/actions/workflows/ci.yml)
[](https://github.com/Joncik91/aaOS/releases/latest)
[](LICENSE)
[](https://www.rust-lang.org/)
[](https://www.debian.org/releases/trixie/)
[](https://landlock.io/)
[](https://modelcontextprotocol.io/)
[](https://platform.openai.com/docs/api-reference)
**一个基于能力的 Agentic 终端。输入 `aaos`,输入目标,观看 agent 工作——受严格 confinement 限制。**
aaOS 将 LLM agent 作为内核受限进程运行:每次工具调用都由不可伪造的 capability token 门控,文件访问受 Landlock 限制,每次批准都是您亲眼所见并决定的内联按键操作。形态与 Claude Code、Cursor、Codex 相同——但即使 agent 的 prompt 被注入,它也无法读取 `~/.ssh/id_rsa`。
## 安装
```
# Debian 13 / Ubuntu 24.04+
wget https://github.com/Joncik91/aaOS/releases/download/v0.6.5/aaos_0.6.5-1_amd64.deb
sudo apt install ./aaos_0.6.0-1_amd64.deb
```
## 运行
```
aaos
```
首次运行会提示输入 DeepSeek 或 Anthropic API 密钥(保存至 `~/.config/aaos/env`,权限模式为 0600),以用户级进程生成 daemon,并打开多窗格 TUI。后续运行只需打开 TUI。
在底部文本区输入目标,按 Enter:
```
aaOS · agentic terminal · capability-confined
╭─ ● PLAN ─────╮ ● STREAM · running ╭─ FILE · /tmp/summary.txt ─╮
│ │ │ │
│ ◉ analyse │ ▎ tool file_read │ 1 │ # debian 13 trixie │
│ · planner │ ▎ on worker │ 2 │ # release notes │
│ │ ▎ in path=/etc/os-release │ 3 │ ... │
│ ✓ fetch_hn │ ▎ out PRETTY_NAME="Debian 13" │ │
│ · fetcher │ │ │
│ │ ▎ approval permission required │ │
│ ◌ writer │ ▎ write /tmp/summary.txt │ │
│ · writer │ ▎ via file_write │ │
│ │ ▎ a pprove d eny │ │
╰──────────────╯ ╰────────────────────────────╯
╭─ ● PROMPT ──────────────────────────────────────────────────────────────────╮
│ Describe what to do, then Enter. │
╰──────────────────────────────────────────────────────────────────────────────╯
/plan research-then-act · /persistent long-running · /clear · /help
● running · 2/3 · ↓1k ↑0k · 3.4s Ctrl-C cancel · Ctrl-Q quit
```
观看 Planner 在左侧窗格生成 DAG——`◌` 待处理,`◉` 运行中,`✓` 完成,`✗` 失败。中间窗格以转录样式流式传输事件:每个块显示工具、运行位置(worker = 沙箱,daemon = 受信)、参数和输出,左侧边缘带有强调槽,运行中时变为琥珀色,完成时变为绿色,失败时变为红色。批准请求会内联暂停 agent,并通过单个 `a` / `d` 按键解决。右侧窗格预览最近修改的文件。支持 SSH 渲染;可通过纯 SSH 工作。
**按键。** `Tab` / `Shift+Tab` 循环切换窗格焦点。`Enter` 提交,`Shift+Enter` 换行。`Ctrl-C` 取消活动运行(无运行时则清除输入)。`Ctrl-Q` 退出。斜杠命令显示在提示符下方:`/plan` 用于先研究后行动,`/persistent` 用于长时间运行,`/clear`,`/help`。
## 子命令
| 命令 | 功能 |
|---|---|
| `aaos` | 启动 Agentic TUI(默认) |
| `aaos submit ""` | 单次无头模式目标;将事件流式传输至 stdout,随后退出 |
| `aaos exec -- [args]` | 在 Landlock 下限制运行单个命令(楔入工具——无需 daemon 即可工作) |
| `aaos list` / `status` / `stop` / `logs` | Daemon 与 agent 控制 |
| `aaos configure` | (重新)写入 API 密钥 |
| `aaos roles` | 列出已配置的角色 |
## 限制内容与限制方式
- **Capability token,而非权限。** agent 在其 YAML manifest 中声明 capabilities(例如 `file_read: /data/*`)。在生成时,运行时会颁发不可伪造的 handle-opaque token。每次工具调用在执行前都会根据调用者的 token 进行检查。子进程仅继承父进程所持有权限的子集。
- **内核强制沙箱。** 当 `AAOS_DEFAULT_BACKEND=namespaced` 时,每个 agent 的工具调用在独立的 Linux user/mount/IPC 命名空间内执行,并启用 [Landlock](https://landlock.io/) + seccomp。Capability token 通过 broker 流转发给 worker;工具执行在沙箱中进行。在 Debian 13 / kernel 6.12 上进行了端到端验证。
- **内联批准时刻。** 在 manifest 中声明为 `approval_required` 的工具(默认:`file_write`)会暂停 agent,并在 TUI 的流窗格中显示一个黄色边框的块。单次按键即可解决。没有“自动批准”模式。
- **`aaos-exec`——AI 版的 Sudo。** 一个独立的单二进制 CLI(约 200 LoC),可由单行 YAML 策略驱动,将任何 shell 命令包装在 Landlock 沙箱中。无需 daemon 即可工作。参见 [`crates/aaos-exec/README.md`](crates/aaos-exec/README.md)。
拒绝由内核执行。没有需要协商的策略服务器,没有可以被覆盖的系统 prompt。
## Provider 支持
DeepSeek、Anthropic 及任何兼容 OpenAI 的 API。通过位于 `~/.config/aaos/env` 的 env 文件进行切换;使用 `aaos stop && aaos` 重启。
## 从源码构建
在 Debian 13 上使用 `cargo` + `cargo-deb` + `pandoc`:
```
git clone https://github.com/Joncik91/aaOS.git
cd aaOS
./scripts/setup-hooks.sh
./packaging/build-deb.sh # → target/debian/aaos_*.deb
```
按二进制文件 `cargo install`:
```
cargo install --path crates/aaos # the dispatcher (just `aaos`)
cargo install --path crates/aaos-exec # the wedge (no daemon)
cargo install --path crates/aaos-harness # the TUI directly
cargo install --path crates/agentd # the daemon
```
## 架构概述(一段话)
`agentd` 是一个 Rust daemon,其中 AI agent 是一等公民进程。运行时在生成时颁发 capability token,通过 `Tool` trait 介导每次工具调用,并通过 broker 流将 capabilities 转发给各 agent 独立命名空间的 worker。`AgentServices` trait 是与底层无关的 ABI:目前通过 `InProcessBackend` 和 `NamespacedBackend` 提供进程支持,未来计划支持 MicroVM-per-agent,仅在买方有门控要求时采用微内核。`aaos-harness` 是一个基于 Ratatui 的 TUI,通过其现有的 JSON-RPC + audit-stream 接口驱动 `agentd`——添加它*零* daemon 协议更改。完整技术栈:[`docs/architecture.md`](docs/architecture.md)。
## 文档
- **[发展历程](docs/HISTORY.md)** — 60 秒浏览这段旅程,2026 年 3 月 → 至今
- **[架构](docs/architecture.md)** — 技术栈、capability 模型、后端、审计轨迹、接口
- **[路线图](docs/roadmap.md)** — 接下来的计划(M1 = 楔入冒烟测试,M2 = Debian 衍生版延期,R1 = 隔离阶梯)
- **[构建历史](docs/build-history.md)** — 长篇记录,38 条条目
- **[反思日志](docs/reflection/README.md)** — aaOS 读取自身代码并提出修改的运行记录
- **[模式](docs/patterns.md)** — 从日志中提炼出的跨领域经验教训
- **[想法](docs/ideas.md)** — 延期的工作 + 需要重新考虑的信号
- **[工具](docs/tools.md)** — 内置工具目录及 capability 要求
- **[API](docs/api.md)** — JSON-RPC 方法参考
- **[更新日志](CHANGELOG.md)** — 每个版本的详细信息
- **[安全性](SECURITY.md)** — 威胁模型、范围、报告
## 许可证
[Apache License 2.0](LICENSE)
标签:AI安全, AI智能体, Anthropic, API密钥保护, Chat Copilot, CIS基准, Claude Code替代, Codex替代, Cursor替代, Debian, DLL 劫持, Landlock, Linux内核安全, LLM代理, MCP客户端, OpenAI, Petitpotam, Rust, seccomp, TUI, 代码助手, 内存规避, 可视化界面, 基于能力的访问控制, 大语言模型, 安全沙箱, 开发安全, 提示词注入防御, 文件系统隔离, 智能终端, 深度防御, 终端UI, 终端自动化, 网络流量审计, 能力导向安全, 自动化代理, 通知系统, 防恶意软件, 零信任架构