一个 Agent 核心,连接你的设备空间。
预览版本 · 阅读技术白皮书
Operit2 是面向个人用户的开源跨设备 Agent 项目。它希望让手机、桌面和云端设备各展所长,让对话、任务与上下文在个人设备空间中延续。
项目源于 Operit 的 Android Agent 实践,目前正打磨多端同步、跨设备执行和恢复体验。项目初衷、工程架构与长期方向见 Operit2 技术白皮书。
预览阶段,底层结构、数据格式、插件契约和跨设备流程仍可能发生破坏性更新。
每个运行 Core 的实例称为 CoreNode,通过本机 Host 使用文件、终端、浏览器等能力。Space 组织节点之间的协作与持久化同步,Binding 记录任务下一步由哪个节点继续。
Space 中的节点地位对等。Linux 云端设备可以因长期在线或具备合适能力而承担更多任务,但不会因此成为固定的主节点。加入 Space 也不会自动继承其他设备的系统权限。
任务交接以工具结果已持久化、下一轮模型请求尚未开始为边界。目标节点取得必要的同步记录后,再继续后续工作。这种接续依赖保存的上下文和任务事实,不搬迁正在运行的模型请求、终端进程或浏览器会话。
我们希望逐步实现这样的体验:在手机上发起任务,由合适的设备持续执行,在桌面上查看或批准,最后回到手机接收结果。主对话保留发起设备的交互归属,子任务在执行节点推进,其他设备通过异步同步了解进展。完整体验仍在完善中。
每个 CoreNode 都可以独立运行自己的 Agent 工作流,具体能力取决于平台 Host、模型 Provider 和本地配置。当前仓库已经包含:
这些能力并不在所有平台完全相同。真正能否执行某项操作,要看目标节点的 Host 描述、系统权限、已安装服务和当前用户批准。
CLI 已经提供配对、发现、连接、session、传输方式和 Space 成员管理入口;节点之间使用 Link Access 建立认证连接,再由 PeerLink 承载 Space 请求和同步流量。适合在本地或受控局域网环境中试验:
operit2 cli link serve --bind <address:port> --token <strong-token>
operit2 cli link discover
operit2 cli link connect <url> --token <token> --save <session-name>
operit2 cli link space join <session-name>
operit2 cli link space show
命令参数以 operit2 --help 和 operit2 cli 的实际输出为准。不要使用默认开发 token 对公网监听,也不要把 token、私钥或真实业务数据放入公开日志和截图。
Operit2 的扩展面已经从“内置工具集合”逐步抽象为可管理的运行时与 SDK:
后续将进一步完善运行时、Host 能力、权限、兼容版本和状态范围的声明,让扩展能在兼容节点上执行或接续。当前请按目标平台验证插件及其依赖,跨设备可移植性仍是重点建设方向。
插件作者入口见 plugins/docs/README.md,公共 SDK 说明见 core/crates/plugin/sdk/README.md。
Web Access 让浏览器访问一个已运行的 CoreNode;打开页面不会自动让浏览器成为 Space 中的独立节点。浏览器 Host 与 WebAssembly 运行时是另一条工程路径,两者的能力和部署方式需要分别看待。
本地开发方式见下方“Web Access 开发”,访问与部署说明见 apps/web_access/README.md。
Operit2 把迁移视为个人设备连续性的一部分。CLI 已提供身份、存储路径、快照导出/恢复、备份检查以及 Operit 一代快照检查入口:
operit2 cli identity list
operit2 cli storage paths
operit2 cli export snapshot <snapshot.zip>
operit2 cli backup inspect <snapshot.zip>
operit2 cli backup restore <snapshot.zip>
快照、配置和身份数据的具体范围以当前命令帮助和格式版本为准。活动中的进程和实时会话仍然属于原节点,不能把“有备份”理解成已经完成了所有运行时的无缝迁移。
| 入口或平台 | 在当前架构中的位置 | 当前边界 |
|---|---|---|
| Flutter App | 移动端和桌面端的主要图形访问面,也可以承载一个 CoreNode | Android、Windows、Linux、macOS、iOS、OpenHarmony 和 Web 的 Host/构建条件不同 |
| Rust CLI/TUI | 本地 CoreNode 和运维/开发入口 | 当前 CLI Host 主要覆盖 Windows、Linux 和 macOS |
| PB_SBC01_H3 | 运行完整 Core 的 Linux 硬件主控入口 | 使用 Linux Host 加板卡 Host 能力,应用入口位于 apps/pb_sbc01_h3 |
| Web Access | 访问某个已运行 CoreNode 的浏览器入口 | 不是自动加入 Space 的浏览器节点,也不是中心化 Agent Server |
| WebAssembly/browser Host | 浏览器运行时的本地能力边界 | 与 Web Access 访问面分开,具体能力取决于浏览器和当前 Web 构建模式 |
| Linux 云端设备 | Space 中的普通 CoreNode | 长期在线可以承担更多任务,但不因此拥有中心身份 |
| ESP32 Edge Node | 设备侧 Edge Service 能力节点 | 不是完整 CoreNode,不持有 OperitApplication、Chat、Store、Identity 或 Space 同步 |
| Server | 未来的部署形态和 Host 方向 | 当前仓库还没有可以直接发布的完整 Server 产品 |
仓库包含多平台 Host 适配路径,但“能够构建”不等于“已经完成跨设备互操作验证”。平台构建、签名和发布条件请以 BUILDING.md 与对应 workflow 为准。
Operit2 采用从外到内逐层收紧的能力模型:
0. App Runtime Sandbox
虚拟机、容器、系统账号、Android 应用沙盒或服务器部署边界
1. Host Authorization
操作系统真正授予本机 Host 的文件、终端、网络和系统能力
2. AI Capability Limit
用户为 AI 选择的 ReadOnly、WorkspaceWrite 或 Full 能力模式
3. User Tool Approval
用户对具体工具调用的允许、询问或禁止
几个必须保持的原则:
Full 只表示 AI 能力限制放宽,不表示 Host 提权,也不能创造操作系统没有的能力;完整边界说明见 docs/permission-access-architecture.md 和 hosts/README.md。
Rust Core、平台 Host、节点连接、持久化同步和插件运行时已经形成工程基础。当前优先修复问题、打磨稳定性,尤其关注跨设备执行的取消、重连、资源释放和失败恢复。
以下方向仍在设计、完善或验证中:
当前以个人设备空间为主要场景,尚未验证数千节点调度,也不以企业组织治理为产品目标。长期运行品质仍需持续测试,Rust 本身不构成无资源泄漏的保证。更详细的设计取舍见 技术白皮书。
常用开发入口需要:
完整环境、签名、发布和平台差异见 BUILDING.md。不要把签名文件、API key 或发布 token 提交到仓库。
从仓库根目录执行:
cargo check --manifest-path apps/cli/Cargo.toml
cargo run --manifest-path apps/cli/Cargo.toml --bin operit2 -- --help
cargo run --manifest-path apps/cli/Cargo.toml --bin operit2 -- cli version
cargo run --manifest-path apps/cli/Cargo.toml --bin operit2 -- tui
没有参数时,operit2 默认进入 TUI。更多入口可以通过以下命令查看:
cargo run --manifest-path apps/cli/Cargo.toml --bin operit2 -- cli
cargo run --manifest-path apps/cli/Cargo.toml --bin operit2 -- cli link
cargo run --manifest-path apps/cli/Cargo.toml --bin operit2 -- cli web
从 apps/flutter/app 目录执行:
fvm install --skip-pub-get
fvm dart pub get --enforce-lockfile
fvm flutter analyze
fvm flutter run -d windows
windows 只是示例设备名。Android、Linux、macOS、iOS、OpenHarmony 和浏览器模式需要各自的平台工具链,且 Host 能力并不相同。
本地 Flutter Web 开发需要两个终端:
# 终端一:apps/flutter/app
fvm flutter run -d web-server --web-hostname 127.0.0.1 --web-port 4835
# 终端二:仓库根目录
node tools/dev_web_access_proxy.mjs --upstream-port 4835 --listen-port 4836
然后打开 http://127.0.0.1:4836。如果端口被占用,可以同时修改 Flutter 上游端口和代理的 --upstream-port,但要保持两者一致。
apps/
├── cli/ Rust CLI/TUI 入口
├── pb_sbc01_h3/ PB_SBC01_H3 硬件主控入口
├── flutter/app/ Flutter App 入口
├── web_access/ Web Access 前端边界和共享 bundle
└── server/ Server 形态预留目录
core/
├── crates/ Rust Core 各领域 crate
├── CRATE_BOUNDARIES.md crate 依赖方向和职责边界
└── examples/ Provider 和插件 SDK 示例
hosts/ Android、Windows、Linux、Apple、Web 与 boards Host 实现
plugins/ ToolPkg、Skill、SDK 类型和插件开发工具
tools/ 构建、发布、Web 和开发辅助脚本
docs/ 架构、权限、Link、迁移和版本文档
架构文档中标注为“目标”“计划”或“演进方向”的内容,不代表所有平台已经实现。判断当前实际行为时,请以源码、命令帮助输出、构建结果和目标平台运行结果为准。
Operit2 仍然是一项长期工程。我们欢迎代码、文档、测试、平台 Host、插件、Skill、MCP 集成和真实使用反馈。
如果你要修改跨设备能力,请尽量守住三条边界:
开始前请阅读 CONTRIBUTING.md。涉及协议、持久化、Binding、Host capability 或插件契约的改动,也请同步更新对应架构文档和测试。
仓库根目录的 LICENSE 当前为 GNU Affero General Public License v3.0(AGPL-3.0)。具体 crate、插件、ToolPkg、Web bundle、vendored 代码和第三方依赖可能附带自己的许可证或元数据;使用、分发或修改具体组件前,请同时核对该组件目录中的声明。
Rust
61.0%
Dart
29.6%
TypeScript
2.2%
Python
1.9%
Kotlin
1.6%
C++
1.0%
一个 Agent 核心,连接你的设备空间。
预览版本 · 阅读技术白皮书
Operit2 是面向个人用户的开源跨设备 Agent 项目。它希望让手机、桌面和云端设备各展所长,让对话、任务与上下文在个人设备空间中延续。
项目源于 Operit 的 Android Agent 实践,目前正打磨多端同步、跨设备执行和恢复体验。项目初衷、工程架构与长期方向见 Operit2 技术白皮书。
预览阶段,底层结构、数据格式、插件契约和跨设备流程仍可能发生破坏性更新。
每个运行 Core 的实例称为 CoreNode,通过本机 Host 使用文件、终端、浏览器等能力。Space 组织节点之间的协作与持久化同步,Binding 记录任务下一步由哪个节点继续。
Space 中的节点地位对等。Linux 云端设备可以因长期在线或具备合适能力而承担更多任务,但不会因此成为固定的主节点。加入 Space 也不会自动继承其他设备的系统权限。
任务交接以工具结果已持久化、下一轮模型请求尚未开始为边界。目标节点取得必要的同步记录后,再继续后续工作。这种接续依赖保存的上下文和任务事实,不搬迁正在运行的模型请求、终端进程或浏览器会话。
我们希望逐步实现这样的体验:在手机上发起任务,由合适的设备持续执行,在桌面上查看或批准,最后回到手机接收结果。主对话保留发起设备的交互归属,子任务在执行节点推进,其他设备通过异步同步了解进展。完整体验仍在完善中。
每个 CoreNode 都可以独立运行自己的 Agent 工作流,具体能力取决于平台 Host、模型 Provider 和本地配置。当前仓库已经包含:
这些能力并不在所有平台完全相同。真正能否执行某项操作,要看目标节点的 Host 描述、系统权限、已安装服务和当前用户批准。
CLI 已经提供配对、发现、连接、session、传输方式和 Space 成员管理入口;节点之间使用 Link Access 建立认证连接,再由 PeerLink 承载 Space 请求和同步流量。适合在本地或受控局域网环境中试验:
operit2 cli link serve --bind <address:port> --token <strong-token>
operit2 cli link discover
operit2 cli link connect <url> --token <token> --save <session-name>
operit2 cli link space join <session-name>
operit2 cli link space show
命令参数以 operit2 --help 和 operit2 cli 的实际输出为准。不要使用默认开发 token 对公网监听,也不要把 token、私钥或真实业务数据放入公开日志和截图。
Operit2 的扩展面已经从“内置工具集合”逐步抽象为可管理的运行时与 SDK:
后续将进一步完善运行时、Host 能力、权限、兼容版本和状态范围的声明,让扩展能在兼容节点上执行或接续。当前请按目标平台验证插件及其依赖,跨设备可移植性仍是重点建设方向。
插件作者入口见 plugins/docs/README.md,公共 SDK 说明见 core/crates/plugin/sdk/README.md。
Web Access 让浏览器访问一个已运行的 CoreNode;打开页面不会自动让浏览器成为 Space 中的独立节点。浏览器 Host 与 WebAssembly 运行时是另一条工程路径,两者的能力和部署方式需要分别看待。
本地开发方式见下方“Web Access 开发”,访问与部署说明见 apps/web_access/README.md。
Operit2 把迁移视为个人设备连续性的一部分。CLI 已提供身份、存储路径、快照导出/恢复、备份检查以及 Operit 一代快照检查入口:
operit2 cli identity list
operit2 cli storage paths
operit2 cli export snapshot <snapshot.zip>
operit2 cli backup inspect <snapshot.zip>
operit2 cli backup restore <snapshot.zip>
快照、配置和身份数据的具体范围以当前命令帮助和格式版本为准。活动中的进程和实时会话仍然属于原节点,不能把“有备份”理解成已经完成了所有运行时的无缝迁移。
| 入口或平台 | 在当前架构中的位置 | 当前边界 |
|---|---|---|
| Flutter App | 移动端和桌面端的主要图形访问面,也可以承载一个 CoreNode | Android、Windows、Linux、macOS、iOS、OpenHarmony 和 Web 的 Host/构建条件不同 |
| Rust CLI/TUI | 本地 CoreNode 和运维/开发入口 | 当前 CLI Host 主要覆盖 Windows、Linux 和 macOS |
| PB_SBC01_H3 | 运行完整 Core 的 Linux 硬件主控入口 | 使用 Linux Host 加板卡 Host 能力,应用入口位于 apps/pb_sbc01_h3 |
| Web Access | 访问某个已运行 CoreNode 的浏览器入口 | 不是自动加入 Space 的浏览器节点,也不是中心化 Agent Server |
| WebAssembly/browser Host | 浏览器运行时的本地能力边界 | 与 Web Access 访问面分开,具体能力取决于浏览器和当前 Web 构建模式 |
| Linux 云端设备 | Space 中的普通 CoreNode | 长期在线可以承担更多任务,但不因此拥有中心身份 |
| ESP32 Edge Node | 设备侧 Edge Service 能力节点 | 不是完整 CoreNode,不持有 OperitApplication、Chat、Store、Identity 或 Space 同步 |
| Server | 未来的部署形态和 Host 方向 | 当前仓库还没有可以直接发布的完整 Server 产品 |
仓库包含多平台 Host 适配路径,但“能够构建”不等于“已经完成跨设备互操作验证”。平台构建、签名和发布条件请以 BUILDING.md 与对应 workflow 为准。
Operit2 采用从外到内逐层收紧的能力模型:
0. App Runtime Sandbox
虚拟机、容器、系统账号、Android 应用沙盒或服务器部署边界
1. Host Authorization
操作系统真正授予本机 Host 的文件、终端、网络和系统能力
2. AI Capability Limit
用户为 AI 选择的 ReadOnly、WorkspaceWrite 或 Full 能力模式
3. User Tool Approval
用户对具体工具调用的允许、询问或禁止
几个必须保持的原则:
Full 只表示 AI 能力限制放宽,不表示 Host 提权,也不能创造操作系统没有的能力;完整边界说明见 docs/permission-access-architecture.md 和 hosts/README.md。
Rust Core、平台 Host、节点连接、持久化同步和插件运行时已经形成工程基础。当前优先修复问题、打磨稳定性,尤其关注跨设备执行的取消、重连、资源释放和失败恢复。
以下方向仍在设计、完善或验证中:
当前以个人设备空间为主要场景,尚未验证数千节点调度,也不以企业组织治理为产品目标。长期运行品质仍需持续测试,Rust 本身不构成无资源泄漏的保证。更详细的设计取舍见 技术白皮书。
常用开发入口需要:
完整环境、签名、发布和平台差异见 BUILDING.md。不要把签名文件、API key 或发布 token 提交到仓库。
从仓库根目录执行:
cargo check --manifest-path apps/cli/Cargo.toml
cargo run --manifest-path apps/cli/Cargo.toml --bin operit2 -- --help
cargo run --manifest-path apps/cli/Cargo.toml --bin operit2 -- cli version
cargo run --manifest-path apps/cli/Cargo.toml --bin operit2 -- tui
没有参数时,operit2 默认进入 TUI。更多入口可以通过以下命令查看:
cargo run --manifest-path apps/cli/Cargo.toml --bin operit2 -- cli
cargo run --manifest-path apps/cli/Cargo.toml --bin operit2 -- cli link
cargo run --manifest-path apps/cli/Cargo.toml --bin operit2 -- cli web
从 apps/flutter/app 目录执行:
fvm install --skip-pub-get
fvm dart pub get --enforce-lockfile
fvm flutter analyze
fvm flutter run -d windows
windows 只是示例设备名。Android、Linux、macOS、iOS、OpenHarmony 和浏览器模式需要各自的平台工具链,且 Host 能力并不相同。
本地 Flutter Web 开发需要两个终端:
# 终端一:apps/flutter/app
fvm flutter run -d web-server --web-hostname 127.0.0.1 --web-port 4835
# 终端二:仓库根目录
node tools/dev_web_access_proxy.mjs --upstream-port 4835 --listen-port 4836
然后打开 http://127.0.0.1:4836。如果端口被占用,可以同时修改 Flutter 上游端口和代理的 --upstream-port,但要保持两者一致。
apps/
├── cli/ Rust CLI/TUI 入口
├── pb_sbc01_h3/ PB_SBC01_H3 硬件主控入口
├── flutter/app/ Flutter App 入口
├── web_access/ Web Access 前端边界和共享 bundle
└── server/ Server 形态预留目录
core/
├── crates/ Rust Core 各领域 crate
├── CRATE_BOUNDARIES.md crate 依赖方向和职责边界
└── examples/ Provider 和插件 SDK 示例
hosts/ Android、Windows、Linux、Apple、Web 与 boards Host 实现
plugins/ ToolPkg、Skill、SDK 类型和插件开发工具
tools/ 构建、发布、Web 和开发辅助脚本
docs/ 架构、权限、Link、迁移和版本文档
架构文档中标注为“目标”“计划”或“演进方向”的内容,不代表所有平台已经实现。判断当前实际行为时,请以源码、命令帮助输出、构建结果和目标平台运行结果为准。
Operit2 仍然是一项长期工程。我们欢迎代码、文档、测试、平台 Host、插件、Skill、MCP 集成和真实使用反馈。
如果你要修改跨设备能力,请尽量守住三条边界:
开始前请阅读 CONTRIBUTING.md。涉及协议、持久化、Binding、Host capability 或插件契约的改动,也请同步更新对应架构文档和测试。
仓库根目录的 LICENSE 当前为 GNU Affero General Public License v3.0(AGPL-3.0)。具体 crate、插件、ToolPkg、Web bundle、vendored 代码和第三方依赖可能附带自己的许可证或元数据;使用、分发或修改具体组件前,请同时核对该组件目录中的声明。
Rust
61.0%
Dart
29.6%
TypeScript
2.2%
Python
1.9%
Kotlin
1.6%
C++
1.0%