GraphCode

把多个真实终端里的编码 Agent 会话连成一张可随时接管、纠偏的图。

Star 数
★ 139
最近更新
1 天前
License
NOASSERTION
主语言
Swift

30 秒速览

运行形态
桌面应用命令行工具
可在哪里用
兼容但需适配ChatGPT · Codex · Claude Code
费用
软件免费,模型调用费用自付
上手难度
中 · 需要几步配置
开始前需要
macOS 15+(Apple Silicon / arm64)PATH 中至少一个 Agent CLI:claude、copilot、codex、opencode 或 pizmx 会话守护进程GhosttyKitShell / 命令行网络访问本地文件系统
典型场景
你想在一个仓库上并行推进多条独立工作线(重构、修构建、修 issue),需要在一张图上看到它们之间何时该交接,而不是开十个终端窗口自己盯。
不适合
  • 使用 Windows 或 Intel Mac 的团队(目前仅支持 Apple Silicon 上的 macOS 15+)
  • 希望工具自带模型或 Agent CLI 的用户——GraphCode 不捆绑任何 Agent
  • 不接受 FSL-1.1-MIT 许可、要基于它做竞品商业分发的团队

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

GraphCode 是一款 macOS 应用,把多个真实的 CLI 编码 Agent 会话组织成有向图:每个节点是一个循环(loop),也就是某个 CLI 会话中的一个工作单元,可由 Claude Code、GitHub Copilot CLI、Codex、OpenCode 或 pi 执行,逐循环选择;每条边是节点之间的交接、消息或派生,两端可以是不同的 Agent。循环分为回合制、目标制、时间制和复合型四类,区别在于你不再需要手工处理什么:检查、停止条件、触发时机,或整段提示词。应用本身不做调度,时间制循环的周期写在会话内部的 `/loop` 提示词里,守护进程 `graphcoded` 只负责保持会话存活、触发交接边并轮询目标判定条件。每个循环的终端是 `zmx` 会话,退出应用甚至重启机器后仍可 `--resume` 恢复,所以它始终是一个你能 attach 进去并当场纠正的活动终端,而不是已经跑完的后台任务。状态存放在 `~/.graphcode/`,不会写入你打开的项目目录;工作区(`~/.graphcode-<name>`)之间完全隔离。

GraphCode 由四部分组成:UI graphcode.app 提供项目侧边栏、图形画布和每个循环的终端工作区(标签页、分屏、⌘K 跳转、⌘⇧R 遍历向你求助的循环);后台守护进程 graphcoded(launchd agent)持有每个项目的图、触发交接边、轮询目标谓词,并在应用未打开时维持无人值守会话;CLI graphcode 复用同一守护进程,提供 projects、status、node create --backend claudeCode|copilotCLI|codex|openCode|pi、node send --follow-up、reap --dry-run 等命令;zmx 第三方会话守护进程保持每个循环的 PTY 存活,GhosttyKit 负责终端渲染。典型流程是:添加项目(本地目录、URL 克隆,或通过 SSH 连接远程仓库,在服务器上跑循环、由这台 Mac 操控),在画布上新建循环并写提示词、选 Agent(默认 Claude Code,可在 Settings ▸ New loops use 修改),点击节点进入该循环的终端,再在节点之间拖拽连线,把边设置成交接(源循环结束时触发)、消息或派生,并可加条件与循环保护。目标制循环的完成判定可以是 shell 谓词,创建时有 Test 按钮按守护进程的方式先跑一遍。Copilot 循环可通过 Settings ▸ Preferred versions 固定 CLI 版本,该设置会传给新建与恢复的 Copilot 会话以及标题/摘要请求,也支持在 ~/.graphcode/settings.json 中写 "copilotPreferredVersion"。

  1. 你想在一个仓库上并行推进多条独立工作线(重构、修构建、修 issue),需要在一张图上看到它们之间何时该交接,而不是开十个终端窗口自己盯。
  2. 你把「修到测试通过为止」这类任务交给目标制循环:完成条件写成 make test 退出码为 0,然后去干别的事,需要时再 attach 进去干预。
  3. 你需要按小时做 issue 分诊或例行巡检,用时间制循环把 /loop 1h … 写进提示词,让周期留在会话内部而不是外部调度器里。
  4. 你要把多步流水线串起来,用复合型循环让一个子图从头跑到尾,并让其中一个循环再派生出子循环。
  5. 你在多台机器上工作,希望循环跑在远程主机(SSH、密钥认证、服务端需有 zmx),而由本机统一观察和纠正。
  6. 你同时打理互不相关的几条业务线,用 Workspace(⌥⌘1…⌥⌘9 切换)把各自的图、循环和终端完全隔离开。

