CASE STUDY / 04
Jarvis
运行在 Mac 上的本地优先个人工作执行台,围绕工具审批、上下文管理与可插拔能力构建可控的 Agent 工作流。
- 角色
- 独立开发者 / 产品设计者
- 周期
- 2026.08 — 现在
- 状态
- 私人开发 · 持续迭代
- 后端测试
- 95 项
- 运行方式
- 本地优先
项目背景
很多 Agent 产品首先解决的是“让模型调用更多工具”,但当工具可以访问文件、终端和外部服务后,更重要的问题变成了:用户能否看见 Agent 正准备做什么,能否在副作用发生前阻止它,以及长会话是否仍然可控。
Jarvis 是我为自己构建的一个 Mac 本地优先个人工作执行台。它不是一个追求完全自治的通用 Agent 网关,而是一次关于“如何让 Agent 可靠地参与真实工作”的持续实践。
我的职责
我独立负责 Jarvis 的产品定义、系统架构、后端与前端实现,以及测试基线建设。项目于 2026 年 8 月启动,目前保持私人开发,并以我的真实日常工作流作为主要验证场景。
核心流程
用户发起任务后,可以按轮次选择本地或云端模型,并启用搜索、文件、文档、编码、Skills 与 MCP 等能力。Agent 在执行过程中持续向界面输出状态;当某个工具可能产生副作用时,执行会暂停,等待用户批准或拒绝,再从原上下文继续。
会话同时保留两层信息:一层是用于追溯的完整消息档案,另一层是发送给模型的活动上下文。当对话变长时,系统可以自动或手动压缩活动上下文,而不删除完整历史。
关键设计
让工具执行可见、可暂停
审批不是聊天界面中的提示语,而是执行链路中的真实暂停点。需要确认的工具调用会被延迟,前端通过流式事件展示审批请求;用户作出决定后,系统再恢复原来的 Agent 运行。这样,文件和终端操作不会仅依赖模型“自觉谨慎”。

写入尚未发生:用户可以检查具体命令,再决定批准或拒绝。
分离档案与模型上下文
完整历史适合审计和回看,却不适合无限制地重复发送给模型。Jarvis 将可追溯档案与有限的活动上下文分开管理,在保留历史的同时控制上下文长度,为更长、更稳定的工作会话打下基础。
用薄内核承载可插拔能力
搜索、文件系统、终端、文档和 MCP 集成以能力模块组织,而不是全部固化进 Agent 主循环。本地侧使用 Qwen3.5 9B / Qwen3.8 27B,也可以按任务切换到云端模型,让隐私、质量、速度和成本成为可选择的权衡。
当前验证
当前版本已有 95 项后端自动化测试,前端可完成生产构建。测试覆盖会话、模型配置、工具调用、审批、上下文压缩和部分安全边界。这些数字代表当前工程基线,不等同于产品已经成熟或完成安全审计。项目仍处于优化阶段,暂不发布缺少连续记录支撑的使用次数、成功率或效率数据。

同一次运行在批准后恢复,并通过只读工具验证结果。
当前状态与下一步
Jarvis 仍是一个私人开发、持续迭代的项目,暂未公开代码仓库。当前实现已经可以支撑本地对话、工具调用、审批恢复和上下文管理,但仍有几项关键能力正在设计或建设中:
- 统一的 Artifact Registry 与文件结果界面
- 可持久化的 Runs / Steps,以及真正可恢复的停止机制
- 更强的执行隔离与来源可追溯的上下文投影
现有终端命令限制属于应用层的尽力防护,并不等同于操作系统级沙箱。后续工作的重点,是把 Jarvis 从“可用的个人 Agent”继续推进为可观察、可恢复、可审计的个人工作系统。