> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 系统配置

> 通过 MDM 分发的 system.json 策略，将受管设备上的 Devin CLI 登录和代理设置固定为指定配置

<div id="overview">
  ## 概述
</div>

`system.json` 是一个可选的全系统策略文件，管理员会将其分发到受管设备上 (通常通过 MDM) 。它位于仅管理员可写的系统目录中，因此，与位于 `~/.config/devin/config.json` 的用户配置不同，其中的设置无法由用户更改或删除。

可用于：

* 将**身份验证固定**到你的 Enterprise Devin 主机和/或账户，使 `devin auth login` 跳过登录方式菜单，并拒绝不属于你的组织的账户。
* 为 CLI 及其更新程序**强制指定出站 HTTP 代理**。Enterprise 设置优先于用户配置；如果用户自己的配置中也有 `proxy` 部分，系统会要求其先删除该部分，CLI 才能启动——部署前请参阅[代理](#proxy)。

该文件是可选且叠加的：如果不存在，Devin CLI 的行为将与在非受管设备上完全一致。

<div id="file-location">
  ## 文件位置
</div>

| 平台      | 路径                                               |
| ------- | ------------------------------------------------ |
| macOS   | `/Library/Application Support/Devin/system.json` |
| Linux   | `/etc/devin/system.json`                         |
| Windows | `C:\ProgramData\Devin\system.json`               |

<Note>
  这些目录与 Devin Desktop 用于系统级[规则](/zh/desktop/cascade/memories)和[钩子](/zh/desktop/cascade/hooks)的、供管理员写入的全系统目录相同。部署该文件时，请将所有者设为 root/Administrator，并将普通用户权限设为只读——CLI 会读取其找到的任何位置的该文件，因此将文件放在用户可写的位置会使策略失去意义。
</Note>

<div id="example">
  ## 示例
</div>

```json theme={null}
// /Library/Application Support/Devin/system.json
{
  "enterprise_host": "acme.devinenterprise.com",
  "account_id": "acct-acme",
  "proxy": {
    "mode": "manual",
    "url": "http://proxy.corp.example.com:8080",
    "no_proxy": "localhost,127.0.0.1,.internal.corp"
  }
}
```

<Warning>
  `system.json` 会按严格的 JSON 格式解析，不支持注释和尾随逗号；而用户的 `config.json` 则支持带注释的 JSON。上方的注释仅用于标示文件路径。
</Warning>

<div id="options-reference">
  ## 选项参考
</div>

| 选项                | 类型  | 默认值 | 描述                                                                               |
| ----------------- | --- | --- | -------------------------------------------------------------------------------- |
| `enterprise_host` | 字符串 | 未设置 | 用户必须向其进行身份验证的 Devin Enterprise 主机，例如 `"acme.devinenterprise.com"`。可接受纯主机名或完整 URL |
| `account_id`      | 字符串 | 未设置 | 已通过身份验证的账户必须归属的 Devin 账户标识符                                                      |
| `proxy`           | 对象  | 未设置 | CLI 和更新程序的出站 HTTP 代理设置 (`mode`、`url`、`no_proxy`)                                 |

各字段相互独立——仅设置所需字段。未知字段将被忽略，因此为较新版本 CLI 编写的策略仍可在较旧版本上应用其中已知的设置。

<div id="enterprise_host">
  ### enterprise\_host
</div>

设置后，`devin auth login` 将：

1. 跳过登录方式菜单和子域名提示，直接通过已配置的主机进行身份验证。
2. 如果登录后获得的账户属于其他主机 (或根本不属于任何 Devin Enterprise) ，则拒绝登录，并提示用户前往正确的主机。
3. 完全禁用旧版 [Windsurf 登录](/zh/cli/enterprise/windsurf-auth) 流程。

比较该值时不区分大小写，且会忽略协议，因此 `acme.devinenterprise.com`、`ACME.DevinEnterprise.com` 和 `https://acme.devinenterprise.com/` 视为等效。登录时会保留显式指定的 `http://` 协议 (仅用于测试) ；否则默认使用 `https://`。

<div id="account_id">
  ### account\_id
</div>

设置后，已通过身份验证的账户必须与此账户标识符一致，即使主机已匹配也不例外。可使用此选项在共享主机上固定到特定租户。若登录后解析到其他账户或未解析到任何账户，将在账户验证后被拒绝。

如果你不确定应使用哪个账户标识符，请联系你的 Cognition 账户团队。设置 `account_id` 还会拒绝使用旧版 Windsurf 登录流程，因为 Windsurf 账户无法满足 Devin 账户策略。

<div id="proxy">
  ### proxy
</div>

配置 CLI 自身的出站 HTTP/HTTPS 流量 (API 调用、更新、MCP 服务器) 的路由方式。其格式与[用户配置文件](/zh/cli/reference/configuration/config-file#proxy)中 `proxy` 部分相同：

| 选项         | 类型       | 默认值        | 描述                                                                                                        |
| ---------- | -------- | ---------- | --------------------------------------------------------------------------------------------------------- |
| `mode`     | 字符串      | `"system"` | `"system"` (遵循 `HTTP_PROXY`/`HTTPS_PROXY`/`ALL_PROXY` 和平台 PAC) 、`"manual"` (通过 `url` 路由) 或 `"off"` (直接连接) |
| `url`      | 字符串/null | `null`     | 代理 URL。`mode` 为 `"manual"` 时必填。支持 `http://`、`https://` 和 `socks5://`                                      |
| `no_proxy` | 字符串/null | `null`     | 以逗号分隔的绕过列表，语法与 `NO_PROXY` 环境变量相同。适用于所有模式                                                                  |

`devin-updater` 二进制程序也会读取此设置，因此后台更新将使用与 CLI 相同的代理。

<Warning>
  企业代理优先于用户配置，且两个文件不能同时配置代理，否则会报错。如果用户的 `config.json` 中也包含 `proxy` 部分，CLI 会在启动时退出，并要求用户将其删除，而非静默忽略该设置。请在推出此策略前告知用户删除所有本地 `proxy` 部分。
</Warning>

<div id="behavior-and-failure-modes">
  ## 行为和故障模式
</div>

损坏或仅能部分识别的策略文件绝不会导致 CLI 停用，而是会降级为不进行强制执行；有效策略则始终会被强制执行：

| 情况                                    | 结果                                               |
| ------------------------------------- | ------------------------------------------------ |
| 文件不存在                                 | 不进行强制执行；CLI 的行为与在非受管设备上一致                        |
| 文件不可读或 JSON 格式错误                      | 视为不存在，并在日志中发出警告                                  |
| 包含未知字段                                | 忽略未知字段；已识别的字段仍会生效                                |
| `proxy` 部分格式错误                        | 忽略代理部分；`enterprise_host` / `account_id` 强制执行仍会生效 |
| `enterprise_host` / `account_id` 格式错误 | 不再强制执行登录；有效的 `proxy` 部分仍会生效                      |
| 值为空或仅包含空白字符                           | 视为未设置                                            |

登录强制执行会在执行 `devin auth login` 时生效。对于在策略部署前已登录设备上存储的凭据，不会重新验证。因此，请在推出 CLI 前部署 `system.json`，或者让受影响的用户执行 `devin auth logout` 后重新登录。

在 stable、next 或 enterprise 构建中，无法通过环境变量重定向 `system.json` 的路径，因此用户无法将 CLI 指向自己的策略。

<div id="verifying-the-policy">
  ## 验证策略
</div>

在受管设备上：

```bash theme={null}
devin auth logout
devin auth login
```

设置 `enterprise_host` 后，登录方式菜单不应出现，输出的登录 URL 应指向你配置的主机。然后确认生成的会话：

```bash theme={null}
devin auth status
```

使用不符合该策略的账户登录会失败，并显示明确提示，说明你的组织要求使用的主机或账户。

<div id="related-settings">
  ## 相关设置
</div>

`system.json` 涵盖必须在登录前或登录过程中配置的设备级策略。大多数其他组织级控制项——模型、MCP 服务器和注册表、终端权限、沙盒强制执行、网页搜索——均在服务器端的[团队设置](/zh/cli/enterprise/team-settings)中进行管理，并会在用户登录后自动生效。

<div id="further-reading">
  ## 延伸阅读
</div>

* [Devin 身份验证](/zh/cli/enterprise/devin-auth)
* [团队设置](/zh/cli/enterprise/team-settings)
* [配置文件](/zh/cli/reference/configuration/config-file)
* [控制项](/zh/cli/enterprise/controls)
* [Devin Desktop Enterprise Policies](/zh/desktop/enterprise-policies) — 编辑器中通过 MDM 分发的等效策略界面
