安全、隐私与数据流
Halo 的安全与权限控制说明:哪些数据留在本机、哪些会发出去,密钥怎样存放,AI 和 IM 访客、其他电脑的同事各能做什么,远程访问有什么风险。
Halo 运行在你自己的电脑上。对话、文件、记忆和密钥都存在本机,Halo 没有保存这些内容的云端。会离开电脑的,主要是发给你所选模型服务商的对话内容,以及你主动打开的连接。你本人使用时,AI 执行工具不会逐次征求确认;对 IM 访客和其他电脑上的同事,Halo 会按你的设置限制。
本页适用于 Halo 3.0.4 公开版。公司提供的 Halo 可能在凭据加密、浏览器访问范围、隧道等方面另有设置,以你屏幕上看到的为准。
哪些留在本机,哪些会发出去
下表列出 Halo 会主动连接的所有对象。除此之外的数据都只在你的电脑上。
| 连接对象 | 什么时候连接 | 发出去的内容 | 你能怎样控制 |
|---|---|---|---|
| 你配置的模型服务商(Claude、ChatGPT、GitHub Copilot、自定义 API 等) | 每次对话、每次数字人运行 | 对话上下文:你的消息、附件内容、AI 读到的文件和工具结果 | 在 设置 › AI 模型 选择服务商,见模型与账号。内容如何处理,以该服务商的政策为准 |
| 登录服务(各家的 OAuth 登录) | 你登录账号、令牌刷新时 | 登录所需的授权信息 | 不用的账号在 设置 › AI 模型 里退出登录 |
| 商店来源(数字人协议官方源、MCP Official Registry、Smithery、Claude Skills Registry、SkillHub) | 打开商店时;每 6 小时检查一次已装内容的更新 | 目录查询;安装时下载软件包 | 在 设置 › 应用商店 里关掉不需要的来源 |
| 更新源(项目在 GitHub 上的发布页) | 启动后 5 秒、每 60 分钟、电脑唤醒后 | 版本检查;有新版本时下载安装包 | 见更新 Halo |
| 使用统计(Google Analytics、百度统计) | Halo 运行期间 | 使用事件,例如启动、打开了哪个页面、发了一条消息、数字人运行了一次;附带本机随机生成的安装 ID,以及版本号、操作系统等信息。消息事件只记录「发了一条消息」,不含消息文字 | 公开版的设置里没有关闭开关 |
| 隧道和 Halo 的地址服务 | 只在 设置 › 远程访问 › 互联网访问 启动隧道后 | 远程客户端和这台 Halo 之间的全部流量,经 Cloudflare 隧道转发;第一次启动时向 Halo 的地址服务申请这台设备的固定地址 | 停止隧道。见远程访问 |
| 联邦网关 | 只在你填写了 联邦网关 后 | 跨网络团队协作的流量,网关只做中转 | 留空就只在局域网内组队。公开版没有内置网关,见联邦网关 |
| IM 平台(企业微信、飞书、微信) | 接入了机器人时 | 机器人收到和发出的消息、发送的文件 | 在 设置 › 消息通道 断开或删除机器人 |
| 网页搜索 | AI 搜索网页时 | 搜索词,默认发给必应(英文)或百度(中文),只有指定时才用 Google | 这是内置能力,始终可用 |
| AI 浏览器访问的网站 | 网页控制 打开时(新对话默认打开,之后沿用你上次的选择) | 普通的网页访问,带着你在 Halo 浏览器里的登录状态 | 在输入框 + › 能力 关掉 网页控制,见AI 浏览器 |
| 你自己添加的 MCP 服务器、邮箱 | 它们被调用时 | 取决于该服务器或邮件服务 | 在能力库或 设置 › 消息通道 里管理 |
另外几点:
- 崩溃报告只存在本机,Halo 不会上传。需要时你可以在 设置 › 系统 › 崩溃报告 › 打开文件夹 找到它们,自己发给支持人员。
- 代理:设置 › 系统 › 代理 对 Halo 自己的流量生效,包括模型请求、商店,以及 Halo 启动的 AI 和 MCP 进程。检查和下载更新始终走系统代理。AI 浏览器默认走系统代理,只有打开 同时应用于AI浏览器 才走这里的代理。详见网关与代理。
- 远程访问打开后,这台电脑会接受连接:Halo 在所有网卡上监听(默认端口 3456),同一局域网的设备输入访问密码后就能连上。
数据存放在哪里
Halo 的数据在两个文件夹里:
| 文件夹 | 里面有什么 |
|---|---|
~/.halo(Windows:%USERPROFILE%\.halo) | config.json(设置和凭据)、halo.db、工作区、知识库、团队工作记录等 |
应用数据文件夹(macOS:~/Library/Application Support/halo) | AI 浏览器的 Cookie 和登录状态、AI 引擎的配置目录、崩溃报告 |
各系统的完整路径、日志位置和环境变量 HALO_DATA_DIR,见配置与数据路径。
密钥和凭据
- 公开版以明文保存凭据。 API Key、登录令牌、远程访问密码等都以明文写在
~/.halo/config.json里;MCP 服务器的环境变量和请求头、数字人配置里填的值,也以明文存在 Halo 数据文件夹里。任何能读这些文件的人或程序,都能拿到它们。 - 设置里的密钥只显示为
***。 模型服务的 API Key 和登录令牌、消息通道的密钥、远程访问密码,在桌面版、远程访问的网页、Android 应用和 API 返回里都被遮盖。例外:MCP 服务器的环境变量和请求头、数字人配置里填的值、商店来源的 API Key 按原样显示和返回,持有访问密码的远程客户端和 HTTP API 也能读到原值。AI 通过操作 Halo 读到的内容里,这些值都被遮盖。 - 静态加密是构建选项,公开版没有打开。 公司定制的 Halo 可以打开它,打开后凭据加密保存。旧版本更新说明里的「凭据本地加密存储」不适用于 3.0.4 公开版。
- Claude Code CLI 登录不经过 Halo 保存令牌。 用 Claude Code CLI 方式登录时,凭据由 CLI 自己保存和刷新,Halo 不保留令牌。
所以,请把数据文件夹当成钥匙串来保护:
- 不要把
~/.halo放进网盘同步、共享文件夹或公开备份。 - 不要把
config.json发给别人。排查问题时,改用 设置 › 系统 › 系统诊断 › 导出报告:报告不含密钥本身;错误信息里的 Bearer 令牌、JWT 和部分sk-开头的 Key 会被遮盖,但 Anthropic(sk-ant-…)和 OpenAI 项目 Key(sk-proj-…)这类格式不会,所以发出前先通读一遍,见日志与诊断。 - 电脑设登录密码,别和他人共用系统账号。
- 设置 › 高级 › Claude CLI 集成 › 配置目录 选 Claude CLI 默认 会和独立安装的 Claude CLI 共用
~/.claude,界面标为 高风险。没有特别需要,保持 Halo 默认。
AI 执行工具不会逐次确认
你本人使用时,AI 运行命令、修改和删除文件、调用工具,都不会先征求你的同意。
在 设置 › 系统 顶部的 权限 卡片上,可以看到标记 完全权限模式,以及一直打开、不能关闭的 信任模式 开关(「自动执行所有操作」)。3.0.4 没有「每次调用前先问我」的模式。
唯一会让 AI 停下来等你的,是它在对话里提出的问题卡片:你回答后它才继续。IM 对话和计划任务运行这类无人值守的场合,没有这张卡片可用。
实际起限制作用的是这些:
| 限制 | 作用 |
|---|---|
| 工作区对应的文件夹 | AI 主要在工作区里干活。只把工作区指向你愿意让 AI 改动的文件夹 |
| 输入框 + › 能力 | 网页控制、AI 终端、操作 Halo 等开关决定 AI 有没有这些工具,AI 自己打不开开关,见能力 |
| 设置 › 高级 › 内置MCP扩展 | 关掉某组内置工具,AI 就用不了 |
| 非本人发起的请求 | IM 访客和其他电脑上的同事受权限设置约束,见IM 访客和其他电脑 |
操作 Halo 默认关闭。打开后,AI 能通过 Halo 自己的接口改动这台 Halo 里所有工作区、数字人和团队,不限于当前工作区,删除也没有确认弹窗;只有不可撤销的操作,AI 会被要求先用白话和你确认。即使打开,AI 也不能添加模型来源,不能改权限、外观等通用设置,不能动远程访问。少数接口能接收密钥(已有微信机器人的 Token、商店来源的 API Key;修改模型来源的接口也能收 API Key,但 Halo 让 AI 不要这样做),在对话里打出的密钥会留在对话记录里并发给模型服务商,请在设置里自己填。详见操作 Halo 的安全须知。
日志里有什么
| 日志 | 内容 | 注意 |
|---|---|---|
普通日志(main.log) | 运行信息和错误。写入前会遮盖密钥 | 10 MB 轮转,保留 5 份 |
远程访问审计日志(auth-audit.log) | 远程登录的成功、失败和锁定记录 | 不含密码 |
http-raw.log(只在 开发者模式 打开时生成) | Halo 发出的 HTTP 请求的完整请求头和请求体,包括 API Key 和对话内容,不做任何遮盖 | 排查完立刻关掉,并删掉这个文件 |
开发者模式 在 设置 › 高级,默认关闭。界面上的提示是「生成大量日志文件,可能影响性能。故障排查后请禁用。」日志文件夹从 设置 › 系统 › 日志文件 › 打开文件夹 打开。
不要直接发送 http-raw.log
这个文件里有你的 API Key 和完整对话。需要给别人看诊断信息时,用 系统诊断 › 导出报告 生成的脱敏报告。
IM 访客能做什么
把数字人接到企业微信或飞书机器人后,给机器人发消息的人分成两类:
| 身份 | 怎么判定 | 能做什么 |
|---|---|---|
| 主人 | 在 主人用户 ID 列表里的人 | 和你在本机使用一样,不受限制 |
| 访客 | 其他所有人 | 只能用你开放给访客的工具 |
要点:
- 权限控制 在 设置 › 消息通道 ›(机器人卡片)› 权限 里。关闭时显示「所有人都有完全访问权限」,也就是每个发消息的人都等同主人。
- 用 扫码添加机器人 创建的企业微信、飞书机器人,权限控制 会自动打开。主人列表为空时,第一个私聊机器人的人自动成为主人;群聊不会认领主人,没有主人的机器人在群里什么都不做。所以扫码后请你自己先私聊它一次。
- 手动添加的机器人,公开版默认 不 打开 权限控制。如果会有别人给它发消息,记得打开。
- 访客访问权限 关闭时,「访客只能聊天和使用记忆」:访客仍能收到回复,只是不能用工具。
- 打开 访客访问权限 后,第一次默认只开放 读取文件、查找文件、搜索内容,而且只限这个工作区。网页、写文件、运行命令等要你逐项打开。
- 访客永远拿不到 操作 Halo,也不能让数字人主动给别人发 IM 消息。群里主人和访客的消息被合并处理时,按访客的权限执行。
- 个人微信机器人没有权限控制:每个给它发消息的人都拥有主人权限。只在只有你自己会发消息的场合使用它,见个人微信。
INFO
公司提供的 Halo 可能默认打开权限控制,或预设了访客可用的工具。
各开关的含义、如何获取自己的用户 ID、典型配置示例,见主人与访客权限。
来自其他电脑的请求
跨电脑团队里,同事的数字人或同事本人可以请你的数字人干活。这些请求在你的电脑上执行,按你给每位成员的设置受限:
- 邀请、加入和添加成员时,Halo 会问「你邀请的人可以让你的数字人做什么」,选项是 只读、读写文件、它通常可以执行的所有操作。在 3.0.4 里默认是 只读。
- 之后可以在成员设置的 其他人可以要求它做什么 里细调,开关和 IM 访客的相同。
- 来自其他电脑的请求始终可以使用记忆,文件访问只限这个工作区;只有全部打开时,才能像你一样访问工作区以外的文件。
- 操作 Halo 永远不会借给同事。
- 较早加入、从未单独设置过的成员会显示「尚未单独设置:其他电脑上的人可以使用它的全部能力。」看到这句,请为它选一个范围。
- 你自己使用、你自己的数字人之间互相协作,都不受这些限制。
使用联邦网关时,网关只中转流量,不保存团队内容。但 Halo 没有在网关这一层再加密内容,网关管理员打开诊断用的 room.trace 时,日志里会记下成员的消息文字。所以只用你信任的网关,并通过 HTTPS / WSS 部署,见联邦网关能看到什么。
远程访问的风险
打开 设置 › 远程访问 后,任何拿到访问密码的人都能完全控制这台 Halo。界面上的 安全警告 写的是:「启用远程访问后,任何拥有密码的人都可以完全控制您的计算机(读写文件、执行命令)。」
| 事实 | 说明 |
|---|---|
| 密码 | 自动生成 12 位,或自定义 8–64 位(需包含大小写字母和数字)。没有过期时间,改密码后所有已连接的客户端都要重新登录 |
| 单个 IP 锁定 | 5 分钟内输错 5 次,该 IP 锁定 15 分钟 |
| 全局锁定 | 所有 IP 合计 60 分钟内输错 10 次,所有客户端(包括你自己)锁定 30 分钟 |
| 锁定提醒 | 桌面系统通知,文字为英文。重启 Halo 会清零计数 |
| 局域网连接 | 走 http://,不加密。在公共网络里请改用隧道的 HTTPS 地址 |
| 互联网访问 | 经 Cloudflare 隧道和 Halo 的地址服务转发,不是点对点直连。二维码里只有地址,不含密码 |
不用时关掉远程访问或停止隧道;怀疑密码泄露时立刻改密码,必要时用 更换地址 换掉公网地址。详见远程访问的安全须知。
AI 浏览器的登录状态
- Halo 里所有浏览器页面共用一份 Cookie 和登录状态:你的标签页、AI 打开的页面、数字人的页面都一样。你登录一次,AI 和数字人就能以你的身份访问这个网站。
- 只在愿意让 AI 代你操作的网站上登录。
- 设置 › 系统 › 浏览器数据 › 清除浏览器数据 会让所有网站退出登录,包括数字人用的网站,无法撤销。Halo 自己的数据不受影响。
- 公开版不限制 AI 浏览器能打开哪些网站。限制访问范围的白名单只在公司定制版里有;这类版本允许时,设置 › 系统 里会出现 浏览器允许的站点。
更多用法见 AI 浏览器。
通过 IM 发送文件的限制
AI 在 IM 对话里可以把报告、图片、PDF 发回聊天,但只能发数字人工作区里的文件,或系统临时目录里的文件。
- 指向别处的快捷方式(符号链接)会先解析成真实位置再检查。
- 对受限的对话(例如访客)关闭的文件夹,也发不出去。
- 数字人主动推送 IM 消息时附带的文件,适用同一规则。
- 访客的工具设置里还有单独的 File Send 开关,决定访客能否让 AI 发文件。
所以,不要把敏感文件放进对外机器人所用数字人的工作区。
Halo Server 的默认令牌
Halo Server 没设置 HALO_REMOTE_PASSWORD 时,默认令牌是 halo123,人人都能猜到,而且只有 7 位,浏览器和 Android 应用都登录不了。部署前务必设置一个 8 位以上的强密码,见服务器配置。
管理员检查清单
- [ ] 工作区只指向愿意让 AI 改动的文件夹。
- [ ]
~/.halo没有放进网盘、共享文件夹或公开备份。 - [ ] 开发者模式 已关闭,旧的
http-raw.log已删除。 - [ ] 每个对外的企业微信、飞书机器人都打开了 权限控制,主人是你自己,访客只开放了需要的工具。
- [ ] 没有在多人会发消息的场合使用个人微信机器人。
- [ ] 跨电脑团队里,每位成员都设置了 其他人可以要求它做什么,没有「尚未单独设置」。
- [ ] 不需要时关掉 操作 Halo;新对话会沿用上次的开关。
- [ ] 远程访问用了强密码,不用时关闭,隧道不用时停止。
- [ ] AI 浏览器只登录了必要的网站。
- [ ] Halo Server 设置了自己的
HALO_REMOTE_PASSWORD。