1jehuang/jcode
GitHub: 1jehuang/jcode
一款 Rust 编写的高性能编程代理工具,主打多会话协作、语义记忆和极致资源效率,支持数十种 LLM 提供商和浏览器自动化。
Stars: 1960 | Forks: 178
# jcode
[](https://github.com/1jehuang/jcode/releases)
[](LICENSE)
[](https://github.com/1jehuang/jcode/releases)
[](https://github.com/1jehuang/jcode/commits/master)
[](https://github.com/1jehuang/jcode/stargazers)
旨在提升技能上限的下一代编程代理工具。
为多会话工作流、无限可定制性和高性能而构建。
[功能](#features) · [安装](#installation) · [快速开始](#quick-start) · [进阶阅读](#further-reading) · [贡献](CONTRIBUTING.md)
为多会话工作流、无限可定制性和高性能而构建。
[功能](#features) · [安装](#installation) · [快速开始](#quick-start) · [进阶阅读](#further-reading) · [贡献](CONTRIBUTING.md)
## 安装说明
```
# macOS & Linux
curl -fsSL https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh | bash
```
需要 Windows、Homebrew、源码构建、服务商设置,或者想让您的代理自行设置?
[跳转到详细安装说明](#detailed-installation)。
## 性能与资源效率
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 (本地 embedding 关闭)** | **~9.9 MB** | 基准 |
| **jcode** | **~10.4 MB** | **多占用 1.1× RAM** |
| **pi** | **~76.5 MB** | **多占用 7.7× RAM** |
| **Codex CLI** | **~21.6 MB** | **多占用 2.2× RAM** |
| **OpenCode** | **~318.4 MB** | **多占用 32.2× RAM** |
| **GitHub Copilot CLI** | **~158.1 MB** | **多占用 16.0× RAM** |
| **Cursor Agent** | **~157.5 MB** | **多占用 15.9× RAM** |
| **Claude Code** | **~212.7 MB** | **多占用 21.5× RAM** |
此修正后的内存重新运行所测试的版本:
- `jcode v0.9.1888-dev (be386f2)`
- `pi 0.62.0`
- `codex-cli 0.120.0`
- `opencode 1.0.203`
- `GitHub Copilot CLI 1.0.24`(用于单次会话重新运行),`GitHub Copilot CLI 1.0.27`(用于 10 次会话重新运行)
- `Cursor Agent 2026.04.08-a41fba1`
- `Claude Code 2.1.86 (Claude Code)`
## 记忆系统(Agent 记忆)
Jcode 将每次轮次/响应作为语义向量进行 embedding。每次轮次都会查询记忆图谱,通过余弦相似度检查高效地查找相关的记忆条目。命中的 embedding 会被送入对话中,或者可以选择使用一个记忆侧代理来验证记忆的相关性,并在注入到对话中之前,潜在地进行更多的信息检索工作。这产生了一个类人的记忆系统,允许代理自动回忆起与对话相关的信息,而无需主动调用记忆工具或大量消耗 token。
为了能检索到记忆,它们也必须被提取和存储。每隔一段时间(语义漂移、距离上次提取已过 K 个轮次、会话结束等),记忆会通过记忆侧代理提取,并放入记忆图谱中。
该工具还提供了显式的记忆工具,允许代理主动搜索或存储记忆,而无需依赖被动后台进程。工具还提供了会话搜索功能,用于对以前的会话进行传统的 RAG。
记忆会在环境模式下定期自动整合。这包括重组、检查过时和冲突等。
## UI:侧面板、图表、信息小组件、渲染、滚动、对齐
侧面板用于放置辅助信息。告诉您的 jcode 代理将文件加载到侧面板并实时查看其更新,或者让您的代理直接写入侧面板,或将其用作差异查看器。侧面板(和聊天)能够内联渲染 mermaid 图表。
jcode 集群演示
The above image is the first page of provider logins
### 支持的提供商
- **原生 / 第一方风格提供商:** `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 代理进入自我开发模式,它将开始修改自己的源代码。Jcode 针对自身的迭代进行了优化。它围绕自我开发构建了完善的基础设施,允许其编辑、构建和测试自身的源代码,然后重新加载自身的二进制文件并在您的(可能是多个)会话中继续工作,全过程完全自动化。
建议您为此使用前沿模型。jcode 代码库并不简单,较弱的模型可能会做出细微的破坏性更改。GPT 5.5 或最新可用的前沿模型表现良好。
## 杂项
魔鬼隐藏在细节中。jcode 实现了许多未记录的优化和贴心设计。举几个例子:
Anthropic 的 Claude 缓存会在 5 分钟后变冷。如果您在这 5 分钟后向 Claude 发起请求,就会遇到缓存未命中,这可能会消耗您大量的 token。UI 会在缓存变冷时警告您,并在发生意外缓存未命中时通知您。
jcode 附带了如何设置 Firefox Agent Bridge 的说明。要求您的代理进行设置,然后您在 jcode 中也能拥有浏览器自动化功能。
Agent grep 是我为 jcode 代理制作的一个 grep 工具。它在 grep 返回结果中添加了文件结构信息(即函数列表、它们的位置偏移等),以便代理无需实际读取文件即可推断出更多文件内容。它还实现了一个工具层面的集成,可根据代理已经查看过的内容自适应地截断返回结果。这极大地节省了上下文。
默认情况下,输入与正在运行的代理是交织进行的。它会在不破坏 KV cache 的情况下,在尽可能安全的时候发送输入。如果使用 Shift+Enter 提交,它将发送队列消息,并等待代理完全完成其轮次后再发送。
从不同的工具恢复会话。Claude code 崩溃了?从 jcode 恢复会话,从您上次停下的地方继续。支持从 codex、claude code、opencode 和 pi 恢复会话。
image of /Resume for codex sessions
技能并不会全部在启动时加载。对话会作为语义向量进行 embedding,如果存在与记忆相似的 embedding 命中,将自动注入技能。代理带有一个技能工具,供您随时手动激活技能。您也可以通过斜杠命令进行激活。
## iOS 应用 / 原生 OpenClaw
原生 iOS 应用版本的 jcode 即将推出。这将允许您通过 Tailscale 在手机上处理个人计算机环境中的工作。Openclaw 类似的功能将与该 iOS 应用程序捆绑提供。
## 其他计划中的功能
代理不喜欢在有活动更改的脏 git 状态下进行提交。显然,Git 并不是为多代理工作流构建的,而 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 包含一个一流的内置 `browser` 工具,用于代理会话中的浏览器控制。
当前内置后端:
- 通过 Firefox Agent Bridge 的 Firefox
当前内置的工具操作包括:
- `status`
- `setup`
- `open`
- `snapshot`
- `get_content`
- `interactables`
- `click`
- `type`
- `fill_form`
- `select`
- `wait`
- `screenshot`
- `eval`
- `scroll`
- `upload`
- `press`
快速设置:
```
jcode browser status
jcode browser setup
```
设置完成后,模型可以直接使用内置的 `browser` 工具。UI 还会简洁地总结浏览器工具调用,例如打开 URL、点击选择器或在字段中输入,而不会回显敏感的输入文本。
备注:
- provider/工具的架构已就位,支持额外的后端
- Firefox 是目前连接好的内置后端
- 稍后可以在相同的 browser 工具之上添加 Chrome 桥接 / 远程调试风格的 provider
## 进阶阅读
- [环境模式 / OpenClaw](docs/AMBIENT_MODE.md)
- [浏览器提供者协议](docs/BROWSER_PROVIDER_PROTOCOL.md)
- [记忆架构](docs/MEMORY_ARCHITECTURE.md)
- [集群架构](docs/SWARM_ARCHITECTURE.md)
- [服务器架构](docs/SERVER_ARCHITECTURE.md)
- [iOS 客户端说明](docs/IOS_CLIENT.md)
- [安全系统](docs/SAFETY_SYSTEM.md)
- [Windows 说明](docs/WINDOWS.md)
- [封装器和 Shell 集成](docs/WRAPPERS.md)
- [重构说明](docs/REFACTORING.md)
## 详细安装说明
### 设置
如果您希望由另一个代理为您设置 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: `~/.jcode/gemini_oauth.json`, `~/.gemini/oauth_creds.json`
- GitHub Copilot: existing auth under `~/.config/github-copilot/`
- Azure OpenAI: `~/.config/jcode/azure-openai.env`, `AZURE_OPENAI_*`, or an existing `az login`
- OpenRouter: `OPENROUTER_API_KEY`
- Fireworks: `~/.config/jcode/fireworks.env`, `FIREWORKS_API_KEY`
- MiniMax: `~/.config/jcode/minimax.env`, `MINIMAX_API_KEY`
- Alibaba Cloud Coding Plan: existing jcode config/env if present
5. Prefer whichever provider is already configured and verify it with `jcode auth-test --all-configured` or a provider-specific auth test when appropriate.
6. Only if no usable provider is already configured, guide me through the minimal manual step needed:
- Claude: `jcode login --provider claude`
- GitHub Copilot: `jcode login --provider copilot`
- OpenAI: `jcode login --provider openai`
- Gemini: `jcode login --provider gemini`
- Azure OpenAI: `jcode login --provider azure`
- Fireworks: `jcode login --provider fireworks`
- MiniMax: `jcode login --provider minimax`
- Alibaba Cloud Coding Plan: `jcode login --provider alibaba-coding-plan`
- OpenRouter: help me set `OPENROUTER_API_KEY`
- Anthropic direct API: help me set `ANTHROPIC_API_KEY`
7. After setup, run a simple smoke test with `jcode run "say hello"` and confirm it works.
8. If I want browser automation, also check `jcode browser status`. If browser automation is not ready, run `jcode browser setup`, verify the built-in `browser` tool works, and explain any remaining manual step.
9. Explain any manual step that still needs me, especially browser OAuth, device login, API key entry, or browser extension approval.
```
这是一个旨在供 jcode 本身或任何其他编程代理使用的复制粘贴式引导提示。
### 快速安装
```
# macOS & Linux
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
```
### macOS 通过 Homebrew
```
brew tap 1jehuang/jcode
brew install jcode
```
### 从源码构建(所有平台)
```
git clone https://github.com/1jehuang/jcode.git
cd jcode
cargo build --release
```
对于在 Linux x86_64 上进行本地自我开发/重构工作,建议使用:
```
scripts/dev_cargo.sh build --release -p jcode --bin jcode
scripts/dev_cargo.sh --print-setup
```
该封装器在可用时自动使用 `sccache`,优先使用快速工作的本地链接器设置(`clang + lld`),而不是假设每台机器上的 `mold` 配置都是有效的,并且可以通过 `--print-setup` 打印当前的链接器/缓存设置,从而更容易诊断慢路径构建。
然后将其符号链接到您的 PATH 中:
```
scripts/install_release.sh
```
### 平台支持
| 平台 | 状态 |
|---|---|
| **Linux** x86_64 / aarch64 | 完全支持 |
| **macOS** Apple Silicon & Intel | 支持 |
| **Windows** x86_64 | 支持 (原生 + W2) |