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 之上提供了一个通用层:无需重写即可替换或组合框架,通过策略和沙箱来管控它们,并在任何设备上实时协作于同一个实时会话。 [![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://github.com/omnigent-ai/omnigent/blob/main/LICENSE) ![Status: alpha](https://img.shields.io/badge/status-alpha-orange.svg) [![Python 3.12+](https://img.shields.io/badge/python-3.12%2B-blue.svg)](#1-install) [omnigent.ai](https://omnigent.ai) · **[⬇️ 下载 macOS 桌面应用](https://omnigent.ai/download/mac)**

An Omnigent orchestrator and its sub-agents in one shared session

## 为什么选择 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, 协同工作, 多智能体协同, 大语言模型, 开发工具, 请求拦截, 逆向工具