Jelly:本地多智能体工作台

在自己的 Mac、Linux 或虚拟机上运行多个持久化 AI 智能体,配真实移动端 Web UI 与本地 Chrome。

Star 数
★ 55
最近更新
2 天前
License
MIT
主语言
TypeScript

30 秒速览

可在哪里用
平台专用ChatGPT · OpenAI API
开始前需要
Bun 1.3.9+Node.js 24+Linux(用于托管浏览器桌面和 sudo 交接)Google Chrome 或 Chromium(用于可选的浏览器桌面)xclip/usr/bin/python3支持 askpass 的 sudoShell / 命令行网络访问本地文件系统MCP Server
典型场景
独立开发者用一台 VM 运营整个业务,希望把邮件、运维、抓取等杂活分派给不同项目目录下的多个智能体。
主要局限
不是沙箱:智能体以你的 OS 用户权限执行 shell 与文件操作,没有逐工具审批,任何能访问该服务的人都可以调用这些工具。

这个 Agent 能做什么,适合哪些场景?

Jelly 是一个本地优先的多智能体系统,面向用一台虚拟机跑完整个业务的个人开发者。它基于 Bun、React、SQLite 以及 Pi agent harness 构建,前端开发端口为 5173,生产服务端口为 3100,实例数据默认写入 .jelly/ 目录,用户级 MCP 配置与 OAuth 缓存放在 ~/.jelly/。你可以自由创建任意数量的智能体,按项目目录分组,每个智能体拥有独立的浏览器窗口、配置文件和私有桌面,并共享同一个受限的权限模型。运行智能体必须连接 ChatGPT 订阅或填写 OpenAI API 密钥,官方明确说明没有免密钥演示模式,模型对话会发送给你选择的模型提供商。它定位为“可信用户工具”而非沙箱:智能体以你的操作系统用户权限执行 shell 命令和访问文件,sudo 请求通过私有认证卡片输入密码,密码不会发给模型也不会被 Jelly 保存。

智能体具备 shell 工具、子智能体与 MCP 连接,支持文件上传、内联图片和可下载产物。浏览器工具允许智能体读取有限的可见文本与元素引用、点击/填写非机密字段、管理会话内标签页、滚动、等待文本或就绪状态,并读取经过脱敏的错误诊断;这些操作共享每个智能体的隔离与私有控制门禁,引用在观察、导航或交接后失效,快照只覆盖顶层 DOM。当智能体需要登录网站时,你可以在 Web UI 中通过 noVNC 接管浏览器;剪贴板在本地与远端之间传输纯文本,上限 12,000 字符,不进入聊天记录或日志。apply_patch 工具在 OpenAI API 和 ChatGPT 上提供 Codex 风格的多文件增/改/删/移补丁,要求精确唯一上下文,拒绝符号链接与硬链接源,单文件/补丁上限 1 MiB、最多 64 个操作、合计 16 MiB,写入并非事务性,失败会记录在 mutation ledger 中。管理员命令通过 request_sudo 执行,需要 Linux、支持 askpass 的 sudo 和 /usr/bin/python3。首个消息发送时,Jelly 会发起一次无工具的 OpenAI 小型请求,为智能体生成海味主题的自动命名。

  1. 独立开发者用一台 VM 运营整个业务,希望把邮件、运维、抓取等杂活分派给不同项目目录下的多个智能体。
  2. 需要让智能体登录内部或第三方网站,但又不想把密码交给模型的用户:先让智能体发起登录,再用 Web UI 的 VNC 手动接管完成登录。
  3. 想用现有的 ChatGPT 订阅而非单独购买 API 额度的个人用户,可在设置中通过设备码登录连接账号。
  4. 需要在服务器上安装软件包或管理系统服务的运维场景:让智能体调用 request_sudo,由用户在私有认证卡片中审批并输入密码。
  5. 希望在手机或笔记本上远程使用智能体的人:配置 Tailscale 后把 Web UI 添加到 iPhone 主屏幕,获得接近原生应用的体验。
  6. 开发者需要多文件补丁级代码修改:使用 apply_patch 在 OpenAI API 或 ChatGPT 通道上一次性增删改移多个文件。

如何安装或部署这个 Agent?

需要 Bun 1.3.9+ 与 Node.js 24+;托管浏览器桌面与 sudo 交接需要 Linux。

