jcode
下一代编码 agent 工具链,专为多会话工作流和高性能设计。相比 Claude Code、Cursor 等同类工具,内存占用低至 1/10,启动速度可达 14ms,内置语义记忆、侧面板渲染、agent 群组协作和自修改能力。支持大量 LLM 提供商 OAuth 登录,可跨会话恢复。适合需要高性能、高定制性 coding agent 的开发者。
README
jcode
下一代编码 agent 套件,旨在提升技能上限。
专为多会话工作流、无限可定制性和高性能而构建。
安装
# macOS & Linux
curl -fsSL https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh | bash
需要 Windows、Homebrew、源码构建、提供商设置,或者让 agent 为你设置? 跳转到详细安装。
性能与资源效率
jcode 设计为尽可能高效和节省资源。每个指标都经过极致优化,这对扩展多会话工作流至关重要。这里我们采样几个指标来展示差异:RAM 使用和启动时间。
RAM 对比
1 个活动会话
|
10 个活动会话
|
首帧时间
| 工具 | 首帧时间 | 范围 | 对比 |
|---|---|---|---|
| jcode | 14.0 ms | 10.1–19.3 ms | 基线 |
| pi | 590.7 ms | 369.6–934.8 ms | 慢 42.2 倍 |
| Codex CLI | 882.8 ms | 742.3–1640.9 ms | 慢 63.1 倍 |
| OpenCode | 1035.9 ms | 922.5–1104.4 ms | 慢 74.0 倍 |
| GitHub Copilot CLI | 1518.6 ms | 1357.4–1826.8 ms | 慢 108.5 倍 |
| Cursor Agent | 1949.7 ms | 1711.0–2104.8 ms | 慢 139.3 倍 |
| Claude Code | 3436.9 ms | 2032.7–8927.2 ms | 慢 245.5 倍 |
在此 Linux 机器上以 10 次交互式 PTY 启动测量。
首次输入时间
(输入测试文本出现在渲染屏幕上的时间。)
| 工具 | 首次输入时间 | 范围 | 对比 |
|---|---|---|---|
| jcode | 48.7 ms | 30.3–62.7 ms | 基线 |
| pi | 596.4 ms | 373.9–955.2 ms | 慢 12.2 倍 |
| Codex CLI | 905.8 ms | 760.1–1675.7 ms | 慢 18.6 倍 |
| OpenCode | 1047.9 ms | 931.1–1116.9 ms | 慢 21.5 倍 |
| GitHub Copilot CLI | 1583.4 ms | 1422.8–1880.0 ms | 慢 32.5 倍 |
| Cursor Agent | 1978.7 ms | 1727.3–2130.0 ms | 慢 40.6 倍 |
| Claude Code | 3512.8 ms | 2137.4–9002.0 ms | 慢 72.2 倍 |
在此 Linux 机器上以 10 次交互式 PTY 启动测量。
其他客户端 / 内存扩展
| 工具 | 每个新增会话的额外 PSS | 对比 |
|---|---|---|
| jcode(本地嵌入关闭) | ~9.9 MB | 基线 |
| jcode | ~10.4 MB | 内存多 1.1 倍 |
| pi | ~76.5 MB | 内存多 7.7 倍 |
| Codex CLI | ~21.6 MB | 内存多 2.2 倍 |
| OpenCode | ~318.4 MB | 内存多 32.2 倍 |
| GitHub Copilot CLI | ~158.1 MB | 内存多 16.0 倍 |
| Cursor Agent | ~157.5 MB | 内存多 15.9 倍 |
| Claude Code | ~212.7 MB | 内存多 21.5 倍 |
jcode v0.9.1888-dev (be386f2)pi 0.62.0codex-cli 0.120.0opencode 1.0.203GitHub Copilot CLI 1.0.24(1 会话重测),GitHub Copilot CLI 1.0.27(10 会话重测)Cursor Agent 2026.04.08-a41fba1Claude Code 2.1.86 (Claude Code)
jcode 性能演示
记忆(Agent 记忆)
Jcode 将每次交互/响应嵌入为语义向量。每轮交互都会查询记忆图,通过 cosine similarity(余弦相似度)检查高效地找到相关记忆条目。嵌入命中结果被注入对话,或者可选地使用一个记忆 sideagent(辅助 agent)验证记忆的相关性,并在注入对话前进行更多信息检索工作。这实现了一种类似人类的记忆系统,使 agent 能够自动回忆起与对话相关的信息,而无需主动调用记忆工具或浪费 token。
要检索记忆,还必须先提取并存储它们。每隔一段时间(语义漂移、距上次提取 K 轮、会话结束等),通过记忆 sideagent 提取记忆并放入记忆图。
套件还提供显式的记忆工具,允许 agent 主动搜索或存储记忆,而无需依赖后台被动进程。套件还提供会话搜索功能,用于对历史会话进行传统 RAG(检索增强生成)。
记忆会通过后台模式定期自动整合。这包括重组、检查过时和冲突等。
jcode 记忆演示
UI:侧面板、图表、信息小部件、渲染、滚动、对齐
侧面板用于显示辅助信息。告诉你的 jcode agent 将文件加载到侧面板,即可实时查看更新;或者告诉 agent 直接写入侧面板,或者将其用作 diff 查看器。侧面板(以及聊天界面)能够内联渲染 mermaid 图表。