如何安装或部署这个 Agent?

环境要求:macOS 15+ 且为 Apple Silicon(arm64),PATH 中至少有一个编码 Agent CLI(claude、copilot、codex、opencode 或 pi)——GraphCode 不捆绑任何一个。

用 Homebrew 安装:

brew install --cask scgopi/graphcode/graphcode

或从最新 .dmg 拖入 Applications(发布版已做 Developer ID 签名与公证):

open https://github.com/scgopi/GraphCode/releases/latest/download/graphcode-macos-arm64.dmg

从源码构建需要 mise(Xcode、tuist、swiftlint、zig 都通过它管理)以及各子模块:

git submodule update --init --recursive
make doctor
make third-party     # builds zmx and GhosttyKit (zig)
make install-zmx install-cli daemon-install
make run-app
make test            # unit tests
make check           # swiftlint + swift-format, both strict

若想在已安装正式版旁边跑本地构建,可复制 .env.example 为 .env.local 并选择自己的 bundle-ID 前缀:

make dev-run-app

如何使用这个 Agent?

首次使用先添加项目,再建循环,然后 attach 查看、连线编排。

在图形界面里:侧边栏 ⊕ 添加项目;画布上的 ⊕ 新建循环,写提示词、选执行它的 Agent(默认 Claude Code,可在 Settings ▸ New loops use 修改);点击节点打开该循环的终端工作区,用 ⌘K 跳到任意循环、⌘⇧R 依次走到正在向你求助的循环;在节点之间拖拽建立边。

同一个守护进程也能用命令行驱动:

graphcode projects
graphcode --help
graphcode status <project>
graphcode node create --backend claudeCode
graphcode node send --follow-up
graphcode reap --dry-run

固定 Copilot CLI 版本时,先在每台会运行 Copilot 的机器(含远程主机)安装该版本:

npm install -g @github/[email protected]
copilot --prefer-version 1.0.84-5 --version

然后在 Settings ▸ Preferred versions ▸ Copilot CLI 中选择该版本;不打开应用时,直接写配置文件(每次启动都会读取,无需重启守护进程):

{
  "copilotPreferredVersion": "1.0.84-5"
}

多工作区用 ⌥⌘1…⌥⌘9 切换、⌘ / ⌘⇧ 前后跳转、⌥⌘N 新建,CLI 侧通过同一个变量对齐:

GRAPHCODE_SUPPORT_DIR=~/.graphcode-work graphcode status <project>

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

优点
  • 同一张图里可以混用不同 Agent:一个 Codex 循环交接给 Claude Code 循环,后者再给 Copilot 循环发消息,边本身不关心两端是谁。
  • 循环的终端是 zmx 会话,退出应用甚至重启后仍可用 --resume 恢复原会话,而不是重开一个重复任务,因此运行中的循环始终可 attach、可中途纠正。
  • 守护进程 graphcoded 独立于 UI 运行,应用关掉后仍会触发交接边、轮询目标谓词并维持无人值守会话。
  • 状态全部放在 ~/.graphcode/,明确不向你所打开的项目目录写入任何内容。
  • 工作区之间完全隔离(各自的图、各自的 graphcoded、各自的 Dock 图标),适合把不相关的几条工作线分开监控。
局限
  • 仅支持 macOS 15+ 的 Apple Silicon(arm64),Windows 移植仍是 preview,不构成发布平台承诺。
  • 应用不捆绑任何 Agent CLI,必须自行安装并在 PATH 中可用,模型与用量成本也由用户自己承担。
  • Codex、OpenCode 和 pi 没有 /loop 技能,时间制循环必须开启实验性的 Daemon heartbeat 才能实现。
  • 许可证为 FSL-1.1-MIT:不允许基于它做竞品商业分发,每个版本发布两年后才转为纯 MIT(GraphcodeKit/ 与 graphcode-cli/ 为 MIT)。
  • 部分操作有前置步骤:例如固定 Copilot CLI 版本需要先在每台主机(含远程)安装该版本,否则循环启动时并不存在。

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

