jcode

1jehuang/jcode 访问 GitHub ↗
🔤 Rust ★ 18249 ⑂ 0 monthly #14 (+7782) 抓取 2026-08-23

一句话简介

基于 Rust 的代码工具项目,提供高性能的代码处理与辅助功能。

标签

  • Rust
  • 代码工具
  • 开发者工具
  • 命令行
  • 性能优化

适用应用场景

  • 代码格式化与处理
  • 开发辅助脚本编写
  • 命令行代码分析
  • Rust 项目集成

README 中文摘要

项目概述

jcode 是一款面向 AI 编码代理的运行时外壳(Harness),主打极低的内存占用与极快的启动响应。它支持在本地同时运行多个会话,并提供内存系统、侧边栏渲染、子代理协作等特性,可作为 Claude Code、Cursor Agent、OpenCode 等同类工具的轻量替代方案。

性能与资源占用

内存对比(PSS 指标)

单个活跃会话:jcode(关闭本地嵌入)约 27.8 MB,jcode 默认配置 167.1 MB;同类工具中 Codex CLI 约 140 MB,pi 约 144.4 MB,而 Claude Code 高达 386.6 MB、OpenCode 达 371.5 MB。

10 个活跃会话:jcode 仅 260.8 MB,Codex CLI 为 334.8 MB,而 OpenCode 飙升至 3237.2 MB、Claude Code 达 2300.6 MB。每新增一个会话,jcode 额外占用约 10.4 MB,远低于 OpenCode(318.4 MB)与 Claude Code(212.7 MB)。

启动延迟

  • 首帧渲染时间:jcode 约 14.0 ms,Codex CLI 882.8 ms,Claude Code 3436.9 ms。
  • 首输入响应时间:jcode 约 48.7 ms,最快的同类工具仍慢 7.9 倍以上。

以上数据基于 Linux 平台 10 次交互式 PTY 启动的均值。

内存系统

每一轮对话都被嵌入为语义向量存入图谱,并通过余弦相似度检索相关记忆,注入到当前上下文中。可选的「记忆子代理」会验证记忆相关性并补充检索。未达到抽取阈值时(语义漂移、累计轮次、会话结束等)会触发后台抽取。系统还提供显式的 memory 工具供代理主动调用,并对历史会话提供传统 RAG 检索。环境模式(ambient mode)下会定期整合记忆,去除陈旧与冲突条目。

用户界面

  • 侧边栏:可加载文件、显示 diff,或作为代理写入区域。支持 Mermaid 图表内联渲染。
  • Mermaid 渲染器:自研的 mermaid-rs-renderer,无浏览器与 TypeScript 依赖,比传统方案快约 1800 倍。
  • 信息部件(Info Widgets):仅占用屏幕负空间展示信息,无内容时自动隐藏。
  • 渲染帧率:超过 1000 fps,避免闪烁。
  • 滚动:自研 handterm 终端,提供原生滚动 API,目前为开发中,普通终端下也已具备良好的滚动体验。
  • 对齐方式:默认左对齐,可通过 Alt+C 热键、/alignment 命令或在配置中切换为居中模式。
  • Emoji 控制:在 ~/.jcode/config.toml 中设置 emoji = false,或启动时设置环境变量 JCODE_NO_EMOJI=1,即可将 Emoji 替换为简洁的 ASCII 标记。

集群协作(Swarm)

在同一代码库中启动两个及以上代理时,服务端会自动协调。当代理 A 编辑了代理 B 已读取的文件,服务端会通知 B,由 B 决定是否检查差异并避免冲突。每个代理支持私信、全员广播或仓库内广播,并能通过 swarm 工具自主派生子代理,将主代理转为协调者、子代理为工作者,支持有界面与无界面两种模式。

OAuth 与 Provider

支持通过订阅 OAuth 登录多种服务,也可回退到直接 API Key:

# 内置订阅登录
jcode login --provider claude
jcode login --provider openai
jcode login --provider gemini
jcode login --provider copilot
jcode login --provider azure
jcode login --provider fireworks

