配置参考
配置参考
相关源文件
以下文件为本维基页面的生成提供了上下文:
crates/jcode-config-types/src/lib.rscrates/jcode-protocol/src/protocol_tests/comm_requests.rssrc/config.rssrc/config/default_file.rssrc/config/env_overrides.rssrc/config_tests.rssrc/prompt.rssrc/prompt/system_prompt.mdsrc/prompt_tests.rssrc/protocol_tests/comm_requests.rssrc/tui/app/commands_review.rssrc/tui/app/tests/commands_accounts_01/part_01.rssrc/tui/keybind.rssrc/tui/workspace_client.rs
jcode 系统通过位于 ~/.jcode/config.toml(或 $JCODE_HOME/config.toml)的 TOML 文件进行配置 src/config.rs:1-3。该配置控制着单服务器架构、代理资源管理、TUI 键绑定和安全协议的行为。环境变量可以覆盖配置文件中的设置 src/config.rs:4。
配置架构
配置由可重新加载的进程缓存管理。对 config() 的调用会检查文件元数据和相关的环境变量覆盖,并采用短时限流(500 毫秒)机制,而非每帧都进行检查 src/config.rs:21-25、src/config.rs:172-179。如果检测到变更,系统会重新加载 TOML 文件并使依赖缓存失效 src/config.rs:167-171。
数据流与初始化
下图展示了 Config 结构体如何被各个子系统填充和使用。
配置初始化与分发
来源:src/config.rs:121-127、src/config.rs:151-159、src/config.rs:172-180
压缩模式与设置
压缩控制着代理在其上下文窗口随 Token 使用量增长时的管理方式。jcode 支持 CompactionMode 枚举中定义的策略 crates/jcode-config-types/src/lib.rs:6-14。
| 模式 | 键 | 描述 |
|---|---|---|
| 反应式 | reactive | 当上下文达到固定阈值时进行压缩 crates/jcode-config-types/src/lib.rs:7-9。 |
| 主动式 | proactive | 使用指数加权移动平均(EWMA)预测增长并提前压缩 crates/jcode-config-types/src/lib.rs:10-11。 |
| 语义式 | semantic | 基于主题转移和相关性进行压缩 crates/jcode-config-types/src/lib.rs:12-13。 |
参数
这些设置位于 [compaction] 表下,定义在 CompactionConfig 中 crates/jcode-config-types/src/lib.rs:212-214。
lookahead_turns:用于预测 Token 增长的轮次数量crates/jcode-config-types/src/lib.rs:218-219。ewma_alpha:增长预测的平滑因子(0.0-1.0)crates/jcode-config-types/src/lib.rs:221-222。proactive_floor:主动检查触发前的最小上下文填充比例(例如 0.5)crates/jcode-config-types/src/lib.rs:224-225。
来源:crates/jcode-config-types/src/lib.rs:6-33、crates/jcode-config-types/src/lib.rs:212-230
键绑定参考
TUI 的键绑定可以通过配置中的 [keybindings] 部分进行完全自定义 src/config/default_file.rs:19-20。
导航与控制
映射关系会加载到 ScrollKeys 和 ModelSwitchKeys 等专用结构体中 src/tui/keybind.rs:75-76、src/tui/keybind.rs:13-14。
| 操作 | 默认键 | 配置键 |
|---|---|---|
| 向上滚动 | Ctrl+K | scroll_up src/tui/keybind.rs:108 |
| 向下滚动 | Ctrl+J | scroll_down src/tui/keybind.rs:109 |
| 下一个模型 | Ctrl+Tab | model_switch_next src/tui/keybind.rs:25 |
| 切换居中 | Alt+C | centered_toggle src/tui/keybind.rs:194 |
工作区导航
jcode 支持类似 Niri 风格的工作区导航,用于在活动会话之间切换 src/config/default_file.rs:52-53。这些功能由 load_workspace_navigation_keys 处理 src/tui/keybind.rs:35-36。
- 左:
Alt+H(workspace_left)src/tui/keybind.rs:55-56 - 下:
Alt+J(workspace_down)src/tui/keybind.rs:57-58 - 上:
Alt+K(workspace_up)src/tui/keybind.rs:59-60 - 右:
Alt+L(workspace_right)src/tui/keybind.rs:61-65
来源:src/tui/keybind.rs:1-213、src/config/default_file.rs:19-61
安全与内存配置
SafetyConfig 决定了代理操作的边界,而 FeatureConfig 则控制主要子系统的开关 src/config.rs:6-13。
- 内存:通过
features.memory启用。它控制基于嵌入向量的检索和提取src/config/default_file.rs:141-142。 - 集群:通过
features.swarm启用。它控制多会话协调src/config/default_file.rs:143-144。 - 听写:在
[dictation]下配置。它指定用于语音转文本的外部命令以及如何应用结果(insert、append、replace或send)src/config/default_file.rs:63-73。
安全与操作逻辑
来源:src/config.rs:6-13、src/config/default_file.rs:63-144
MCP 服务器条目
模型上下文协议(MCP)服务器被集成进来以提供外部工具。
- 配置:MCP 服务器通常定义在
.claude/mcp.json中,但由SharedMcpPool进行池化和管理。 - 动态注册:MCP 工具会在运行时注入到会话的工具注册表中,使代理可以像调用内置工具一样调用它们。
来源:src/config/default_file.rs:105-106
环境变量覆盖
系统会跟踪 CONFIG_ENV_KEYS 中的一组特定环境变量,以触发配置重新加载 src/config.rs:27-119。
| 变量 | 描述 |
|---|---|
JCODE_PROVIDER | 设置默认的大语言模型(LLM)提供商 src/config.rs:88 |
JCODE_MODEL | 设置默认模型 src/config.rs:75 |
JCODE_DICTATION_COMMAND | 覆盖语音转文本命令 src/config.rs:50 |
JCODE_AMBIENT_ENABLED | 切换后台环境模式 src/config.rs:29 |
JCODE_OPENAI_REASONING_EFFORT | 设置 O1/O3 模型的推理级别 src/config.rs:83 |
实现细节:指纹识别
ConfigCacheFingerprint 会捕获这些变量的状态 src/config.rs:122-127。如果 CONFIG_ENV_KEYS 中列出的任何变量发生变化,fingerprint 比较就会失败,并且 config() 会执行完全重新加载 src/config.rs:196-207。
来源:src/config.rs:27-119、src/config.rs:122-141、src/config.rs:194-215