emperor-agent
本地运行的个人 AI Agent 工作站,TypeScript + Electron 实现,支持项目级记忆与多模式执行
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
本地运行的个人 AI Agent 工作站,TypeScript + Electron 实现,支持项目级记忆与多模式执行
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你正在开发一个复杂的开源项目,写到一半需要 AI 帮你梳理某个模块的设计思路,但又不想把项目代码上传到任何云端服务——你的代码就是你的护城河。传统方案里,你需要反复复制粘贴上下文,或者忍受云端 AI 对上下文窗口的严格限制。Emperor Agent 正是为这种场景设计的:它是一个运行在你本机的桌面 Agent 工作站,可以绑定本地项目目录,让 AI 在明确的权限边界内读写文件、调用工具、持续推进任务,而所有数据都留在你自己的磁盘上。
2024-2025 年,随着 Claude、GPT-4o、Gemini 等大模型的 API 能力持续增强,AI Agent(人工智能代理)概念从实验室走向产品化。Cursor、Windsurf 等 AI 编程工具大获成功,让开发者意识到:AI + 本地上下文 + 工具调用 的组合能大幅提升生产力。
然而,云端 Agent 服务面临两个根本矛盾:一是隐私与上下文限制的矛盾——本地项目越大,上传云端的风险越高,但本地磁盘上有价值的历史信息越多;二是灵活性与可控性的矛盾——云端服务给你什么工具你就用什么,而本地运行的 Agent 可以深度绑定你的工作流和项目结构。
Emperor Agent 的作者(GitHub 用户 TheSyart)从这两个痛点出发,开发了一款"皇帝风格"的个人 Agent 桌面应用——强调数据主权、长期记忆和多层次权限控制。项目于 2025-2026 年持续活跃更新,采用纯 TypeScript + Electron 技术栈,实现了从 Python CLI 到现代化 Electron 应用的完整重构。
Emperor Agent 不是一个简单的对话界面。它在设计上区分了四种工作模式:Chat(普通对话)、Build(项目工作)、Plan(规划模式) 和 Goal(目标模式)。这四种模式并非简单的前端 Tab 切换,而是背后完全不同的生命周期和执行语义。
Chat 适合日常问答、轻量任务,和传统 AI 聊天机器人最为接近。Build 则是一种"项目绑定"模式:当你启动一个 Build 会话时,Agent 会读取项目目录下的 AGENTS.md 配置文件,理解项目结构、工作流规范和团队约定,然后在这个上下文中工作——它知道你的代码风格,知道哪些文件是核心,知道你不希望它随意改动哪些东西。Plan 是一个"先规划再执行"的模式:Agent 先只读探索当前环境,提出方案,由你审批后再执行——适合高风险操作。Goal 是最复杂的模式:它锁定一个长期目标(比如"完成 XX 模块的重构"),在执行过程中持续跟踪进度,遇到障碍时自动重新规划,只有当证据和 Completion Gate(完成门控)同时通过时,才会标记任务为完成。
这种多层次的生命周期设计,让 Emperor Agent 从一开始就不是一个"玩具 demo",而是一个真正可以融入日常工作的生产力工具。
项目采用 pnpm monorepo 结构(实际为 npm workspaces),顶层 workspace 包含两个子包:packages/core(核心 Agent 运行时)和 desktop(Electron 桌面应用)。
packages/core 是整个系统的"大脑",托管在 Electron main 进程中,通过 preload IPC 向 renderer 层暴露 API。核心模块超过 30 个,涵盖:
Agent 运行时(packages/core/src/agent/):loop.ts 是 Agent 的主循环编排器(注释中标注为 MIG-CORE-011,即"AgentLoop 装配根"),负责组合 session history、memory、tools、subagents、scheduler、Team、control 和 routed AgentRunner 等子系统。runner.ts 负责具体执行逻辑。
模型层(packages/core/src/model/、providers/):支持多 Provider 接入,核心 Provider 实现包括 anthropic.ts(Claude 系列)、openai-compat.ts(支持 OpenAI 兼容接口的模型,包括本地部署的 Ollama、LM Studio 等)。profile.ts 实现了模型能力抽象:tool call、vision、reasoning 等能力都有对应的 adapter 映射,支持 reasoning effort 参数化配置(从 none 到 max 七档)。模型失败时支持自动切换备用模型,并提供按会话或按 Agent 轮的成本上限控制。
记忆系统(packages/core/src/memory/):Emperor Agent 的记忆系统采用**混合索引(Hybrid Index)**架构,结合向量检索(推测为 embedding-based)和稀疏检索,支持上下文压缩(compaction)机制,能在有限上下文窗口内保持长期项目记忆的一致性。store.ts 负责原子写入,token-tracker.ts 追踪 token 消耗用于成本控制。
工具系统(packages/core/src/tools/):内置文件系统工具(filesystem.ts)、网络工具(web-fetch.ts、web-search.ts)、SubAgent 任务分发(subagent-tasks.ts),并通过 Skill 机制扩展能力。builtin.ts 包含内置工具集,registry.ts 和 resolvers.ts 管理工具注册和调用路由。
权限与控制(packages/core/src/control/、permissions/):实现了细粒度的权限控制模型。文档 control-and-permissions.md 描述了"询问 / 智能 / 完全"三种执行权限等级:询问模式下高风险操作需用户确认;智能模式下低风险操作自动执行,高风险操作才询问;完全模式下所有操作均自动执行,无需确认。
Goals 与 Plans(packages/core/src/goals/、plans/):这是整个系统最复杂的子模块之一。completion-gate.ts 实现了完成门控机制——Goal 必须同时满足"有足够的完成证据"和"门控条件通过"两个条件才能标记为完成。blocker-cause-ledger.ts 追踪阻碍因素,evidence.ts 管理证据链,reviewer.ts 实现自动化评审。
调度与计划(packages/core/src/scheduler/、watchlist/):支持按时间或条件触发任务,提供了自动化工作流的可能。
MCP(Model Context Protocol)(packages/core/src/mcp/):MCP 是一种新兴的 Agent 上下文协议,允许 Agent 与外部数据源和工具深度集成。
SubAgents 与 Team(packages/core/src/subagents/、team/):支持多 Agent 协作模式,可以在单个 Goal 内启动子 Agent 分工。
desktop 包是标准的 Electron 应用,使用 electron-vite 构建。src/main/ 包含 Electron main 进程逻辑:core-host.ts 负责与 Core 层通信,ipc.ts 处理进程间通信协议,window-security.ts 实现了窗口安全策略,pet-sandbox.ts 负责"桌宠"功能的沙箱隔离。
src/renderer/ 是 Vue 3 + TypeScript 前端,src/views/ 包含多视图(Chat、Build、Plan、Goal 等),src/components/ 提供可复用 UI 组件,src/composables/ 和 src/runtime/ 包含前端状态管理和运行时逻辑。TailwindCSS 驱动样式,vitest 提供测试覆盖。
值得注意的是,Emperor Agent 的"桌宠"(Desktop Pet)功能也是一个特色亮点:在桌面应用中内置了一个互动式桌宠形象,为长时间工作的用户提供情感陪伴。
作者为 macOS、Windows 和 Linux 分别构建了安装包,通过 GitHub Releases 分发。用户无需在目标机器上预装 Node.js、Python 或 Git,拿来即用。缺点是这些安装包目前属于"未签名 Preview 版本",在 macOS 上运行会触发安全警告(Gatekeeper 拦截),需要用户手动允许。Linux 侧支持 AppImage 格式。
Emperor Agent 提供了 Skill 扩展机制,可以像安装应用一样为 Agent 添加新的能力包。每个 Skill 是一个自包含的模块,包含脚本、参考文档和工作流指导。
项目内置了一个 skill-creator 工具(skills/skill-creator/SKILL.md),指导用户如何创建新的 Skill。核心设计原则包括:
Skill 的打包格式由 SKILL.md 规范定义,支持脚本、参考文档和资源文件的捆绑。这套机制让 Emperor Agent 的能力边界不再是固定的——用户可以为自己的特定工作流定制 Skill 生态。
从源码构建需要 Node.js >= 22,因为 monorepo 的 package manager 使用了 pnpm/npm workspaces 的较新特性。安装依赖后,通过 npm run build 构建桌面应用,首次配置时需要在设置页添加 LLM Provider(Anthropic、OpenAI 或兼容接口)和对应的 API Key。
Emperor Agent 支持配置多个 Provider 和模型,通过 UI 随时切换。备用模型和成本上限控制对于需要控制 API 费用的用户非常实用。
配置通过 ~/.emperor-agent/ 下的 JSON 文件持久化(model_config.json、mcp_config.json、emperor.local.json),数据完全留在本机——这也是项目"本地优先"定位的直接体现。
作为一个个人维护项目(Owner 是普通 GitHub 用户),Emperor Agent 在以下方面存在局限:
发布稳定性:安装包均为未签名预览版,在 macOS 上存在 Gatekeeper 安全警告,在 Windows 上 SmartScreen 可能也会拦截。企业用户或对安全性要求高的场景需要谨慎评估。
文档深度:项目文档(docs/ 目录)结构清晰,但部分开发指南仍在建设中。对于想要深入定制的开发者,可能需要直接阅读源码(loop.ts 等核心文件有详细注释)。
生态成熟度:相比 Cursor、Copilot 等成熟产品,Emperor Agent 的 Skill 生态和社区规模还处于早期阶段。Skill 数量和插件丰富度是长期挑战。
多 Provider 兼容性:OpenAI 兼容 Provider 的支持程度取决于目标 API 对特定端点的实现完整性,本地部署的 Ollama/LM Studio 等可能需要额外调试。
Emperor Agent 代表了一个正在快速发展的技术方向:本地化 AI Agent 基础设施。随着模型 API 成本持续下降、本地模型(如 Llama 3、Qwen 2)能力快速提升,以及用户对数据主权意识的增强,"数据不出本机"的 Agent 需求会越来越强烈。
从架构设计看,Emperor Agent 的多 Provider 抽象层、Skill 机制和细粒度权限控制,都是为这种趋势提前布局。它不追求做一个"万能 Agent",而是在"个人长期工作伴侣"这个细分场景上做深——每个设计决策(项目绑定、Goal 完成门控、混合记忆索引)都指向同一个目标:让 AI 真正成为你工作流程的一部分,而不是每次都要从零开始的对话机器人。
项目当前处于高活跃度维护期(2026-07-26 刚有更新),对于喜欢折腾、追求数据主权和技术深度的用户,Emperor Agent 值得关注和尝试。
项目信息速览
| 维度 | 内容 |
|---|---|
| 官方名称 | Emperor Agent · 皇帝智能体 |
| 主要语言 | TypeScript(Core + Desktop),Vue 3(UI) |
| 许可证 | MIT |
| 最低依赖 | Node.js >= 22(源码构建)/ 无依赖(安装包) |
| 部署方式 | Electron 桌面应用(macOS/Windows/Linux) |
| 核心特性 | 多模式会话、Skill 扩展、MCP 支持、混合记忆索引、Goal 完成门控、桌宠陪伴 |
| 适用用户 | 追求数据主权、有本地项目需求的 AI 爱好者与开发者 |