为了实现这一点,我创建了一个新的 mermaid 渲染库,渲染速度提高 1800 倍。它没有浏览器或 Typescript 依赖。参见 https://github.com/1jehuang/mermaid-rs-renderer
为了在不占用屏幕上可用于回复的空间的情况下显示重要信息,我开发了信息小部件。信息小部件只会利用屏幕上的负空间来显示信息,如果没有信息则会自动消失。
Jcode 能够以超过一千帧每秒的速度渲染。你的显示器刷新率可能无法跟上,但这意味着你不会遇到恼人的闪烁问题。
jcode 的自定义回滚实现使其能够比原生回滚提供更多功能。然而,终端级别的限制导致我无法使用自定义回滚实现平滑的部分行滚动。为了解决这个问题,我制作了自己的终端。Handterm (https://github.com/1jehuang/handterm) 实现了一个原生滚动 API,并且也非常高效。这仍在进行中。对于普通终端,滚动功能仍然实现得很好。
Jcode 默认左对齐。你可以通过 Alt+C 热键、/alignment 命令或在配置中切换到居中对齐模式。
Swarm(群集)
在同一仓库中生成两个或更多 agent,它们将由服务器自动管理以实现原生协作。当 agent A 编辑了 agent B 已读取的文件(在其下方发生代码变化)时,服务器会通知 agent B。Agent B 可以忽略不相关的通知,或者检查 diff 以确保没有冲突。每个 agent 都具备消息功能,可以私信单个 agent、广播给服务器托管的所有其他 agent,或仅发送给在该仓库中工作的 agent。这让你可以在同一仓库中启动多个会话,并自动解决所有冲突。
jcode 群集演示
Agent 还能够自主生成自己的群集。它们拥有 swarm 工具,可以生成自己的队友来并行完成任务。这样做会将主 agent 转变为协调者,生成的 agent 变为工作者。Agent 组、其消息通道、完成状态等都自动管理。这可以无头或有头地完成。
OAuth 和提供商
jcode 支持基于订阅的 OAuth 流程和众多提供商集成,因此你可以使用已付费的模型,并在必要时回退到直接 API 提供商。
支持的内置登录流程
- Claude (
jcode login --provider claude) - OpenAI / ChatGPT / Codex (
jcode login --provider openai) - Google Gemini (
jcode login --provider gemini) - GitHub Copilot (
jcode login --provider copilot) - Azure OpenAI (
jcode login --provider azure) - 阿里云编码计划 (
jcode login --provider alibaba-coding-plan) - Fireworks (
jcode login --provider fireworks) - MiniMax (
jcode login --provider minimax) - LM Studio (
jcode login --provider lmstudio) - Ollama (
jcode login --provider ollama) - 自定义 OpenAI 兼容端点 (
jcode login --provider openai-compatible)
对于自定义的 OpenAI 兼容端点,jcode 现在会提示输入 API 基础 URL,并支持本地 localhost 服务器,无需 API 密钥。
自托管端点和 MCP 的配置文件设置
如果你更喜欢通过编辑文件而非使用登录 UI 来配置,jcode 支持自定义 OpenAI 兼容端点配置和 MCP 配置文件。
自托管 OpenAI 兼容端点(包括 vLLM)
对于 agent 和脚本,推荐的方法是使用一次性提供商配置文件命令。它将一个命名配置文件写入 ~/.jcode/config.toml,在需要时将密钥存储到 jcode 的私有应用配置目录,并打印精确的运行/验证命令:
# 为托管的 OpenAI 兼容 API 设置安全密钥存储。
printf '%s' "$MY_API_KEY" | jcode provider add my-api \
--base-url https://llm.example.com/v1 \
--model my-model-id \
--api-key-stdin \
--set-default \
--json
# 对配置文件进行冒烟测试。
jcode --provider-profile my-api auth-test --prompt 'Reply exactly JCODE_PROVIDER_SETUP_OK'
# 直接使用。
jcode --provider-profile my-api run 'hello'
对于不需要身份验证的本地服务器:
jcode provider add local-vllm \
--base-url http://localhost:8000/v1 \
--model Qwen/Qwen3-Coder-30B-A3B-Instruct \
--no-api-key \
--set-default
有用的标志:
--api-key-env NAME:引用现有环境变量,而不是存储密钥。--api-key-stdin:读取并存储密钥,而不将其放在 shell 历史中。--context-window TOKENS:持久化模型上下文窗口,用于模型选择和路由。--overwrite:替换同名的现有配置文件。--model-catalog:除了已配置的模型外,还使用端点的/models响应。
生成的配置文件也可以手动编辑 ~/.jcode/config.toml:
[provider]
default_provider = "my-api"
default_model = "my-model-id"
[providers.my-api]
type = "openai-compatible"
base_url = "https://llm.example.com/v1"
api_key_env = "JCODE_PROVIDER_MY_API_API_KEY"
env_file = "provider-my-api.env"
default_model = "my-model-id"
[[providers.my-api.models]]
id = "my-model-id"
context_window = 128000
自定义 OpenAI 兼容提供商会从环境变量或 jcode 应用配置目录中的 env 文件读取覆盖项。在 Linux 上通常是 ~/.config/jcode/,因此默认文件通常是:
~/.config/jcode/openai-compatible.env
本地或局域网 vLLM 服务器示例:
JCODE_OPENAI_COMPAT_API_BASE=http://192.168.1.50:8000/v1
JCODE_OPENAI_COMPAT_DEFAULT_MODEL=Qwen/Qwen3-Coder-30B-A3B-Instruct
# 如果服务器期望身份验证(可选)
OPENAI_COMPAT_API_KEY=your-token-here
注意:
jcode login --provider openai-compatible可以为你创建或更新此文件。- 对于
localhost和私有的局域网 IP,接受纯http://。仍会拒绝公共远程 HTTP。 - HTTPS 端点正常工作。
MCP 配置文件
MCP 配置独立于 config.toml。
主要配置文件:
~/.jcode/mcp.json用于全局 MCP 服务器.jcode/mcp.json用于项目本地 MCP 服务器
兼容性回退:
.claude/mcp.json
MCP 配置示例:
{
"servers": {
"filesystem": {
"command": "/path/to/mcp-server",
"args": ["--root", "/workspace"],
"env": {},
"shared": true
}
}
}
首次运行时,如果 ~/.jcode/mcp.json 不存在,jcode 还会尝试从 ~/.claude/mcp.json 和 ~/.codex/config.toml 导入 MCP 服务器。
对于无头或 SSH 会话,OAuth 风格的提供商支持 jcode login --provider <provider> --no-browser(别名:--headless),这样 jcode 会打印身份验证 URL/二维码,并回退到手动代码或回调粘贴,而不是尝试启动本地浏览器。
对于更易编写的远程流程,claude、openai、gemini 和 antigravity 还支持两步模式:
# 步骤 1:打印可恢复的身份验证 URL
jcode login --provider openai --print-auth-url --json
# 步骤 2:稍后使用回调 URL 或验证码完成
jcode login --provider openai --callback-url 'http://localhost:1455/auth/callback?...'
jcode login --provider gemini --auth-code '...'
其他可编写脚本的情况:
# Copilot 设备流程:打印 URL + 用户代码,然后稍后完成
jcode login --provider copilot --print-auth-url --json
jcode login --provider copilot --complete
# Gmail/Google OAuth(凭据已配置后)
jcode login --provider google --print-auth-url --google-access-tier readonly
jcode login --provider google --callback-url 'http://127.0.0.1:8456?...'
挂起的脚本登录状态存储在 ~/.jcode/pending-login/ 下,会自动过期,并在新的脚本登录启动或恢复时清理过期条目。
对于内置的 OpenAI 登录流程,jcode 默认在 http://localhost:1455/auth/callback 上打开本地回调。
上图是提供商登录的第一页支持的提供商
- 原生/第一方风格提供商:
claude,openai,copilot,gemini,azure,alibaba-coding-plan - 聚合器/兼容性提供商:
openrouter,openai-compatible - 其他提供商集成:
opencode,opencode-go,zai/kimi,302ai,baseten,cortecs,deepseek,firmware,huggingface,moonshotai,nebius,scaleway,stackit,groq,mistral,perplexity,togetherai,deepinfra,fireworks,minimax,xai,lmstudio,ollama,chutes,cerebras,cursor,antigravity,google
Jcode 还支持轻松的多账户切换。第一个 ChatGPT Pro 订阅用完了 token?使用 /account 快速切换到第二个。
可定制性 / 自我开发
Jcode 正在创造一种新的可定制性形式。这种形式不会限制你只能使用插件或扩展能做的事情。告诉你的 jcode agent 进入自我开发模式,它将开始修改自己的源代码。Jcode 针对自我迭代进行了优化。有大量的基础设施围绕自我开发,使其能够编辑、构建和测试自己的源代码,然后重新加载自己的二进制文件并在你的(可能多个)会话中继续工作,完全自动化。
建议为这项任务使用前沿模型。jcode 代码库并不简单,较弱的模型可能会做出微妙的破坏性更改。GPT 5.5 或最新的可用前沿模型效果很好。
杂项
细节决定成败。jcode 实现了很多未记录的优化和便利功能。一些示例:
Anthropic 的 Claude 缓存会在 5 分钟后变冷。如果你在 5 分钟后启动 Claude,就会出现缓存未命中,可能消耗大量 token。UI 会在缓存变冷时发出警告,并通知你是否发生了意外的缓存未命中。
jcode 附带关于如何设置 Firefox Agent Bridge 的说明。让你的 agent 进行设置,然后你也将在 jcode 中获得浏览器自动化。
Agent grep 是我为 jcode agent 制作的 grep 工具。它在 grep 返回中添加了文件结构信息(例如函数列表、它们的偏移量等),以便 agent 可以在不实际读取文件的情况下推断更多文件内容。它还实现了一个套件级别的集成,根据 agent 已经看到的内容自适应地截断返回。这大大节省了上下文。
输入默认与工作的 agent 交织发送。它在尽可能安全地不破坏 KV 缓存的情况下尽快发送输入。使用 Shift+Enter 提交则会排队发送,并等待 agent 完全完成其回合后再发送。
从不同的套件恢复会话。Claude Code 崩溃了?从 jcode 恢复会话并从中断处继续。支持恢复 Codex、Claude Code、OpenCode 和 pi 的会话。
用于 Codex 会话的 /Resume 图片技能不会在启动时全部加载。对话被嵌入为语义向量,如果有与记忆相似的嵌入命中,将自动注入技能。Agent 有一个技能工具,让你可以随时手动激活技能。你也可以通过斜杠命令激活。
iOS 应用 / 原生 OpenClaw
jcode 的 iOS 应用原生版本即将推出。这让你可以通过手机(通过 Tailscale)在个人机器的环境中使用 jcode。类似 OpenClaw 的功能将随此 iOS 应用一起提供。
其他计划功能
Agent 不喜欢在有未提交更改的脏 git 状态下提交。Git 显然不是为多 agent 工作流设计的,git worktrees 也不是一个好的解决方案。鉴于此,我认为这是一个诞生新的类似 git 原语的机会。
构建速度改进:在我机器上,启用缓存的增量调试 cargo 构建大约需要 1 分钟。目标是 5-20 秒。重构和 crate 拆分应该能够实现这一点。
快速开始
# 启动 TUI
jcode
# 非交互式运行单个命令
jcode run "say hello"
# 按可记忆名称恢复之前的会话
jcode --resume fox
# 作为持久后台服务器运行,然后附加更多客户端
jcode serve
jcode connect
# 从配置的 STT 命令发送语音输入
jcode dictate
jcode 支持交互式 TUI 使用、非交互式运行、持久服务器/客户端工作流以及热键友好的听写,无需捆绑语音转文本堆栈。
jcode 工作流演示
浏览器自动化
jcode 包含一个内建的一等 browser 工具,用于 agent 会话中的浏览器控制。
当前内建后端:
- 通过 Firefox Agent Bridge 的 Firefox
当前内建工具动作包括:
statussetupopensnapshotget_contentinteractablesclicktypefill_formselectwaitscreenshotevalscrolluploadpress
快速设置:
jcode browser status
jcode browser setup
设置完成后,模型可以直接使用内建的 browser 工具。UI 还会紧凑地总结浏览器工具调用,例如打开 URL、点击选择器或在字段中输入文本,而不会回显敏感文本。
注意:
- 提供商/工具架构已为其他后端做好准备
- 当前内建后端是 Firefox
- Chrome 桥接/远程调试风格的提供商可以在相同的 browser 工具之上添加
进一步阅读
详细安装
设置
如果你想让另一个 agent 为你设置 jcode,给它这个提示:
Set up jcode on this machine for me.
1. Detect the operating system, available package managers, and shell environment, then install jcode using the best matching command below instead of referring me somewhere else:
- macOS with Homebrew available:
brew tap 1jehuang/jcode
brew install jcode
- macOS or Linux via install script:
curl -fsSL https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh | bash
- Windows PowerShell:
irm https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.ps1 | iex
- From source if the above paths are not appropriate:
git clone https://github.com/1jehuang/jcode.git
cd jcode
cargo build --release
scripts/install_release.sh
- For local self-dev / refactor work on Linux x86_64, prefer:
scripts/dev_cargo.sh build --release -p jcode --bin jcode
scripts/dev_cargo.sh --print-setup
scripts/install_release.sh
2. Verify that `jcode` is on my `PATH`.
3. Launch `jcode` once in a new terminal window/session to confirm it starts successfully.
4. Before attempting any interactive login flow, assess which providers are already available non-interactively and prefer those first. Check existing local credentials, config files, CLI sessions, and environment variables such as:
- Claude: `~/.jcode/auth.json`, `~/.claude/.credentials.json`, `~/.local/share/opencode/auth.json`, `ANTHROPIC_API_KEY`
- OpenAI: `~/.jcode/openai-auth.json`, `~/.codex/auth.json`, `OPENAI_API_KEY`
- Gemini: `~/.j