README 明确提到灵感来自 Supacode,两者都采用守护进程维持终端会话的主干,但 Supacode 的单位是 worktree,GraphCode 的单位是循环组成的图。此外 GraphCode 建立在 Ghostty(终端引擎)与 zmx(会话守护进程)之上,并可与 Claude Code、GitHub Copilot CLI、Codex、OpenCode、pi 这些 CLI Agent 配合使用。

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

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
GraphCode 当前 48 · 缺口较多 桌面应用免费 + 模型费 ★ 139 1 天前 Swift ChatGPT · Codex · Claude Code
hcom 69 · 存在缺口 命令行工具免费 + 模型费 ★ 566 1 天前 Rust Codex · Claude Code
Vigil 多智能体终端编排器 69 · 存在缺口 桌面应用免费 + 模型费 ★ 29 3 天前 Swift Codex · Claude Code
Agent Skills 技能库 67 · 存在缺口 Agent 插件 / 技能免费 + 模型费 ★ 240 1 个月前 Python Codex · Claude Code

FollowAgents 如何评估这个 Agent?

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

信任维度:README 明确说明状态写入 ~/.graphcode/,且“Nothing is ever written inside a project folder you open”,这是可核查的最小权限声明,但未给出沙箱或权限清单,故 least_privilege 仅 1。user_confirmation 方面,README 提到 goal 的 done check 有 Test 按钮、reap --dry-run,但缺少对破坏性操作的统一确认流程,故 1。data_flow_transparency 仅说明本地状态目录与远程 SSH 运行,未描述数据流向第三方 agent CLI 的细节,故 1。sensitive_data_handling 有测试证据:agentRuntimes.test.ts 显示只读取 Nod 自己的 Keychain 项(app.graphcode.nod/anthropic-api-key、github-token),并清除继承的 ANTHROPIC_AUTH_TOKEN、CLAUDE_CODE_OAUTH_TOKEN 等,属于具体实现证据,故 2。dependency_security 方面,CI 固定了 actions/checkout 的 commit hash,但 README 要求用户自行安装 claude/copilot/codex 等 CLI,未提供依赖版本锁定或漏洞扫描,故 1。external_effects 方面,README 承认会启动 daemon、创建 zmx 会话、可远程 SSH 执行,但未提供影响范围清单或回滚说明,故 1。rollback 方面,仅提到 sessions outlive everything 与 --resume,未描述失败恢复或状态回滚机制,故 1。source_attribution 方面,README 明确致谢 Supacode、Ghostty、zmx,LICENSE 区分 GraphcodeKit/graphcode-cli 的 MIT 与其余 FSL-1.1-MIT,并说明 ThirdParty 保留各自许可,故 2。

可靠稳定8 / 14 · 2.9/5

可靠性维度:self_consistency 方面,README 对 loop 类型、daemon、CLI 的描述与测试文件中的协议(NodProtocol.swift、parseCommand)基本一致,contract.test.ts 用同一事件列表验证 Swift 解码与 TS 解析,故 2。dependency_availability 方面,README 要求 macOS 15+ Apple Silicon、mise、submodules、zig 构建 zmx 与 GhosttyKit,依赖较重且未提供版本锁定或离线方案,故 1。failure_messages 方面,controlSocket.test.ts 明确验证 malformed line 返回 {ok:false,error:"not JSON"}、handler 异常返回具体错误且保持连接,属于可核查的失败信息设计,故 2。

适用触发9 / 18 · 2.5/5

适应性维度:audience_and_scenarios 方面,README 面向 macOS 开发者,给出 turn-based/goal-based/time-based/composite 四类场景与示例,故 2。capability_boundaries 方面,README 明确 GraphCode schedules nothing、Codex/OpenCode/pi 无 /loop skill 需开启 Daemon heartbeat、Windows 端口为 preview,边界清晰,故 2。trigger_precision 方面,goal 的 shell predicate 与 edge 条件、cycle guard 有描述,但缺少精确的触发语义定义或测试证据,故 1。environment_fit 方面,仅支持 macOS 15+ Apple Silicon,Windows 为 preview,Linux 仅 CI 构建,环境适配窄,故 1。

规范维护8 / 18 · 2.2/5

