agentic_huge_data_base / wiki
页面 jcode · 1.2 配置参考·DeepWiki 中文全文译文

1.2 · 配置参考(Configuration Reference)

代理式研究运行时 · 聚焦本章的模块关系、源码依据与实现要点。

项目jcode 章节1.2 状态全文译文 模块配置治理、接口与服务契约、界面与交互、记忆与上下文
源码线索
  • crates/jcode-config-types/src/lib.rs
  • crates/jcode-protocol/src/protocol_tests/comm_requests.rs
  • src/config.rs
  • src/config/default_file.rs
  • src/config/env_overrides.rs
  • src/config_tests.rs
  • src/prompt.rs
  • src/prompt/system_prompt.md
  • src/prompt_tests.rs
  • src/protocol_tests/comm_requests.rs
模块标签
  • 配置治理
  • 接口与服务契约
  • 界面与交互
  • 记忆与上下文
  • 文档对象与元数据

章节正文

配置参考

配置参考

相关源文件

以下文件为本维基页面的生成提供了上下文:

  • crates/jcode-config-types/src/lib.rs
  • crates/jcode-protocol/src/protocol_tests/comm_requests.rs
  • src/config.rs
  • src/config/default_file.rs
  • src/config/env_overrides.rs
  • src/config_tests.rs
  • src/prompt.rs
  • src/prompt/system_prompt.md
  • src/prompt_tests.rs
  • src/protocol_tests/comm_requests.rs
  • src/tui/app/commands_review.rs
  • src/tui/app/tests/commands_accounts_01/part_01.rs
  • src/tui/keybind.rs
  • src/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-25src/config.rs:172-179。如果检测到变更,系统会重新加载 TOML 文件并使依赖缓存失效 src/config.rs:167-171

数据流与初始化

下图展示了 Config 结构体如何被各个子系统填充和使用。

配置初始化与分发

jcode · 数据流与初始化 · 图 1
jcode · 数据流与初始化 · 图 1

来源:src/config.rs:121-127src/config.rs:151-159src/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] 表下,定义在 CompactionConfigcrates/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-33crates/jcode-config-types/src/lib.rs:212-230

键绑定参考

TUI 的键绑定可以通过配置中的 [keybindings] 部分进行完全自定义 src/config/default_file.rs:19-20

导航与控制

映射关系会加载到 ScrollKeysModelSwitchKeys 等专用结构体中 src/tui/keybind.rs:75-76src/tui/keybind.rs:13-14

操作默认键配置键
向上滚动Ctrl+Kscroll_up src/tui/keybind.rs:108
向下滚动Ctrl+Jscroll_down src/tui/keybind.rs:109
下一个模型Ctrl+Tabmodel_switch_next src/tui/keybind.rs:25
切换居中Alt+Ccentered_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+Hworkspace_leftsrc/tui/keybind.rs:55-56
  • Alt+Jworkspace_downsrc/tui/keybind.rs:57-58
  • Alt+Kworkspace_upsrc/tui/keybind.rs:59-60
  • Alt+Lworkspace_rightsrc/tui/keybind.rs:61-65

来源:src/tui/keybind.rs:1-213src/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] 下配置。它指定用于语音转文本的外部命令以及如何应用结果(insertappendreplacesendsrc/config/default_file.rs:63-73

安全与操作逻辑

jcode · 安全与内存配置 · 图 2
jcode · 安全与内存配置 · 图 2

来源:src/config.rs:6-13src/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-119src/config.rs:122-141src/config.rs:194-215