# 自托管 OpenAI 兼容端点
jcode login --provider openai-compatible

内置的 OpenAI 兼容 Profile 涵盖 openrouter、orcarouter、deepseek、zai、kimi、moonshotai、opencode、opencode-go、302ai、baseten、cortecs、huggingface、nebius、scaleway、stackit、firmware 等。每个 Profile 仅配置 base URL 与 API Key 环境变量,模型仍通过 /model--model 选择。

脚本化 Provider 配置

# 一次性写入命名配置(密钥通过 stdin 传入)
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'

# 本地 vLLM(无需密钥)
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(不回显密钥)、--context-window TOKENS(持久化上下文窗口)、--overwrite(覆盖同名配置)、--model-catalog(启用 /v1/models 拉取)。Anthropic Messages 兼容网关使用同一套 Profile 机制,只需将 type 改为 anthropic-compatible 并指定 authapi_key_env 等字段。

额外请求体字段(extra_body)

部分后端要求非标准顶层字段(例如 NVIDIA NIM 上的 DeepSeek-V4 需要 chat_template_kwargs)。可在 config.toml 中以 TOML 表形式声明:

[providers.my-nim.extra_body.chat_template_kwargs]
thinking = true
reasoning_effort = "high"

也可通过环境变量注入:JCODE_OPENAI_EXTRA_BODY={"chat_template_kwargs":{"thinking":true,"reasoning_effort":"high"}},该变量优先级高于配置文件。非法值会被记录并忽略,不影响请求。

MCP 配置

MCP 配置独立于 config.toml,主配置文件为:

  • ~/.jcode/mcp.json:全局 MCP 服务器
  • .jcode/mcp.json:项目本地 MCP 服务器

jcode 同时实时读取 Claude Code 的 ~/.claude.json.mcp.json(包含项目级 projects.<abs_path>.mcpServers),变更无需重启即时生效;首次启动时会从 ~/.codex/config.toml 一次性导入 MCP 配置。配置文件同时支持 mcpServers 与历史 servers 键,当前仅启用 stdio 类型的服务器,HTTP/SSE 条目会被识别并跳过。

{
  "mcpServers": {
    "filesystem": {
      "command": "/path/to/mcp-server",
      "args": ["--root", "/workspace"],
      "env": {},
      "shared": true
    }
  }
}

无浏览器与脚本化登录

无头或 SSH 场景下:jcode login --provider <provider> --no-browser(别名 --headless)可输出认证链接或二维码并回退到手动粘贴。两步式流程:

jcode login --provider openai --print-auth-url --json
jcode login --provider openai --callback-url 'http://localhost:1455/auth/callback?...'
jcode login --provider gemini --auth-code '...'
jcode login --provider copilot --print-auth-url --json
jcode login --provider copilot --complete

待完成状态保存在 ~/.jcode/pending-login/,具备自动过期机制。

多账号切换

通过 /account 命令可在同一 provider 的多个账号之间快速切换(例如 ChatGPT Pro 多个订阅之间)。

自定义与自开发(Self-Dev)

进入 Self-Dev 模式后,jcode 可以直接修改自身源码、构建、测试并热加载二进制,在不中断现有会话的前提下继续工作。建议使用 GPT-5.5 或同等能力的前沿模型,以避免在复杂代码库中引入细微的破坏性改动。

安装

# macOS 与 Linux
curl -fsSL https://jcode.sh/install | bash
# Windows 11(PowerShell 5.1+)
irm https://jcode.sh/install.ps1 | iex

其他细节

  • 缓存提醒:Anthropic Claude 缓存在 5 分钟后失效,jcode 会在 UI 中提示缓存变冷及异常缓存未命中。
  • Firefox Agent Bridge:内置安装指引,完成后可在 jcode 中使用浏览器自动化。
  • Agent grep:自研的文件结构感知 grep 工具,可在搜索结果中附带文件结构信息(原文截断,后续内容未提供)。

摘要更新于 2026-08-22 00:35:05 · 原文 41065 字符 · md5 2bf6b7bb8c6f…