# 9. 附录

## 9.1 完整配置项列表

以下是 `~/.jarvis/config.yaml` 中所有可配置的参数及其说明。

| 变量名称     | 默认值 | 说明                                                                                                                                                                                                                                                                     |
| ------------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `ENV`        | `{}`   | 环境变量配置，用于存放API Keys等敏感信息，如 `OPENAI_API_KEY`。                                                                                                                                                                                                          |
| `llms`       | `{}`   | 可复用的LLM配置定义，可以在 `llm_groups` 中通过引用名称来使用。每个配置包含 `platform`（平台名称）、`model`（模型名称）、`max_input_token_count`（最大输入token数量）、`llm_config`（LLM特定的配置参数，如 API key 等）。                                                |
| `llm_groups` | `{}`   | 预定义的LLM配置组，使用组名作为 key（对象格式）。每个组必须通过 `normal_llm`、`cheap_llm`、`smart_llm` 引用 `llms` 中定义的配置，不再支持直接定义 `platform`、`model`、`max_input_token_count` 等参数。每个组还可以包含一个可选的 `ENV` 字典用于覆盖当前会话的环境变量。 |
| `llm_group`  | `""`   | 选择要激活的LLM组名称。                                                                                                                                                                                                                                                  |

**注意**：`llm_groups` 中不再支持直接定义 `platform`、`model`、`max_input_token_count` 等参数，必须通过 `normal_llm`、`cheap_llm`、`smart_llm` 引用 `llms` 中定义的配置。

以下是一个使用引用方式的 `llm_groups` 配置示例：

```yaml
llms:
  claude-4-5:
    platform: openai
    model: claude-opus-4-5-20251101
    max_input_token_count: 200000
    llm_config:
      openai_api_key: sk-xxx
      openai_api_base: https://api.openai.com/v1

llm_groups:
  claude:
    normal_llm: claude-4-5
    cheap_llm: claude-4-5

llm_group: claude
```

当设置 `llm_group: claude` 时，Jarvis将使用 `claude-4-5` 作为常规模型，`claude-4-5` 作为廉价模型。

| 变量名称                   | 默认值  | 说明                                                                                                                                      |
| -------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| `execute_tool_confirm`     | `false` | 在执行任何工具前是否需要用户手动确认。                                                                                                    |
| `tool_load_dirs`           | `[]`    | 额外的工具加载目录列表。                                                                                                                  |
| `after_tool_call_cb_dirs`  | `[]`    | 工具调用后回调函数实现目录列表（扫描 .py 文件并按约定动态注册回调；支持 ~ 与环境变量展开）。                                              |
| `methodology_dirs`         | `[]`    | 方法论加载目录列表（支持 ~ 与环境变量展开）。                                                                                             |
| `agent_definition_dirs`    | `[]`    | agent 定义加载目录列表（支持 ~ 与环境变量展开）。                                                                                         |
| `multi_agent_dirs`         | `[]`    | multi_agent 加载目录列表（支持 ~ 与环境变量展开）。                                                                                       |
| `roles_dirs`               | `[]`    | roles 加载目录列表（支持 ~ 与环境变量展开）。                                                                                             |
| `central_methodology_repo` | `""`    | 中心方法论仓库路径或Git仓库地址。支持本地目录（含git子路径）：若为本地目录将直接加入方法论加载路径；若为Git URL则会克隆到数据目录后加载。 |
| `central_tool_repo`        | `""`    | 中心工具仓库路径或Git仓库地址。支持本地目录（含git子路径）：若为本地目录将直接加载其中的工具；若为Git URL则会克隆到数据目录并加载。       |
| `central_rules_repo`       | `""`    | 中心规则仓库路径或Git仓库地址。支持本地目录（含git子路径）：若为本地目录将直接加载其中的规则；若为Git URL则会克隆到数据目录并加载。       |
| `rules_load_dirs`          | `[]`    | 额外的规则加载目录列表（支持 ~ 与环境变量展开）。                                                                                         |
| `tool_groups`              | `[]`    | 预定义的工具配置组列表，每个配置组可包含`use`和`dont_use`两个可选数组。                                                                   |
| `tool_group`               | `""`    | 选择要激活的工具配置组名称。                                                                                                              |

| `git_commit_prompt` | `""` | 用于 `jgc` 的自定义git提交信息生成提示模板。 |
| `print_prompt` | `false` | 是否在终端打印发送给LLM的完整提示（Prompt），用于调试。 |
| `build_validation_timeout` | `30` | 构建验证的超时时间（秒）。当构建验证执行时间超过此值时，将终止验证并报告超时。 |
| `replace_map` | `{}` | 自定义快捷指令（命令替换）的映射。 |
| `mcp` | `[]` | MCP (Model Context Protocol) 服务的配置列表。每个配置项必须包含 `type` 字段（`stdio`、`sse` 或 `streamable`）。`stdio` 类型需要 `command` 字段，可选 `args`、`env`；`sse`/`streamable` 类型需要 `base_url` 字段，可选 `auth_token`、`headers`；`streamable` 类型还支持 `endpoint_path`（默认 `"mcp"`）和 `timeout`（默认 `[10, 300]`，单位：秒）。所有类型都支持可选的 `name` 和 `enable` 字段。 |
| `enable_startup_config_selector` | `true` | 在进入默认通用代理前，是否列出可用配置（agent/multi_agent/roles）供选择。 |
| `save_session_history` | `false` | 是否保存会话记录。 |
| `skip_predefined_tasks` | `false` | 是否跳过预定义任务加载（不读取 pre-command 列表）。启用后不展示预定义任务选择。 |
| `enable_tmux` | `false` | 是否启用tmux功能。当设置为 `true` 时，系统将启用所有tmux相关功能，包括自动启动tmux会话、任务派发到tmux窗口、批量任务并行执行等。 |

## 9.2 许可证信息

Jarvis 项目采用 **MIT 许可证**。

MIT 许可证是一种非常宽松的开源许可证，它授予您广泛的权利，包括：

- **商业使用**: 您可以将 Jarvis 用于商业目的。
- **分发**: 您可以分发 Jarvis 的原始或修改版本。
- **修改**: 您可以修改 Jarvis 的源代码。
- **私用**: 您可以将 Jarvis 用于个人项目。

唯一的限制是，您必须在您的软件副本中包含原始的版权和许可声明。该许可证不提供任何形式的担保。

完整的许可证文本可以在项目根目录的 `LICENSE` 文件中找到。
