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

# 机密信息和站点 Cookie

> 安全地向 Devin 共享凭证，使其能够访问任何工具

<div id="giving-devin-credentials">
  ## 为 Devin 提供凭证
</div>

Devin 可以使用它自己的登录凭据，在 Browser 中或通过命令行访问需要身份验证的平台。我们建议在每个它需要访问的服务上为 Devin 单独创建一个账户 (例如 [devin@company.com](mailto:devin@company.com)) 。然后，你可以将 Devin 的用户名和密码作为 Secrets 保存在你的账户中，以便它在之后的会话中可以自动登录。

添加 Secrets 通常通过 [Secrets 页面](http://app.devin.ai/secrets) 完成。该页面对组织级别的 Secrets 尤其重要。关于仓库级或会话级的 Secrets，请参见下面的章节。

<Frame>
  <img src="https://mintcdn.com/cognitionai/4bS8zUS864bCAPVt/images/secrets_adding.png?fit=max&auto=format&n=4bS8zUS864bCAPVt&q=85&s=d0b1a7f15b40ab79254c6e756fd7ccb0" alt="Devin" width="1354" height="1320" data-path="images/secrets_adding.png" />
</Frame>

在添加 Secret 时，你可以添加一个 Note，用于说明额外的上下文或使用该 Secret 的说明。使用这个字段向 Devin 以及你所在组织的其他成员传达有用的信息。示例备注包括：

* 此 API key 只能用于我们的生产环境，不能在 staging 或 dev 环境中使用。
* 用于我们在 us-west-2 的 AWS RDS 数据库
* 这些凭证计划在 2025 年第三季度后弃用
* 每 30 天自动过期一次——如果开始失效，请联系 SecOps 团队进行轮换
* 此 API key 绑定到 [devin@company.com](mailto:devin@company.com) 用户账户

<div id="persisted-global-secrets">
  ## 持久化全局 secrets
</div>

在 [Settings & Library > Secrets](http://app.devin.ai/secrets) 中添加的 secrets 会**持久保留**到后续会话中，并适用于整个组织。请注意，你在此处共享的任何 secrets，都可以在你所在组织中所有未来的 Devin 会话里被 Devin 使用。所有 secrets 在静态存储时均为加密状态。**新的 secrets 仅对在你添加该 secret 之后创建的会话中的 Devin 可用。**

请注意，你的组织中的所有成员都可以使用全局 secrets，但只有管理员可以查看或编辑现有 secrets。请务必只添加作用域专门限定在你的组织内、且可供所有成员使用的 secrets。

<div id="personal-secrets">
  ### 个人密钥
</div>

除了组织范围的密钥之外，你还可以创建**个人密钥**，其作用域仅限于你自己的会话。个人密钥不会与你的组织中的其他成员共享。这对于与你的个人账户关联的凭据，或用于测试那些不应向更大范围团队公开的密钥非常有用。

要创建个人密钥，请在 [Secrets 页面](https://app.devin.ai/secrets) 上添加新密钥时选择 **Personal** 作用域。个人密钥仅可在你创建的会话中访问，其他组织成员或管理员都无法看到。

当前提供以下几种密钥类型：

<Accordion title="原始密钥（Raw Secret）" icon="message-text">
  此类型最适合大多数只有单个值的通用密钥。每个 Secret Name (也称为 Secret Key) 都关联一个 Secret Value。可存储在此处的密钥示例包括：

  * API Keys
  * SSH Keys
  * 用户名或密码
  * Tokens

  如果某个密钥需要包含多个值，请为每个值分别创建一个独立的密钥。例如，你可以将 GITHUB\_USERNAME 和 GITHUB\_PASSWORD 分别存储为两个原始密钥 (Raw Secrets) 。
</Accordion>

<Accordion title="站点 Cookies" icon="cookie">
  **Cookies 用于“保存”你的认证状态**；如果你已经登录某个站点，则将该站点的 Cookies 提供给 Devin，可以让 Devin 在访问同一站点时自动处于登录状态。

  请注意，有时仅依靠 Cookies 可能还不够，可能还需要额外的用户名或密码密钥。例如，在 Amazon 上，Devin 可能在浏览或加购时已处于登录状态，但在结账时，Amazon 可能会要求额外一层密码确认。

  Cookies 会以 base64 编码的字符串形式存储，该字符串是一个以 `;` 分隔的 JSON 数组，并采用标准 Chromium Cookie 格式。如果你需要手动编码 Cookies 而不是直接从 Chrome 导出，这一点非常重要。关于如何添加 Cookie 密钥的详细步骤，请参见 [添加新的站点 Cookie](/zh/product-guides/secrets#adding-a-new-site-cookie)
</Accordion>

<Accordion title="基于时间的一次性密码（TOTP）" icon="lock">
  基于时间的一次性密码用于双因素认证 (2FA) 。Devin 可以存储 TOTP 密钥，其行为类似于 Google Authenticator 或 Authy 中的密钥。关于如何添加 TOTP 密钥的详细步骤，请参见 [添加新的 TOTP](/zh/product-guides/secrets#adding-a-new-totp)
</Accordion>

<Accordion title="键值密钥（已废弃）" icon="key">
  Devin 过去曾支持创建可以在单个密钥下管理多个键的键值密钥。但该功能现已不再提供。

  我们建议不再创建键值密钥，而是为每个字段分别创建多个原始密钥。例如，与其创建一个用于 JIRA\_LOGIN 的键值密钥，不如创建两个原始密钥：JIRA\_USERNAME 和 JIRA\_PASSWORD。
</Accordion>

<div id="repo-specific-secrets">
  ## 仓库级secrets
</div>

要将secrets限定在某个特定代码仓库范围内，可以在[环境配置](/zh/onboard-devin/environment)过程中，将它们添加为环境变量 (或放在 `.env` 文件中) 。

<Frame>![Devin](https://cdn.sanity.io/images/2mc9cv2v/production/02817fb87eaea3331d39111ee11a3ef27a74facb-2244x1144.png)</Frame>

以后使用同一 Snapshot 的会话将能够访问这些环境变量，但其他无关会话将无法访问。

<div id="session-specific-secrets">
  ## 会话级 secrets
</div>

在 Devin 工作过程中，它可能会在当前对话中请求你提供凭证 (API 密钥、登录信息等) ，如下所示：

<Frame>
  <img src="https://mintcdn.com/cognitionai/4bS8zUS864bCAPVt/images/secrets1.png?fit=max&auto=format&n=4bS8zUS864bCAPVt&q=85&s=0a95a89c8ba01aa4353f6692ba70922e" alt="Devin" width="1352" height="248" data-path="images/secrets1.png" />
</Frame>

当 Devin 以这种方式请求 secrets 时，这些 secrets 的作用域仅限于当前会话，不会保存到后续任何会话中。

另外，你也可以自行设置会话级 secrets：

<Frame>
  <img src="https://mintcdn.com/cognitionai/ifLkKLaMB-vvINwf/images/feature-add-session-secrets.png?fit=max&auto=format&n=ifLkKLaMB-vvINwf&q=85&s=bff09c001d80090ea876b7ca45231f78" alt="Devin" width="1524" height="382" data-path="images/feature-add-session-secrets.png" />
</Frame>

<div id="working-with-secrets">
  ## 使用 secrets
</div>

在 Devin 中配置好 secret 之后，只要会话是在该 secret 配置完成后启动的，你的应用程序就可以像访问普通 ENV 变量一样访问它。此规则适用于组织级全局 secrets、仓库级 secrets，以及会话级 secrets。

Devin 会对文本进行一些转换，以确保你的 secrets 是合法的 ENV 变量：

* 它会移除无效字符，将所有非字母、数字或下划线的字符替换为下划线。例如，名为 Abc%123 的 secret 会变为 ENV 变量 Abc\_123
  * 如果你的 secret 名称不是以字母开头，Devin 会在名称开头添加一个下划线。例如，secret 123MYVAR 会变为 ENV 变量 \_123MYVAR
  * 如果你有两个同名的 secrets，Devin 会在末尾添加一个计数后缀。例如，如果你有两个名为 MY\_SECRET 的 secrets，你最终会得到两个 ENV 变量：MY\_SECRET 和 MY\_SECRET\_2，依此类推。

然后，你可以使用应用程序读取 ENV 变量的常用方式来访问这些 secrets。例如，你可以在变量名前加上美元符号来引用 secret，如 \$API\_KEY。

<div id="adding-a-new-site-cookie">
  ## 添加新站点 Cookie
</div>

要添加站点 Cookie，请按照以下步骤操作：

1. 像平时一样登录到你希望与 Devin 共享的账号。这将生成 cookie。

2. 为了从浏览器存储中获取 cookie，请下载浏览器扩展程序 [Share your cookies](https://chromewebstore.google.com/detail/share-your-cookies/poijkganimmndbhghgkmnfgpiejmlpke)，并按照该扩展中的指引导出你的 cookies。你可能还需要测试：在另一个 Chrome 个人资料中导入该 cookie 后，是否能成功完成站点登录认证。

3. 通过 [Secrets 页面](https://app.devin.ai/secrets) 将导出的 cookie 添加到 Devin 中。

4. 当 Devin 使用该站点的 cookie 时，在导航到该站点时应会发现自己已经处于登录状态。可以让 Devin 试试看！

<Note>
  如果你没有使用 Chrome，或者需要手动编码 cookies，请注意 Devin 期望接收的 cookies 是：使用标准 Chromium cookie 格式的 JSON 对象，以 `;` 分隔，并整体以 base64 字符串编码。
</Note>

<div id="one-time-password">
  ## 一次性密码
</div>

Devin 现在可以使用基于时间的一次性密码 (TOTP) 来处理双因素认证 (2FA) 。为此，你需要向 Devin 提供在为特定应用在 Devin 账户上设置 2FA 时生成的信息：

1. 登录需要 2FA 的服务中的 Devin 账户。
2. 前往账户安全设置，查找重新生成或查看二维码的选项。该选项可能被称为 Set up 或 Replace Authenticator。
3. 如果应用允许，选择查看二维码的选项。
4. 当二维码显示在屏幕上时，为其截屏。
5. 前往 [Devin's Secrets](https://app.devin.ai/secrets)，点击 "Add Secret" 按钮，将 Secret 类型更改为 "One-time Password"。输入一个便于识别的名称。点击数值输入框右上角的小二维码图标，并上传你的二维码截屏。

<Warning> 仅提供与专门为 Devin 使用而创建的账户相关联的 2FA 信息。我们不建议向 Devin 提供你个人账户的任何 2FA 信息。 </Warning>

<div id="tips-for-totps">
  ### TOTP 提示
</div>

* 某些应用在启用 2FA 后，可能无法再查看现有的二维码。在这种情况下，只能重新生成二维码。
* 请务必将此过程中提供的任何新备份代码保存在安全的地方。
