Show HN: Juggler – 一个开源GUI代码智能体,由JUCE的创建者开发

Hacker News Top 工具

摘要

Juggler是一个开源GUI代码智能体,提供了一个可视化工作台,用于与LLM交互以编辑代码,具有可检查的工具调用、分支线程和可编辑上下文。它可以在本地或远程运行,并支持多种模型。

Hello HN,我不常在这里发帖,但希望能让大家看看我刚刚启动的一个新项目。我觉得我们绝对还需要一个AI代码智能体……<p>我是一名长期的C++开发者,在30多年的时间里,我创建了一些成功的音频开发工具(JUCE、Tracktion DAW、Cmajor DSP语言)。所有这些都源于我对不得不使用的某些东西感到不满,然后决定自己动手做一个我自己的版本。<p>因此,Juggler是我对AI代码智能体的尝试,源于我花了太多时间欣赏模型能做什么,但讨厌CLI体验,并对如何为这类工具提供更好的用户体验有一些看法。<p>更多详情请见网站和GitHub,但这里快速列出一些技术点,如果你对这些感兴趣的话:<p>会话是一个文档,而不是日志文件。每次对话都是一个Yjs CRDT树。它可以递归地分支成子线程,你可以向下钻取、回溯、编辑、撤销/重做,并检查所有内容:工具调用、审批以及发送给模型的原始上下文JSON等。UI基于Finder风格的Miller列,而不是大型的无限滚动,非常便于快速导航。<p>由于它是在本地Web服务器后面的CRDT,多个客户端可以通过P2P方式连接到实时会话:原生桌面应用、浏览器标签页或手机。在代码所在的机器上运行无头服务器,从任何地方查看。<p>几乎所有东西都是JavaScript插件:上下文中的每个项目(读/写/bash等)、LLM循环策略、斜杠命令及其UI。你可以检查、复刻或替换其中任何一个。我自己并不做太多智能体定制,但很多人会做,我很想看看他们对这个插件API的想法。<p>Go后端,Wails用于窗口(非Electron),纯类型检查的JS(严格JSDoc),Yjs用于文档。常见的BYOK提供商支持:Claude(CLI或API)、OpenAI/Codex、Gemini、Ollama、OpenRouter、DeepSeek等。<p>应用采用AGPLv3;扩展SDK和捆绑的扩展采用Apache-2.0,因此扩展没有附加任何copyleft。无需注册,无遥测,力求让人们无阻力尝试。<p>它目前还处于测试阶段,是一个人的副业项目。还没有经过现实世界的充分考验,但我相信一些和我有相似偏好的人会喜欢它!<p><a href="https:&#x2F;&#x2F;juggler.studio" rel="nofollow">https:&#x2F;&#x2F;juggler.studio</a>
查看原文
查看缓存全文

缓存时间: 2026/07/14 16:17

juggler-ai/juggler 源代码:https://github.com/juggler-ai/juggler

Juggler

没错,又一个人工智能编码代理。行业绝对需要再多一个。如果说 Juggler 有什么独特之处,那就是它面向那些希望对 LLM 在代码库上做的事情有更多动手控制权的人。它为你提供了一个可视化工作台:可检查的工具调用、分支线程、可编辑的上下文。更多介绍请访问网站:https://juggler.studio

以下是 TL;DR:

  • 这是一个真正的 GUI。 这不是控制台应用。它完全关乎图形化的视觉导航、检查和操控。
  • 会话是一棵树,而不是无尽滚动。 它是 Yjs 文档,不是记录文本。可以创建子线程、深入探索、回溯、比较和编辑。
  • 所有重要内容都可见。 工具调用、审批、线程结构、项目属性、原始上下文 —— 都布局在 Finder 风格的米勒列中,而不是藏在可折叠的聊天里。
  • 从下到上全是插件。 上下文项、斜杠命令、LLM 循环策略及其 UI 都是 JavaScript 扩展,你可以检查、分支或替换它们。
  • 可在本地、远程或同时运行。 在原生桌面应用和/或浏览器中使用相同的会话和相同的 UI。多个客户端可以连接到同一个会话。
  • 与常见的模型动物园对话。 支持 Claude Code(通过 CLI 或 API)、OpenAI(codex plan 或 API)、Gemini、Ollama、OpenRouter、Z.AI、Deepseek 等。

快速开始