约定维度:information_architecture 方面,README 有 How it works、Install、Using it、Parts、Workspaces、Building from source、Credits & license 等清晰分节,故 2。install_notes 方面,给出 brew cask、dmg、源码构建 make doctor 等步骤,故 2。naming_stability 方面,CLI 动词(node create、node send --follow-up、reap --dry-run)与设置项有描述,但无版本化命名策略或弃用说明,故 1。examples_and_faq 方面,有 loop 类型示例与 Copilot 版本固定示例,但无 FAQ,故 1。known_limitations 方面,提到 Windows preview、Codex/OpenCode/pi 需 heartbeat、GraphCode installs nothing itself,但未集中列出限制,故 1。license 方面,LICENSE 文件完整给出 FSL-1.1-MIT 全文并区分目录许可,故 2。versioning_changelog 方面,README 有 release badge 与 releases 链接,但仓库内无 CHANGELOG 文件,故 1。maintenance_responsibility 方面,LICENSE 署名 Copyright 2026 scgopi,README 有 DCO 与贡献说明,但发布者身份未经验证,维护责任不明确,故 1。

有效结果7 / 13 · 2.7/5

有效性维度:output_usability 方面,README 描述 per-loop terminal workspace、tabs/splits、⌘K 跳转、⌘⇧R 遍历,输出面向可操作终端,故 2。marginal_value 方面,相对单终端 agent,GraphCode 提供多 loop 编排、跨 agent hand-off、会话持久化,边际价值明确,故 2。cost_benefit 方面,需要 macOS 15+ Apple Silicon、mise、zig 构建第三方组件、自行安装多个 agent CLI,成本较高且未量化收益,故 1。

证据核验4 / 8 · 2.5/5

可验证性维度:claim_traceability 方面,README 的多数声明(如 sessions outlive everything、nothing written in project folder)未附代码或测试引用,仅少数有测试佐证,故 1。cross_source_corroboration 方面,README 的协议描述与 NodRuntime/test/contract.test.ts、controlSocket.test.ts、agentRuntimes.test.ts 相互印证,故 2。fact_inference_separation 方面,README 混合了事实描述与营销性表述(如“run ten”),未明确区分已验证与未验证内容,故 1。

风险与缓解建议
  • 发布者身份未经验证,维护责任与更新路径不明确,采用前应确认发布渠道与签名。
  • 依赖多个第三方 agent CLI(claude、copilot、codex、opencode、pi),GraphCode 不捆绑也不锁定版本,存在供应链与版本漂移风险。
  • 仅支持 macOS 15+ Apple Silicon,Windows 为 preview,Linux 仅 CI 构建,环境适配窄。
  • README 中多数能力声明缺少代码或测试引用,静态审查无法验证运行时行为。
  • daemon 与 zmx 会话会持续运行并可能通过 SSH 在远程主机执行,需自行评估影响范围与回滚方案。
证据充分度:低 评估于 2026年10月11日 审查版本 b6093e4aae11
查看完整评分方法 →

常见问题

它会不会替我调用模型、包含模型费用?
不会。GraphCode 不捆绑任何 Agent CLI,也不自带模型;它启动的是你 PATH 上的 claude、copilot、codex、opencode 或 pi,相关订阅或 API 费用由你承担。
关掉应用或重启电脑,正在跑的循环会中断吗?
每个循环的终端都是 zmx 会话,退出应用甚至重启后依然存在;重启应用会用持久化的后端会话 ID 通过 --resume 恢复对话,而不是新建一个重复会话。
它会往我的项目目录里写文件吗?
README 明确说明:所有状态(图、最近记录、布局、守护进程 socket 与日志、已安装的二进制)都在 ~/.graphcode/,永远不会写入你打开的项目文件夹。
可以让它按固定时间间隔重复跑吗?
时间制循环的周期是写进会话提示词里的 /loop 技能,不是外部调度器;Codex、OpenCode 和 pi 没有该技能,需要在 Settings 中开启实验性的 Daemon heartbeat。
能同时管理多套互不干扰的编排吗?
可以,Workspace 就是一个独立目录(默认是 ~/.graphcode,其余为 ~/.graphcode-<name>),拥有自己的图和自己的 graphcoded,彼此不可见;CLI 通过 GRAPHCODE_SUPPORT_DIR 对齐到同一工作区。
在 GitHub 查看 ↗ 安装 ↓

对比同类 Agent

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

相关 Agents