omnigent-ai/omnigent
GitHub: omnigent-ai/omnigent
Omnigent 是一个 AI agent 元编排框架,为 Claude Code、Codex 等多种 agent 提供统一的管理、协作和治理层。
Stars: 3768 | Forks: 418
#

Omnigent
### 适用于您所有 AI agent 的元测试框架
Omnigent 在 Claude Code、Codex、Cursor、Pi 以及您自己编写的 agent 之上提供了一个通用层:无需重写即可替换或组合框架,通过策略和沙箱来管控它们,并在任何设备上实时协作于同一个实时会话。
[](https://github.com/omnigent-ai/omnigent/blob/main/LICENSE)

[](#1-install)
[omnigent.ai](https://omnigent.ai) · **[⬇️ 下载 macOS 桌面应用](https://omnigent.ai/download/mac)**
## 为什么选择 Omnigent?
Omnigent 允许您:
- **📱 从任何设备(包括手机)与 agent 协同工作。** 会话
跟随您:在终端中开始,在浏览器中继续,在手机上接手。消息、子 agent、终端和文件保持同步。
- **🤖 监督多个 agent。** 在同一个会话中同时使用 Claude Code、Codex、Pi 和自定义
agent(通过 YAML 定义)。让一个 agent 审查另一个 agent 的工作,或者将任务拆分给擅长不同领域的各个 agent。
- **🔌 使用任何模型。** 第一方 API key、Claude/ChatGPT 订阅,
或任何兼容的网关。全部一视同仁。
- **🤝 协作。** 共享会话,让团队成员与您的 agent 聊天
并实时观看其工作过程,在您的机器上协同驱动它,或者 fork
对话让他们自行继续。
- **☁️ 在云沙箱中运行 agent。** 无需笔记本电脑:在
一次性的 [Modal](https://modal.com)、[Daytona](https://www.daytona.io) 或
[Islo](https://islo.dev) 沙箱中运行会话,通过 CLI 启动或由服务器为每个会话分配(*托管主机*)。
- **🛡️ 管控您的 agent。** 创建
[策略](#6-govern-your-agents-with-policies) 以在执行
风险操作前暂停并等待您的批准,限制支出,或限制 agent 可以调用的工具。
它们可以应用于整个服务器、单个 agent 或单个聊天。
## 快速开始
### 1. 安装
一条命令即可安装 Omnigent 及其所有依赖:
```
curl -fsSL https://raw.githubusercontent.com/omnigent-ai/omnigent/main/scripts/install_oss.sh | sh
```
倾向于手动安装?
Omnigent 需要 **Python 3.12+**。安装 `omnigent` 包:
```
uv tool install omnigent # or: pip install "omnigent"
```
或者使用 [Homebrew](https://github.com/omnigent-ai/homebrew-tap):
```
brew install omnigent-ai/tap/omnigent
```
或者直接从仓库安装:
```
uv tool install -q --python 3.12 git+https://github.com/omnigent-ai/omnigent.git
```
工具链和前置条件(如果安装程序报告缺少工具)
- **`uv`**(必需)。https://docs.astral.sh/uv/getting-started/installation/
安装程序会主动为您提供设置。
- **`git`**(必需)。
- **Node.js 22 LTS 或更高版本** 以及 **`npm`**,适用于 Claude、Codex 和 Pi
编程框架。`omnigent run` 会安装您选择的框架 CLI。
https://docs.npmjs.com/downloading-and-installing-node-js-and-npm
- **`tmux`**,原生 `omnigent claude` / `omnigent codex` 包装器必需(`brew install tmux` / `apt install tmux`;安装程序会主动为您安装它)。
- **`bubblewrap`** (`bwrap`),**仅限 Linux**。原生 `omnigent claude` /
`omnigent codex` 和 `pi` 框架将每个 agent 终端包裹在 `bwrap`
OS-sandbox 中;在 Linux 上这种隔离是强制性的,因此缺少 `bwrap`
二进制文件会导致这些终端无法启动(`apt install bubblewrap`;安装程序会主动为您安装它)。macOS 使用内置的 `seatbelt`
沙箱,不需要任何额外安装。
- **Databricks**(可选)。要将 Databricks 工作区用作您的模型
提供商,请使用 `databricks` 扩展安装 Omnigent:
`uv tool install "omnigent[databricks]"。登录到工作区还需要
[Databricks CLI](https://docs.databricks.com/aws/en/dev-tools/cli/install)。
更新到新版本
当 PyPI 上有更新的版本时,Omnigent 会显示一行提示(每个版本仅一次)指向这里。要更新:
```
omni upgrade # detects how you installed, drains & stops the local
# server, then runs the matching upgrade command
omni upgrade --check # just report whether a newer release is available
```
`omni upgrade` 会等待进行中的 agent 会话结束后再停止
本地服务器(传递 `--force` 可立即停止);下一条 `omni` 命令
将在新版本上重新启动服务器。源码检出则通过
`git pull` 进行更新。使用 `OMNIGENT_NO_UPDATE_CHECK=1` 隐藏提示。
检查会查询您配置的包索引 —— 遵循 `UV_INDEX_URL` /
`PIP_INDEX_URL` 以及您的 `uv.toml` / `pip.conf`(默认为 PyPI),因此私有
镜像开箱即用;如果需要,可以通过 `OMNIGENT_INDEX_URL` 进行覆盖。
### 2. 启动您的第一个 agent
`omnigent` 会与您一起选择一个模型,并在您的终端中启动一个会话。它
还会在 `http://localhost:6767` 启动一个本地 Web UI,在浏览器中显示同一个
会话,或者在同一网络下的手机上显示(步骤 4)。
[桌面应用](https://omnigent.ai/docs/interact/desktop) 将同样的 UI 封装在
原生窗口中,并添加了 OS 通知和 dock 徽章 ——
[下载 macOS 版本](https://omnigent.ai/download/mac)。
```
omnigent
```
或者启动特定的 agent runtime,或您自己的 agent:
```
omnigent claude # Claude Code, in a session your team can join
omnigent codex # Codex
omnigent run path/to/agent.yaml # your own agent (see "Write your own agent")
```
#### 🐙 Polly 和 🟠🔵 Debby
仓库中内置了两个示例 agent,它们是非常好的初始会话:
```
omnigent run examples/polly/
omnigent run examples/debby/
# 在不同的 harness 上运行 orchestrator(sub-agents 保留自己的):
omnigent run examples/polly/ --harness pi
omnigent run examples/debby/ --harness openai-agents
omnigent run examples/polly/ --harness cursor # Cursor CLI (needs cursor-agent + CURSOR_API_KEY)
```
**🐙 Polly** 是一个多 agent 编码协调者,她自己不写任何代码。
她是技术主管:她负责规划,将工作并行委派给位于不同 git worktree 中的编码子 agent(Claude Code、Codex 或 Pi),然后将每个 diff 路由给与编写者来自不同供应商的审查者。由您执行 merge。
**🟠🔵 Debby** 是一个双头头脑风暴伙伴,一个头是 Claude,另一个是 GPT。
您提出的每一个问题都会发送给两个头,她会将两个答案并排展示。输入 `/debate`,两个头会相互批评几轮,然后达成共识。(她需要 Claude 和 OpenAI 的凭据;
见步骤 3。)
**倾向于使用浏览器?** 启动服务器并将您的机器注册为主机:
```
omnigent server start # start the local server and web UI in the background
omnigent host # (separate terminal) register this machine as a host
```
在 Web UI 中,点击 **New Chat**,选择您的机器,然后开始。使用 `omnigent server status` 检查状态;使用 `omnigent stop` 停止一切。
### 3. 选择和切换模型
```
omnigent setup
```
添加凭据、设置默认值或删除凭据,并按 agent 分组。Omnigent
适用于四种凭据:
| | 类型 | 是什么 |
|---|---|---|
| 🔑 | **API key** | 用于 Anthropic、OpenAI 等类似提供商的第一方供应商密钥 |
| 🎟️ | **订阅** | Claude Pro/Max 或 ChatGPT 套餐,通过官方 `claude` / `codex` CLI 使用 |
| 🌐 | **网关** | 任何兼容 OpenAI 或 Anthropic 的 `base_url` 和密钥(OpenRouter、LiteLLM、Ollama、vLLM、Azure) |
| 🧱 | **Databricks** | Databricks 工作区配置文件(需要 `databricks` 扩展) |
默认值是按 agent 设置的,因此 Claude 的默认值和 Codex 的默认值可以共存。您
也可以在会话中途使用 `/model` 命令切换模型。
网关 base URL (OpenRouter, Ollama)
当您添加 **网关** 凭据时,`omnigent setup` 会要求输入 base URL
和密钥。base URL 取决于您将其指向哪个 agent:
| 提供商 | 用于 | Base URL | 密钥 |
|---|---|---|---|
| **OpenRouter** | Claude Code | `https://openrouter.ai/api` | 您的 OpenRouter 密钥 (`sk-or-…`) |
| **OpenRouter** | Codex / OpenAI agents | `https://openrouter.ai/api/v1` | 您的 OpenRouter 密钥 (`sk-or-…`) |
| **Ollama**(本地) | Codex / OpenAI agents | `http://localhost:11434/v1` | 任意值(Ollama 会忽略它) |
对于 Claude Code,请指向 OpenRouter 的兼容 Anthropic 的 endpoint
(`…/api`,**而不是** `…/api/v1`)。对于 Codex 和 OpenAI-agents 框架,请使用
兼容 OpenAI 的 `…/api/v1`。
### 4. 部署服务器(并从手机📱上使用它)
在具有稳定 URL 的服务器上运行 Omnigent
([`deploy/README.md`](https://github.com/omnigent-ai/omnigent/blob/main/deploy/README.md) 是完整指南),您的会话
将可以从任何地方(包括手机)访问。Web UI 是为
移动设备构建的,因此您可以获得与笔记本电脑同步的相同聊天、子 agent、终端和文件。
只需一条 `docker compose up` 命令,即可在您拥有的任何主机(VPS、家庭
服务器)上运行服务器;Render 支持一键部署;同时也支持 Fly.io、Railway、Hugging Face Spaces
和 Modal。服务器还可以为每个
会话分配云沙箱(*托管主机*),因此无需保持笔记本电脑开机。完整的
目标列表、数据库选项和沙箱设置位于
[`deploy/README.md`](https://github.com/omnigent-ai/omnigent/blob/main/deploy/README.md) 中。
服务器启动后,登录并将您的笔记本电脑注册为主机:
```
omnigent login https://your-host # sign in once; run / attach / host reuse the token
omnigent host https://your-host # new sessions can now run on this machine
```
### 5. 与您的团队协作
Omnigent 支持**多用户账户**,由一个环境
变量控制:
```
OMNIGENT_AUTH_ENABLED=1 omnigent server start
```
**[步骤 4](#4-deploy-a-server-and-use-it-from-your-phone) 中的 Docker 部署
会为您开启它**(在那里 `OMNIGENT_AUTH_ENABLED` 默认为 `1`)。
#### 邀请您的团队成员
打开 Web UI(本地为 `http://localhost:6767`,或您的主机 URL)并
以 `admin` 身份登录;首次运行会打印密码并将其保存在本地。然后
打开 **Admin → Members → Invite** 创建一个一次性邀请链接,无需
邮件服务器。发送链接;您的团队成员打开它,设置密码,
即可加入。注册仅限受邀者。
#### 一起编码
- **共享实时会话。** 在 Web UI 中点击 **Share** 并发送链接;
团队成员可以实时观看您的 agent 工作并与其聊天。
- **协同驱动。** 一名团队成员共同接入您正在运行的会话;他们的
消息将在**您的**机器上执行。非常适合结对编程或在调查过程中将键盘交给领域专家。
omnigent attach
- **Fork。** 将对话克隆到您自己的机器上,并从 fork
点独立继续。
omnigent run --fork
### 6. 使用策略管控您的 agent
**策略** 决定 agent 可以做什么:运行 shell 命令、编辑文件、
消耗 token。它们会检查每一个操作,然后允许、阻止它,或者
暂停以先询问您。
- **在 Web UI 中**:打开会话的信息面板,浏览可用的
策略并切换其开启或关闭。
- **在聊天中**:直接询问。*“添加一个在运行 shell
命令前询问我的策略。”* Agent 会为您设置好。
想要适用于所有人或特定 agent 的默认设置?请在
您的服务器配置或 agent 的 YAML 中定义它们:
```
policies:
approve_shell:
type: function
handler: omnigent.policies.builtins.safety.ask_on_os_tools # ask before shell / file writes
cap_calls:
type: function
handler: omnigent.policies.builtins.safety.max_tool_calls_per_session
factory_params:
limit: 50 # cap how many tools one session can call
budget:
type: function
handler: omnigent.policies.builtins.cost.cost_budget
factory_params:
max_cost_usd: 5.00 # hard spend cap...
ask_thresholds_usd: [3.00] # ...with a soft warning on the way
```
策略在三个级别叠加,**服务器范围**(管理员)、**每个 agent**(开发者)和**每个会话**(您),首先检查更严格的会话
规则。支出限制和访问限制作为内置功能提供。
有关完整的目录和信任模型,请参阅[策略指南](https://github.com/omnigent-ai/omnigent/blob/main/docs/POLICIES.md)。
## 编写您自己的 agent
一个 agent 就是一个简短的 YAML 文件:包含您的 prompt、您的工具,以及可选的辅助
子 agent(供主管委派任务)。您不必手动编写它:
agent 可以构建 agent,因此只需在任何 Omnigent 聊天中描述您想要的
,它就会为您创建该文件。
```
name: my_agent
prompt: You are a helpful data analyst.
executor:
harness: claude-sdk # or: codex, codex-native, claude-native, cursor, openai-agents, pi, antigravity
tools:
# A local Python function (schema auto-generated from the signature)
word_count:
type: function
callable: mypackage.mymodule.word_count
# A sub-agent the supervisor can delegate to
researcher:
type: agent
prompt: Search for relevant information and summarize it.
tools:
word_count: inherit
```
使用以下命令运行它:
```
omnigent run path/to/my_agent.yaml
```
同一个文件可以声明子 agent 和审查者。有关更完整的示例,请参阅 [`examples/polly/`](https://github.com/omnigent-ai/omnigent/tree/main/examples/polly/) 中的 Polly,以及有关完整 schema 的
[Agent YAML 规范](https://github.com/omnigent-ai/omnigent/blob/main/docs/AGENT_YAML_SPEC.md)。
## 贡献
欢迎贡献力量。请参阅 [CONTRIBUTING.md](https://github.com/omnigent-ai/omnigent/blob/main/CONTRIBUTING.md) 了解如何设置您的环境、运行检查并提交 Pull Request。标签:AI智能体, DLL 劫持, MITM代理, SOC Prime, 协同工作, 多智能体协同, 大语言模型, 开发工具, 请求拦截, 逆向工具