本文档适用于 Devin 的联邦部署。返回 Devin 文档
文件位置
由你编写的文件
以下是全系统范围的输入文件。每个文件都有一个默认路径,并可通过对应的环境变量覆盖该路径;该变量必须在启动智能体的环境中设置 (有关如何在 Desktop 中进行设置,请参阅 API 密钥环境变量) 。
macOS 和 Linux 上的默认路径相同。在 Windows 上,许可证、模型文件和认证文件默认位于
C:\ProgramData\Devin\ (license.devin-onprem-license、models.json、auth.json) ,全系统策略文件为 C:\ProgramData\Devin\system.json,覆盖变量与其他平台相同;在向该文件夹放入文件之前,请先锁定该文件夹。CLI 只会读取这些文件,从不写入,因此你可以使用配置管理工具来管理它们,并将其设为只读。
CLI 写入的用户级状态
在 macOS 和 Linux 上,CLI 均遵循 XDG 基础目录布局 (不会使用~/Library 存储自身状态) 。如果设置了 XDG_CONFIG_HOME 和 XDG_DATA_HOME,CLI 会采用这些变量。
cli-federal 是气隙构建使用的产品子目录,用于将这些状态与同一台机器上安装的标准 Devin CLI (使用 cli) 隔离开来。
在 Windows 上,CLI 不读取 XDG_* 变量,而是将相同的文件存放在 %APPDATA%\devin\ 下,并将缓存存放在 %LOCALAPPDATA%\devin\ 下:
Desktop 专属状态
Desktop 应用程序与同一台机器上安装的其他 Devin Desktop 或 Windsurf 相互隔离:
仅当
~/.devin-airgap-config/devin/config.json 处不存在任何内容时,Desktop 才会在启动时创建该符号链接。如果该位置已有普通文件,Desktop 不会改动它,内置智能体将使用该文件而非共享文件,同时 Devin ACP 输出频道会记录一行 WARNING: … is a regular file, not a symlink。删除该文件并重启 Desktop 即可恢复链接。
Windows 上不使用符号链接。Desktop 内置智能体与 CLI 直接共享 %APPDATA%\devin\config.json,且 Desktop 不会加载用户的 %APPDATA%\devin\mcp_config.json。Desktop 用户数据位于 %APPDATA%\Devin - Airgap\。
如需彻底重装,只能安全删除 ~/.devin-airgap-config/ 和 ~/.devin-airgap/。~/.config/devin/ 和 ~/.local/share/devin/ 同时也供独立 CLI 使用。
审计日志
气隙版 CLI 会在本地写入仅追加的结构化审计日志。该日志始终启用 (无切换开关) ,其他任何 Devin 构建均不具备此功能。日志写入工作站,供你自行审查,也可供 SIEM 摄取。位置与轮换
如需无限期保留日志,请在已轮换的文件被清理之前将其发送到您的 SIEM。由于 CLI 只追加写入、从不改写已有内容,使用标准的文件追踪收集器即可满足需求;请参阅将审计日志转发到您的 SIEM。
脱敏保证
事件仅携带路径和元数据。日志中绝不会包含提示、模型响应、代码、文件内容、敏感值、API 密钥或完整的 Shell 命令行;对于 Shell 工具,仅记录程序名称 (即第一个令牌) 。信封结构 (schema 版本 1)
每一行都包含此信封结构;各事件特有的字段会展平后与信封字段并列。
请将你的解析器配置为忽略未知字段和未知的
event 值:新增字段和事件类型时,schema_version 不一定会递增。
事件类型
session_start
在智能体会话开始时触发 (新建或恢复的根级会话) 。
session_end
在会话结束或智能体关闭时触发。
session_start 都会与同一 session_id 下的唯一一个 session_end 配对。CLI 会在子进程中运行智能体,并在清理阶段终止该子进程,因此会话结束时,由父进程为子会话记录 session_end (原因为 other) 。被 SIGKILL 终止或因断电中断的会话无法写入最终事件;如果某个 session_start 没有匹配的 session_end,应视为异常终止。
tool_call
智能体每执行完一个工具后触发。
file_read 和 file_write
除 tool_call 外还会额外发出,工具解析后的权限作用域中每个路径各发出一次。它们描述的是该工具被限定的访问范围,而非经过验证的 I/O:如果某个工具获批对多个路径拥有读取作用域,即使它只访问了其中部分路径,也会为每个路径各发出一个 file_read;此外,无论工具调用是否成功,这些事件都会发出。
model_call
每次向模型文件中的模型端点发出推理请求后触发。
如果端点未返回用量数据,则不包含 token 相关字段。
auth
actor 对象
身份署名包括操作系统用户、本地 Git 身份,以及来自已验证 ID 令牌的身份 (仅在已配置 SSO (单点登录) 时) 。字段不可用时会被省略。
SSO 字段会出现在以下事件中:每个持有已验证令牌的
auth 事件 (sso_login、sso_refresh、sso_logout、sso_login_denied) ;sso_revalidation_failed,对应该进程验证过的登录 (若进程未验证任何登录,则对应令牌缓存中仍保留的登录) ;以及 session_start 和 identity_resolved,对应当前运行的进程在启动时验证的登录。tool_call、file_read、file_write 和 model_call 不包含 actor;请通过 session_id 将它们关联到对应的 session_start 来确定归属。
sso_groups 会在本机上记录每个用户的 IdP 组成员关系。审计目录和文件仅限所有者访问;如果组名在您的环境中属于敏感信息,请将其纳入数据处理审查范围。将审计日志转发到您的 SIEM
Devin 不会将审计记录发送到任何地方。如需汇总多台工作站的用量,请将您的 SIEM 现有的日志采集智能体 (例如 Splunk 通用转发器 或 Elastic Agent) 指向每台工作站上的审计目录。此过程无需任何 Devin 设置。 按以下设置配置该智能体的文件输入:
每个用户的工作站会保留活跃文件以及最多 10 个已轮换文件 (每个 10 MiB) ,总计约 110 MiB。超出部分的较旧记录会被删除,因此如果某台工作站在两次采集之间产生的数据超过该容量,最早的记录将会丢失。
要确认采集是否正常,请在一台工作站上启动并结束一个 Devin 会话,然后在您的 SIEM 中搜索
session_id 相同的 session_start 和 session_end 记录。
示例:Splunk 通用转发器
在每台转发器上,将以下两个文件部署到某个应用中 (例如$SPLUNK_HOME/etc/apps/devin_audit/local/) 。仅使用与工作站操作系统对应的 monitor 配置节,并将 devin 替换为你要使用的索引。
inputs.conf
props.conf
props.conf 必须部署在转发器上,而不能只放在索引器上,因为 INDEXED_EXTRACTIONS 是在读取文件的位置生效的。请勿设置 crcSalt:这样转发器会根据文件内容识别已轮换的文件,不会因文件改名而重复读取。运行转发器所用的账户必须对通配符路径中的每个目录都具有读取权限;以非 root 服务账号身份安装的转发器无法读取仅限所有者访问的审计目录。
字段以索引字段的形式写入,并保留其 JSON 名称,因此可以直接搜索 actor.sso_user、model 和 input_tokens:
示例:Elastic (Filebeat 或 Elastic Agent)
将以下filestream 输入添加到 filebeat.yml 中,并仅保留与该工作站操作系统对应的路径。
filebeat.yml
ndjson 解析器会将每条记录放在 devin. 前缀下 (devin.event、devin.session_id、devin.actor.sso_user) 。不要设置 target: "":记录的 event 字段是字符串,会与 Elastic Common Schema 中的 event 对象冲突,导致 Elasticsearch 拒绝这些文档。timestamp 处理器会将 ts 复制到 @timestamp;Elastic 将此处理器标记为 beta,因此如有需要,也可以移除它,改为在摄取流水线中根据 devin.ts 设置 @timestamp。id 在您的所有 filestream 输入中必须唯一。Filebeat 默认以文件开头部分的指纹作为文件标识,即使轮换时文件被重命名,也能继续跟踪该文件,因此无需额外配置轮换。指纹长度从默认的 1024 字节降为 64 字节,这是因为 Filebeat 9.0 至 9.4 会忽略长度不足该值的文件,导致仅有少量记录的工作站被跳过。审计文件的前 64 字节包含第一条记录的 ts 和 pid,足以确保指纹互不相同。日后若更改该长度,Filebeat 会重新读取所有文件。
如果使用 Elastic Agent,请将 Custom Logs (Filestream) 集成添加到 Agent 策略中,填写相同的路径,并将上述 parsers 和 processors 块填入该集成的自定义配置字段。
Cognition 尚未在 Splunk 或 Elastic 部署中运行过这些示例。请先在您的环境中验证,并在部署到工作站之前,查阅与您所安装版本对应的供应商文档。
只有
session_start 和 auth 记录包含用户信息。要将 tool_call、file_read、file_write 和 model_call 记录归属到具体用户,请通过相同的 session_id 将它们与对应的 session_start 记录关联。
诊断报告
devin diagnostics 会生成一份经过脱敏处理的纯文本报告,你可以先自行审查,再将其发送给 Cognition 支持团队。报告仅包含版本信息、配置结构 (各文件是否存在以及能否成功解析) 、模型名称、各 API 密钥变量是否已设置,以及审计日志统计数据;绝不会包含提示、代码、文件内容、敏感值、端点 URL 或环境变量的值。
--output <path> 指定文件名。报告文件以仅所有者可访问的权限 (0600) 写入。有关提交支持请求时需要附带哪些信息,请参阅故障排查。