git clone https://github.com/dctanner/jelly.git
cd jelly
bun install
bun run dev

打开 http://127.0.0.1:5173 即可。本地环境变量写入 .env.local(已被 Git 忽略),如需启用网页搜索与抓取,在其中设置 FIRECRAWL_API_KEY。

生产模式:

bun run build
bun start

随后打开 http://127.0.0.1:3100,并先停止开发模式(两者默认共用 API 端口 3100)。

在 Debian/Ubuntu x86-64 上,若已安装 Google Chrome 或 Chromium,可安装可选的浏览器桌面:

bun run setup:desktop

若浏览器不在常规系统路径,设置 JELLY_BROWSER_PATH。要通过 Tailscale 私有网络访问:

bun run dev:tailscale

如何使用这个 Agent?

首次使用必须在 Settings 中连接 ChatGPT 账号(一次性设备码登录,输入设置页显示的代码后自动连接)或填入 OpenAI API 密钥,否则无法发送消息;自动模式优先 ChatGPT,其次 API 密钥。

点击左上角 + 立即创建并打开 New Agent,它会继承当前项目或获得项目外的私有工作区;发送第一条消息前可点击居中名称或头像就地编辑,改过名字即表示不参与自动命名。

为符合条件的 ChatGPT 订阅(Pro 500 或 Enterprise)或 OpenAI API 访问,可在 Settings → Model 或输入框的模型菜单中选择 GPT-6 Astra Ultrafast,它会以 service_tier: "ultrafast" 请求 Astra,标准 Astra 仍为默认,账户权限错误会直接暴露而不会静默回退。

在 Agent computer 面板中选择 Take control 接管某个智能体的浏览器;连接后可用 Paste to remote 和 Copy from remote 在两个设备间传输文本剪贴板;若会话过期或 Cookie 丢失导致控制卡住,可用 Agent computer → Recover lost control… 断开旧控制者并清空私有标签页与远端剪贴板,网站登录状态仍会保留。

开发校验:

bun run check
bun run test:desktop

bun run check 包含结构化浏览器的 Chromium 测试、补丁文件系统测试和本地 provider 传输测试;bun run test:desktop 额外需要 Linux 桌面运行时。测试使用临时数据和固定夹具,不需要付费模型调用。

这个 Agent 有哪些优点和局限?

优点
  • 多智能体天然隔离:每个智能体有独立浏览器窗口、配置文件、标签页、剪贴板与人工控制状态,最多可同时分配 8 个浏览器会话。
  • 凭据保护设计具体:sudo 密码只在私有认证卡片输入,不发给模型也不被 Jelly 保存;剪贴板传输仅限纯文本、上限 12,000 字符且不进入日志。
  • 支持使用现有 ChatGPT 订阅(设备码登录可跨 Tailscale 工作),不必额外购买 API 额度。
  • apply_patch 提供 Codex 风格多文件迁移,并有明确的体积与操作数上限以及 mutation ledger 失败记录。
  • 本地优先的数据布局清晰:.jelly/ 存对话、凭据、浏览器配置与产物,~/.jelly/ 存 MCP 配置和 OAuth 缓存,便于备份与审计。
局限
  • 不是沙箱:智能体以你的 OS 用户权限执行 shell 与文件操作,没有逐工具审批,任何能访问该服务的人都可以调用这些工具。
  • 绑定模型供应商:运行智能体必须使用 ChatGPT 订阅或 OpenAI API 密钥,没有免密钥演示模式,本地存储也不等于本地推理。
  • 平台限制明确:托管浏览器桌面和 sudo 交接需要 Linux,桌面运行时还依赖 xclip 与 /usr/bin/python3。
  • apply_patch 的写入并非事务性,失败可能留下部分修改;路径不做沙箱隔离,且拒绝符号链接与硬链接源。
  • 安装步骤偏多:需要同时具备 Bun 1.3.9+ 与 Node.js 24+,生产与开发共用 3100 端口,切换模式前必须停止另一端。

