DopeAgent
活跃开发中个人 Agent 操作系统 —— 一个本地守护进程,多个轻客户端。
Rust 控制平面在本地运行,掌管运行时、LLM 提供方、渠道连接器、存储与事件。客户端保持轻量:React Web UI、全屏 Rust TUI、聊天渠道连接器和 TypeScript SDK —— 全部基于同一套 JSON Schema 契约。
概览
守护进程才是产品本体。所有必须保证正确的部分 —— 会话状态、提供方路由、工具 harness、事件日志 —— 都收敛在一个 Rust workspace 里,通过本地 HTTP API 暴露;客户端不过是它的一个视图。守护进程二进制为 `dope-cli`,HTTP API 为 `dope-api`。
跨语言契约以 JSON Schema 形式存放在 `schemas/`,是 API、事件与配置的唯一事实来源 —— Rust 守护进程与 TypeScript 客户端基于同一份定义生成,而不是靠约定手工对齐。
项目明确的工作假设是:长生命周期的 Agent 状态必须可观测、可重放、可安全演进;上下文工程、记忆、规划、交接与策略是重新设计,而非小修小补。
它做了什么
- Rust 控制平面:运行时、LLM 提供方、渠道连接器、存储、事件、HTTP API 与 harness 收敛在一个 workspace。
- 同一守护进程之上的三种界面:React 19 + Vite Web UI、全屏 Rust TUI(`dope-tui`)、聊天渠道连接器。
- TypeScript 客户端 SDK(`@dope/client`),基于共享的 JSON Schema 契约生成。
- 测试与生产环境隔离 —— `~/.dope-test` 使用 19192 端口,`~/.dope` 使用 19191;测试环境默认关闭真实连接器。
- 早期的 Go 守护进程已被 Rust workspace 完全替代,迁移过程记录在 `crates/MIGRATION.md`。