从 Releases 页面(https://github.com/juggler-ai/juggler/releases)或 juggler.studio(https://juggler.studio)下载构建版本。每次下载都包含两个相同的主要部分:

  • Juggler 应用 —— 原生桌面应用。按你期望的方式工作。
  • juggler —— 无头命令行服务器。在终端中运行它,用于长期运行、远程或可网络访问的会话。它没有自己的窗口,但可以在其终端中键入 w 打开桌面应用,或使用它打印的浏览器 URL。

桌面应用、浏览器标签页(本地或远程机器上)都可以是查看同一服务器会话的客户端。

安装

  • macOS —— 下载 .dmg,打开它,将 Juggler 拖到 Applications 文件夹,然后启动。应用和其服务器捆绑在一起,因此服务器会自动启动。首次打开时,macOS Gatekeeper 可能会阻止下载:右键(或 Control+单击)应用 → 打开打开,或前往 系统设置 → 隐私与安全性 → 仍要打开。首次启动后即可正常打开。
  • Windows —— 下载 Juggler--setup.exe 并运行。它会在同一目录下安装桌面应用和匹配的 juggler.exe 命令行服务器(并可选择将 juggler 添加到 PATH),使两者永不分隔。
  • Linux —— 下载 juggler 服务器二进制文件并在终端中运行,然后通过浏览器或桌面应用连接。

桌面应用和服务器始终作为一个单元一起发布和安装——参见 docs/distribution.md

直接运行服务器

对于无头会话,只需运行:

juggler
# 打印从浏览器连接所需的一切信息

默认情况下,服务器会打开一个 Web UI 并打印其 URL 以及用于便捷连接的二维码。服务器默认仅本地主机——你的机器之外的设备无法访问。要让局域网上的其他设备连接,请在终端中按 p(或使用 --public 启动)。局域网访问没有密码:任何能访问该地址的人都可以驱动代理,因此只在你信任的网络中启用。超出局域网访问的功能不包含在此仓库中:从本源码构建的版本仅限本地 + 局域网。来自 juggler.studio 的官方 Juggler 二进制文件(https://juggler.studio)额外包含 WAN 访问模式,用于跨互联网连接你的服务器(请参阅 LICENSING.md 了解不在本仓库中的组件)。


它有什么不同?

你的对话是一棵可编辑的树,而不是聊天历史

大多数代理提供一个单一的线性记录,运气好的话可以回退。Juggler 为你提供一棵。任何点都可以分支成子线程。子线程可以再次分支。你可以直接导航、检查和编辑结构。UI 使用米勒列:左边是根,选中的项目向右展开属性和子项。(如果你用过 Finder 的列视图,你已经理解了基本操作。)

一切都是扩展

核心应用管理文档和编排。组成文档的几乎所有对象都由 JavaScript 扩展定义:

  • 上下文项 —— 对话中的每种项目类型(read-filereplace-textbash 等)既控制它如何与 LLM 通信,也控制它在 UI 中的显示方式。
  • 策略 —— 高级 LLM 循环,如 planresearch,或你自己的奇思妙想,也都是插件。
  • 命令 —— 像 /clear/compact 这样的斜杠命令都只是操作用户会话文档的插件。

并非每个 LLM 工作流都希望以无头 Python 脚本的形式躲在终端里。如果一个编排想法需要自己的 UI、控件或可视化,Juggler 是一个实现它的平台。

具有多客户端架构的桌面应用

Juggler 看起来像一个原生桌面应用,但底层是一个提供实时协作会话的本地 Web 服务器。该应用只是一个客户端。浏览器标签页可以是另一个客户端。另一台机器也可以是另一个客户端。这意味着你可以在代码所在的地方运行服务器——本地工作站、开发机、服务器群——并从任何方便的地方附加视图。

模型支持

Juggler 连接到常见的模型:Claude Code(通过 CLI 或 API)、OpenAI(codex plan 或 API)、Gemini、Ollama、OpenRouter、Z.AI、Deepseek 等。添加更多提供商很容易,因此如果你缺少某个提供商,请让你友好的邻居 LLM 以 PR 的形式添加。


从源码构建

扩展系统的理念是大多数人不需要实际构建应用。如果你需要,请参阅 CONTRIBUTING.md 了解完整设置。简要版本:

git clone --recurse-submodules https://github.com/juggler-ai/juggler.git
cd juggler && make build

如果你已经克隆但没有 --recurse-submodules,可以通过以下命令获取子模块:

git submodule update --init --recursive

Windows 二进制文件可以从任何主机交叉编译,使用 make build-windows;Linux 桌面应用必须本地构建。

技术栈

Juggler 是一个简单的原生应用,没有多余负担。后端是 Go,使用 Wails 进行窗口管理。UI 是由 Go 后端提供的 HTML/JS。会话文档使用 Yjs 存储和同步。扩展是 JavaScript。它不使用 Electron。前端使用类型检查的 JavaScript 而非 TypeScript:类型存在于 JSDoc 中,并在 CI 中通过严格的静态 linting 强制执行。源代码和发布版本之间没有构建步骤。


贡献

请参阅 CONTRIBUTING.md 了解设置、测试命令和项目约定。对于安全问题,请使用 SECURITY.md 中描述的私有渠道,而不是公共问题跟踪器。

许可证

Juggler 的应用代码根据 GNU Affero General Public License v3.0 或更高版本 许可。扩展 SDK(web/sdk/)和捆绑的扩展(web/extensions/)根据 Apache-2.0 许可,因此你可以构建扩展——包括闭源的——无需承担 copyleft 义务。请参阅 LICENSING.md 了解完整映射。对于 AGPL 部分,你可以自由使用、修改和重新分发——但你分发或作为服务托管的任何修改版本也必须以 AGPLv3 发布。如果你想用它做闭源的事情,请联系我讨论商业许可。

相似文章

@CryptoTied: 兄弟们!一个强调可视化控制的 AI 编码 Agent 来了 Juggler 是一个专注于“可控、可视化”的 AI 编码 Agent,核心目标是让开发者能真正掌控 LLM 与代码库的交互过程,而不是黑箱操作。 它提供了原生桌面应用 + Mi…

X AI KOLs Timeline

Juggler 是一个强调可视化和可控性的 AI 编码 Agent,提供原生桌面应用、会话树结构、插件化架构,并支持 Claude、OpenAI、Gemini 等多种模型,让开发者能清晰查看和编辑 LLM 的每一步操作。

1jehuang/jcode

GitHub Trending (daily)

jcode 是一个开源编码代理工具,专为多会话工作流设计,资源占用低,提供CLI安装方式,并在性能上优于Claude Code和Cursor Agent等现有代理。