这个 Agent 与同类方案有什么区别?

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
Jelly:本地多智能体工作台 当前 52 · 缺口较多 — ★ 55 2 天前 TypeScript ChatGPT · OpenAI API
Auto Browser 62 · 存在缺口 自托管服务免费 + 模型费 ★ 897 1 天前 Python OpenAI API · Claude API
Aiden 65 · 存在缺口 命令行工具免费 + 模型费 ★ 844 20 天前 TypeScript ChatGPT · OpenAI API · Claude API
JoySafeter 59 · 缺口较多 自托管服务免费 + 模型费 ★ 312 5 个月前 Python —

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
缺口较多
52/ 100 五分制 2.6 / 5
信任安全 12/29
可靠稳定 8/14
适用触发 10/18
规范维护 10/18
有效结果 7/13
证据核验 5/8
查看各维度的扣分理由
信任安全12 / 29 · 2.1/5

README 明确声明 Jelly 是 trusted-user 工具而非沙箱:agent 以 OS 用户权限执行 shell 与文件操作,且无逐工具审批;apply_patch 路径未沙箱化,sudo 在策略允许时立即执行。这属于有意的设计取舍,但 least_privilege 与 user_confirmation 因此仅得 1。加分项:sudo 密码走私有认证卡、不发给模型也不保存;浏览器 secret 字段启发式检测并引导使用私有登录;剪贴板仅文本、限 12000 字符、不进入聊天/日志;.jelly/ 与 ~/.jelly/ 明确不入版本控制。扣分项:依赖仅锁定部分版本(多个 ^ 范围),无 lockfile 证据、无依赖审计或漏洞缓解说明,dependency_security 仅 1;apply_patch 非事务性、失败可留部分修改,rollback 仅靠 mutation ledger 报告,得 1;external_effects 因浏览器点击/导航/输入等网站副作用不可撤销而得 1;source_attribution 仅 MIT 与 noVNC MPL-2.0 一句,发布者身份未验证,得 1。

可靠稳定8 / 14 · 2.9/5

自洽性较好:README 的命名、浏览器隔离、补丁限制与测试文件(agent-naming.test.ts、apply-patch-transport.test.ts)描述一致,且测试使用本地 stub 与确定性 fixture,不依赖付费模型调用,self_consistency 得 2。失败信息有具体设计:命名失败/超时保留 New Agent 且不重试、不阻断任务;账号权限错误显式暴露而非静默回退;补丁失败写入 mutation ledger,failure_messages 得 2。扣分项:依赖可用性依赖 Bun 1.3.9+、Node 24+、Linux 桌面运行时、系统 Chrome/Chromium、xclip、/usr/bin/python3 与 sudo askpass,环境门槛高且无降级路径说明,dependency_availability 仅 1。

适用触发10 / 18 · 2.8/5

受众与场景清晰:面向在单台 VM/Mac/Linux 上经营业务、需要多 agent 与移动端访问的用户,audience_and_scenarios 得 2。能力边界写得具体:浏览器快照仅顶层 DOM、引用会过期、secret 检测为启发式、补丁 1 MiB/64 操作/16 MiB 上限、最多 8 个浏览器会话、Stop 无法撤销已发送动作,capability_boundaries 得 2。扣分项:触发精度不足——自动命名在首条消息时发起一次额外模型请求,虽可编辑名称退出,但默认行为对用户是隐式的,trigger_precision 仅 1。环境适配有明确 Linux 限定与 Tailscale 建议,environment_fit 得 2。

规范维护10 / 18 · 2.8/5

信息架构良好:README 分节覆盖快速开始、生产、浏览器桌面、管理员命令、安全与本地数据、开发,并有 docs/ARCHITECTURE.md、DESIGN.md、ROADMAP.md 指引,information_architecture 得 2。安装说明具体到命令与端口(bun install、bun run dev、127.0.0.1:5173/3100),install_notes 得 2。已知限制写得异常充分(非沙箱、sudo 即时执行、补丁非事务、剪贴板限制、Stop 局限、会话上限),known_limitations 得 3。许可证为完整 MIT 文本且 package.json 标注 MIT,license 得 3。扣分项:版本号仅 0.1.0,无 CHANGELOG,versioning_changelog 仅 1;命名稳定性弱——README 出现 GPT-6 Astra Ultrafast 等具体模型名与 service_tier,模型可用性随账号变化,naming_stability 仅 1;示例与 FAQ 仅快速开始与少量说明,无 FAQ,examples_and_faq 仅 1;维护责任未声明(无 maintainer、无贡献指南、发布者未验证),maintenance_responsibility 仅 1。

