快速开始
入门指南
相关源文件
以下文件为本维基页面的生成提供了上下文:
.github/scripts/verify_windows_install.ps1.github/workflows/ci.yml.github/workflows/release.yml.github/workflows/windows-smoke.ymlAGENTS.mdOAUTH.mdREADME.mdbuild.rsdocs/WRAPPERS.mdscripts/agent_trace.shscripts/build_linux_compat.shscripts/cargo_exec.shscripts/dev_cargo.shscripts/install.ps1scripts/install.shscripts/install_release.shscripts/invoke_cargo_with_timeout.ps1scripts/quick-release.shscripts/real_provider_smoke.shscripts/remote_build.shscripts/remote_config.shscripts/test_auth_e2e.shscripts/test_e2e.shscripts/update_packages.shsrc/cli/args.rssrc/cli/commands.rssrc/cli/commands_tests.rssrc/cli/debug.rssrc/cli/dispatch.rssrc/cli/startup.rssrc/process_title.rstests/e2e/windows_lifecycle.rs
本文档提供了 jcode 的安装、初始配置和主要执行模式的技术说明。内容涵盖从首次执行 shell 命令到构建完整可运行终端环境的完整生命周期,包括底层数据流和系统集成。
安装
jcode 以单个二进制文件形式分发,并附带各平台的安装脚本。安装过程会在 ~/.jcode/builds/(Unix)或 %LOCALAPPDATA%\jcode\builds(Windows)下建立带版本号的构建目录结构,以支持无缝更新和回滚。
Shell 脚本(macOS/Linux)
Unix 安装程序 scripts/install.sh 会检测宿主操作系统和架构,从 GitHub 下载最新发布版本,并配置用户的 shell 配置文件。
- 检测:使用
uname -s和uname -m选择正确的制品(例如jcode-macos-aarch64)scripts/install.sh:10-39。 - 目录结构:在
~/.jcode/builds/versions/<version>/下创建带版本号的存储目录,并管理stable和current通道的符号链接scripts/install.sh:58-62, 91-95。 - 路径集成:根据情况将
export PATH="$HOME/.local/bin:$PATH"追加到.zshrc、.bashrc或.profile中scripts/install.sh:162-186。
Windows PowerShell
Windows 安装程序 scripts/install.ps1 的目标目录为 %LOCALAPPDATA%\jcode\bin,并提供与 Alacritty 终端的可选集成。
- 进程管理:包含
Stop-ProcessTree和Stop-JcodeHotkeyListeners函数,确保在更新时能够干净地覆盖二进制文件scripts/install.ps1:74-84, 221-230。 - 环境设置:使用
[Environment]::SetEnvironmentVariable将安装目录持久化到用户Path环境变量中scripts/install.sh:159-162。 - 终端支持:如果未找到 Alacritty,会通过
winget自动安装scripts/install.ps1:178-219。
源码构建
对于开发者而言,可以使用 Cargo 从源码构建 jcode。scripts/install_release.sh 脚本自动化了生产构建和本地安装过程。
- 构建配置:支持
release-lto(链接时优化)以获得最佳性能,或使用--fast进行标准发布构建scripts/install_release.sh:14-18。 - 版本追踪:
build.rs脚本通过递增本地补丁计数器或使用JCODE_BUILD_SEMVER环境变量(如果提供)来解析构建的语义化版本号build.rs:11-17, 150-160。它还会提取 git 元数据,如哈希值和提交日期build.rs:23-38。 - 本地发布:使用
install -m 755放置二进制文件,并更新current符号链接指向新构建的版本scripts/install_release.sh:60-83。
--- 来源:scripts/install.sh:1-210、scripts/install.ps1:1-230、scripts/install_release.sh:1-94、build.rs:1-181
首次运行与设置提示
首次执行时,jcode 会进行环境清理并触发"设置提示"以优化用户体验。
初始化序列
src/cli/dispatch.rs 中的 run_main 函数通过解析参数和初始化提供者来编排启动过程 src/cli/dispatch.rs:21-22。
- 平台提示:
SetupHintsState结构体追踪哪些平台特定的优化已被应用src/setup_hints.rs:41-55。 - macOS:检测当前终端。如果使用的是非最佳终端,会提供 Ghostty 的引导式设置或安装 macOS 应用启动器
src/setup_hints.rs:105-123, 27-29。 - Windows:通过
run_setup_hotkey_windows提示配置Alt+;全局热键src/setup_hints.rs:35-38。 - 状态持久化:设置状态保存到
~/.jcode/setup_hints.jsonsrc/setup_hints.rs:8-10, 87-102。
标题:设置提示逻辑与状态
--- 来源:src/cli/dispatch.rs:21-118、src/setup_hints.rs:1-223
CLI 执行模式
jcode 二进制文件通过 src/cli/dispatch.rs 调度,支持多种不同的执行模式。
| 模式 | 命令 | 描述 | 实现 |
|---|---|---|---|
| TUI | jcode | 主要的交互式终端用户界面。 | tui_launch::run_client src/cli/dispatch.rs:62-64 |
| 服务端 | jcode serve | 启动非交互式后台服务器。 | server::Server::run src/cli/dispatch.rs:37-61 |
| 连接 | jcode connect | 将本地 TUI 客户端连接到现有服务器。 | tui_launch::run_client src/cli/dispatch.rs:62-64 |
| 运行 | jcode run "<msg>" | 执行单个提示后退出。 | commands::run_single_message_command src/cli/dispatch.rs:65-79 |
| 登录 | jcode login | 启动 OAuth2 或 API 密钥认证。 | login::run_login src/cli/dispatch.rs:80-118 |
| 自开发 | jcode self-dev | 进入专用于开发 jcode 的特殊模式。 | selfdev::run_self_dev src/cli/dispatch.rs:137-139 |
数据流:TUI 启动
TUI 启动过程会初始化终端运行时并恢复会话状态。
标题:TUI 启动与会话恢复
来源:src/cli/dispatch.rs:1-181、src/cli/tui_launch.rs:20-80、src/cli/terminal.rs:11-12
认证与登录
jcode 支持多种认证流程,包括 OAuth2 PKCE、API 密钥以及从其他 CLI 工具导入凭证。
- 提供者选择:
ProviderChoice枚举涵盖了直接提供者(Claude、OpenAI、Gemini)和兼容性配置src/cli/provider_init.rs:26-99。 - OAuth 流程:
run_login函数处理基于浏览器和无头模式的流程src/cli/login.rs:154-201。 - 凭证发现:
jcode会搜索特定路径,如~/.jcode/auth.json(Claude)和~/.jcode/openai-auth.json(OpenAI)OAUTH.md:15-25。 - 外部导入:它可以检测并导入来自
Claude Code、OpenCode、pi和Codex CLI的凭证OAUTH.md:46-51, 115-119。
可脚本化登录
对于远程或无头环境,jcode 支持使用 --print-auth-url 和 --complete 的可脚本化流程 src/cli/login.rs:18-55。
- 待处理状态:临时登录状态存储在
PendingScriptableLogin记录中src/cli/login.rs:69-111。 - 完成流程:用户可以提供
--callback-url或--auth-code来完成登录src/cli/login.rs:142-153。
--- 来源:src/cli/login.rs:1-219、src/cli/provider_init.rs:26-182、OAUTH.md:1-167
提示覆盖与自定义
jcode 支持通过环境变量和本地配置进行动态提示自定义。
- 提供者配置:
config.toml中的命名配置可以通过--provider-profile标志应用,该标志会设置JCODE_PROVIDER_PROFILE_NAME等环境变量src/cli/dispatch.rs:24-34。 - OpenAI 兼容自定义:
resolve_openai_compatible_profile函数允许通过JCODE_OPENAI_COMPAT_API_BASE等环境变量覆盖 API 基础地址、密钥和模型src/provider_catalog.rs:20-84。 - 自开发覆盖:在自开发模式下,系统会查找仓库特定的指南文件(如
AGENTS.md和CLAUDE.md)来指导代理行为AGENTS.md:1-28。
标题:CLI 命令调度与提供者初始化
--- 来源:src/cli/dispatch.rs:24-34、src/provider_catalog.rs:20-175、AGENTS.md:1-28