← 返回项目

CASE STUDY / 04

Jarvis

运行在 Mac 上的本地优先个人工作执行台,围绕工具审批、上下文管理与可插拔能力构建可控的 Agent 工作流。

角色
独立开发者 / 产品设计者
周期
2026.08 — 现在
状态
私人开发 · 持续迭代
后端测试
95 项
运行方式
本地优先
Pydantic AIFastAPIReactSQLiteOllamaMCP

项目背景

很多 Agent 产品首先解决的是“让模型调用更多工具”,但当工具可以访问文件、终端和外部服务后,更重要的问题变成了:用户能否看见 Agent 正准备做什么,能否在副作用发生前阻止它,以及长会话是否仍然可控。

Jarvis 是我为自己构建的一个 Mac 本地优先个人工作执行台。它不是一个追求完全自治的通用 Agent 网关,而是一次关于“如何让 Agent 可靠地参与真实工作”的持续实践。

我的职责

我独立负责 Jarvis 的产品定义、系统架构、后端与前端实现,以及测试基线建设。项目于 2026 年 8 月启动,目前保持私人开发,并以我的真实日常工作流作为主要验证场景。

核心流程

用户发起任务后,可以按轮次选择本地或云端模型,并启用搜索、文件、文档、编码、Skills 与 MCP 等能力。Agent 在执行过程中持续向界面输出状态;当某个工具可能产生副作用时,执行会暂停,等待用户批准或拒绝,再从原上下文继续。

会话同时保留两层信息:一层是用于追溯的完整消息档案,另一层是发送给模型的活动上下文。当对话变长时,系统可以自动或手动压缩活动上下文,而不删除完整历史。

Jarvis 当前架构:界面、Agent 内核、审批门、上下文管理与可插拔能力

关键设计

让工具执行可见、可暂停

审批不是聊天界面中的提示语,而是执行链路中的真实暂停点。需要确认的工具调用会被延迟,前端通过流式事件展示审批请求;用户作出决定后,系统再恢复原来的 Agent 运行。这样,文件和终端操作不会仅依赖模型“自觉谨慎”。

Jarvis 在终端写入发生前展示具体命令,并暂停等待用户批准或拒绝

写入尚未发生:用户可以检查具体命令,再决定批准或拒绝。

分离档案与模型上下文

完整历史适合审计和回看,却不适合无限制地重复发送给模型。Jarvis 将可追溯档案与有限的活动上下文分开管理,在保留历史的同时控制上下文长度,为更长、更稳定的工作会话打下基础。

用薄内核承载可插拔能力

搜索、文件系统、终端、文档和 MCP 集成以能力模块组织,而不是全部固化进 Agent 主循环。本地侧使用 Qwen3.5 9B / Qwen3.8 27B,也可以按任务切换到云端模型,让隐私、质量、速度和成本成为可选择的权衡。

当前验证

当前版本已有 95 项后端自动化测试,前端可完成生产构建。测试覆盖会话、模型配置、工具调用、审批、上下文压缩和部分安全边界。这些数字代表当前工程基线,不等同于产品已经成熟或完成安全审计。项目仍处于优化阶段,暂不发布缺少连续记录支撑的使用次数、成功率或效率数据。

用户批准后,Jarvis 恢复执行并验证三个目标标题均已写入

同一次运行在批准后恢复,并通过只读工具验证结果。

当前状态与下一步

Jarvis 仍是一个私人开发、持续迭代的项目,暂未公开代码仓库。当前实现已经可以支撑本地对话、工具调用、审批恢复和上下文管理,但仍有几项关键能力正在设计或建设中:

  • 统一的 Artifact Registry 与文件结果界面
  • 可持久化的 Runs / Steps,以及真正可恢复的停止机制
  • 更强的执行隔离与来源可追溯的上下文投影

现有终端命令限制属于应用层的尽力防护,并不等同于操作系统级沙箱。后续工作的重点,是把 Jarvis 从“可用的个人 Agent”继续推进为可观察、可恢复、可审计的个人工作系统。

延伸阅读