有效结果7 / 13 · 2.7/5

输出可用性尚可:提供本地 Web UI、移动端体验、文件上传、内联图片、可下载产物与结构化浏览器工具,output_usability 得 2。边际价值明确:本地优先、多 agent 分组、私有浏览器交接、sudo 请求流程,相对通用 agent 框架有差异化,marginal_value 得 2。扣分项:成本收益不清晰——必须自备 ChatGPT 订阅或 OpenAI API key,无无 key 演示模式,Ultrafast 明确更高定价与独立限额,且需自维护 VM、Chrome、VNC、Tailscale 等基础设施,cost_benefit 仅 1。

证据核验5 / 8 · 3.1/5

claim_traceability 得 2:README 的多数声明可对应到具体测试文件(命名、补丁传输、浏览器工具)与文档路径,但未逐条给出可核验的引用编号。cross_source_corroboration 得 2:README、package.json 脚本与测试文件在命名流程、补丁工具、浏览器工具集上相互印证。fact_inference_separation 得 2:README 明确区分模拟内容(演示数据、sudo 与网站登录为模拟)与真实能力,测试注释也声明使用隔离 fixture 且不发真实模型请求。扣分项:无独立第三方验证、无发布者验证,且本次为静态审查未执行任何代码,故不高于 2。

风险与缓解建议
  • Jelly 明确不是沙箱:agent 以你的 OS 用户权限执行 shell 与文件操作,且默认无逐工具审批;请仅在 loopback 或可信 Tailscale 网络内运行,切勿暴露到公网。
  • apply_patch 的路径未沙箱化,且文件系统写入非事务性,失败可能留下部分修改;对重要仓库使用前应先备份或使用版本控制。
  • sudo 在策略允许时立即以 root 执行,无二次确认;请审慎配置 sudoers 与 askpass。
  • 依赖仅部分锁定版本(多个 ^ 范围),未提供 lockfile、依赖审计或漏洞缓解说明;部署前应自行锁定并审计依赖。
  • 运行需要 Bun 1.3.9+、Node 24+、Linux 桌面运行时、系统 Chrome/Chromium、xclip、/usr/bin/python3 与 sudo askpass,环境门槛高且无降级路径。
  • 必须自备 ChatGPT 订阅或 OpenAI API key,无无 key 演示模式;Ultrafast 定价更高且限额独立,成本需自行评估。
  • 发布者身份未经验证,维护责任与更新路径未声明,版本仅 0.1.0 且无 CHANGELOG;长期维护与升级风险需自行承担。
  • 本次为静态源码审查,未执行任何代码,也未做独立测试;所有结论仅基于所提供文件。
证据充分度:低 评估于 2026年10月3日 审查版本 fa92c032ea61
查看完整评分方法 →

常见问题

使用 Jelly 需要付费吗?
软件本身是 MIT 许可,但运行智能体必须连接 ChatGPT 订阅或 OpenAI API 密钥并按用量付费;官方明确说明没有免密钥演示模式。选择 GPT-6 Astra Ultrafast 的 API 定价更高且有独立限额。
智能体能以 root 身份执行命令吗?
可以,但要经过你。智能体调用 request_sudo 后,若你的 sudo 策略允许则立即执行,否则 Jelly 会展示命令并在私有认证卡片中索取密码,密码不会发送给模型也不会被 Jelly 保存,并且需要 Linux、支持 askpass 的 sudo 和 /usr/bin/python3。
能把它暴露到公网当 SaaS 用吗?
不能。README 明确说明 Jelly 是可信用户工具而非沙箱,应保持在回环地址或可信 Tailscale 网络内,不要直接暴露到公网;任何能访问该应用的人都可以控制它的工具。
点击 Stop 能撤销已经发生的操作吗?
不能完全撤销。Stop 会阻止排队中的浏览器操作并丢弃已取消的结果,但已经发送给 Chromium 的动作可能仍会完成,导航、点击、输入及其网站副作用无法回滚。
在 macOS 上能用吗?
README 说可以在 Mac 上运行,但托管浏览器桌面和 sudo 交接需要 Linux,桌面运行时还依赖 xclip 与 /usr/bin/python3,因此在 macOS 上这些能力不可用。
在 GitHub 查看 ↗ 安装 ↓

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents