Privacy & Sandboxing —— 安全架构规范
Hydite IDE 隐私分级与本地沙箱的形式化说明:信任边界、数据分类、三档模式控制矩阵、可验证项与配置面
文档定位:本规范用于面向安全审计、合规评估与企业采购评审的技术对齐文档;不替代客户内部的风险评估流程。
关键字:本规范中出现的「MUST / SHOULD / MAY / MUST NOT」遵循 RFC 2119 的语义。
1. 范围与术语#
1.1 适用范围#
本规范覆盖 Hydite IDE 客户端在以下方面的安全行为:
- 数据驻留(源代码、项目语义索引、prompt 上下文、模型响应、遥测)。
- 本地进程沙箱(文件系统、命令执行、网络访问、第三方插件 / MCP / Skill 调用)。
- 三档隐私模式的可用性与切换约束。
- 与 Hydite Vtslx AO 网关之间的传输与信任关系。
不在本规范范围内:
- Hydite Vtslx AO 网关本身的服务端安全治理(详见 Vtslx AO 部署文档)。
- 客户自部署的本地模型推理服务(Ollama / vLLM / 自托管 OpenAI 兼容服务)的内部安全控制 —— 本规范仅描述 Hydite 与之交互的边界条件。
1.2 术语定义#
| 术语 | 定义 |
|---|---|
| 代码资产(Code Asset) | 项目工作区内由 Git 跟踪的源代码、配置、文档及其衍生物。 |
| 项目语义索引(Project Index) | Context Hub 在客户端本地构建的代码语义、符号、调用图与关联资源索引。 |
| Prompt 上下文(Prompt Context) | 单次 LLM 调用前组装的、提交给推理后端的全部输入文本与结构化字段。 |
| 本机驻留模型(On-device Model) | 推理过程完全在客户端机器(含其本地局域网内的私有推理服务)完成、不向公网发送请求的模型。 |
| 可达云端模型(Reachable Cloud Model) | 任何通过公网发往非客户控制基础设施的模型,包括但不限于 SaaS 模型 API、第三方代理。 |
| Agent 工具调用(Agent Tool Invocation) | Agent 模式下对文件系统、命令执行、网络请求、MCP 资源、Skills 的调用动作。 |
| 客户控制域(Customer-Controlled Domain) | 客户拥有管理权的执行环境,含本机、客户内网、客户自托管 Vtslx AO 网关及其依赖。 |
1.3 标识规则#
本规范中出现的控制项使用如下命名规则:
1CTL-<域>-<序号>其中 <域> 取值:
| 域代码 | 含义 |
|---|---|
DAT | 数据资产 |
BND | 信任边界 |
SBX | 沙箱控制 |
NET | 网络控制 |
PRV | 隐私模式 |
AUD | 审计与可验证性 |
CFG | 配置面 |
2. 威胁模型#
本规范以简化 STRIDE 模型作为分析骨架,仅纳入与"客户端隐私 / 沙箱"直接相关的威胁类别。
| 威胁类 | 关注资产 | 设计目标 |
|---|---|---|
| 信息泄漏 | 代码资产、项目语义索引、Prompt 上下文 | 在用户未明示授权时,MUST NOT 离开客户控制域。 |
| 越权访问 | 客户端文件系统、网络、外设 | Agent 工具调用 MUST 受沙箱介入,越权动作必须被拒绝且可审计。 |
| 篡改 | 项目文件、索引、配置 | 第三方 Skill / MCP MUST NOT 在用户授权范围之外写入或修改本机数据。 |
| 重放与中间人 | Vtslx AO 网关之间的传输 | 所有跨网传输 MUST 经认证、加密信道。 |
| 抵赖 | Agent 行为可追溯性 | 关键操作 SHOULD 留下本地可读的审计记录。 |
| 拒绝服务 | 客户端资源 | Context Hub 与 Agent SHOULD 在资源边界内运行;本规范不对极端攻击作 SLA 承诺。 |
3. 信任边界与数据资产分类#
3.1 信任边界(CTL-BND-01 ~ 04)#
Hydite IDE 在客户端定义如下四条信任边界:
1┌─────────────────────────────────────────────────────────────────┐2│ T0: 操作系统进程边界(IDE 主进程) │3│ ┌───────────────────────────────────────────────────────────┐ │4│ │ T1: Agent 工具沙箱(受 OS 原语强制) │ │5│ │ ┌──────────────────────────────────────────────────────┐ │ │6│ │ │ T2: 命令执行 / 网络访问子边界 │ │ │7│ │ │ ┌─────────────────────────────────────────────────┐ │ │ │8│ │ │ │ T3: 第三方 Skill / MCP 调用 │ │ │ │9│ │ │ └─────────────────────────────────────────────────┘ │ │ │10│ │ └──────────────────────────────────────────────────────┘ │ │11│ └───────────────────────────────────────────────────────────┘ │12└─────────────────────────────────────────────────────────────────┘13 │14 ▼ 仅当模式允许且用户授权15┌─────────────────────────────────────────────────────────────────┐16│ Vtslx AO 网关(Hydite 共享 / 客户专属 / 客户自托管 三档之一) │17└─────────────────────────────────────────────────────────────────┘| ID | 边界 | 强制实现 |
|---|---|---|
| CTL-BND-01 | T0:IDE 主进程 | 由宿主操作系统进程隔离机制 |
| CTL-BND-02 | T1:Agent 工具沙箱 | macOS Seatbelt / Linux 命名空间 |
| CTL-BND-03 | T2:命令 / 网络子边界 | T1 内的细粒度策略 |
| CTL-BND-04 | T3:Skill / MCP 调用 | T1 内的能力委派模型 |
3.2 数据资产分类(CTL-DAT-01 ~ 06)#
| ID | 资产 | 默认敏感度 | 默认驻留位置 |
|---|---|---|---|
| CTL-DAT-01 | 源代码 / Git 跟踪文件 | 高 | 客户控制域 |
| CTL-DAT-02 | 项目语义索引 | 高 | 客户控制域(本机) |
| CTL-DAT-03 | Agent 临时工作区(worktree / 暂存分支) | 高 | 客户控制域(本机) |
| CTL-DAT-04 | Prompt 上下文 | 中 | 由当前隐私模式决定 |
| CTL-DAT-05 | 模型响应 | 中 | 客户控制域 |
| CTL-DAT-06 | 客户端遥测(崩溃、性能、用量计数) | 低 | 由客户授权决定 |
4. 隐私模式形式化矩阵#
4.1 三档定义(CTL-PRV-01 ~ 03)#
| ID | 模式 | 形式化定义 |
|---|---|---|
| CTL-PRV-01 | High Privacy | 对所有 CTL-DAT-01..05 资产,MUST NOT 离开客户控制域;推理仅可发往本机驻留模型。 |
| CTL-PRV-02 | Standard | 默认行为,允许将经过最小化的 Prompt 上下文(CTL-DAT-04)送入用户授权的可达云端模型;其余资产仍 MUST 驻留客户控制域。 |
| CTL-PRV-03 | Self-Hosted Enterprise | 推理 MUST 经客户自托管的 Vtslx AO 网关;任何资产 MUST NOT 经过 Hydite 控制的网络节点。 |
4.2 行为矩阵#
下表对每类数据资产在每档模式下的行为给出形式化承诺。
| 资产 ↓ / 模式 → | High Privacy | Standard | Self-Hosted Enterprise |
|---|---|---|---|
CTL-DAT-01 源代码 | 不出本机 | 不出本机 | 不出客户 VPC |
CTL-DAT-02 语义索引(构建) | 本机 | 本机 | 本机 |
CTL-DAT-02 语义索引(存储) | 本机 | 本机 | 本机 |
CTL-DAT-04 Prompt 上下文 | 不出本机 | 仅最小相关片段送可达云端模型 | 仅经客户自托管网关 |
CTL-DAT-05 模型响应 | 来自本机模型 | 来自用户授权的云端模型 | 来自客户网关后端 |
CTL-DAT-06 遥测 | MUST 关闭 | MAY 启用(由用户控制) | MUST 经客户网关或关闭 |
4.3 模式可用性约束(CTL-PRV-04)#
- High Privacy 切换器 MUST 仅在 Agent 模式可见。Edit 模式下,由于其作用域被约束在当前选区且默认不主动调用云端,不提供独立的 High Privacy 切换器。
- High Privacy 模式启用时,UI MUST 在输入框胶囊上呈现锁形指示,状态栏 SHOULD 持续提示当前会话的隐私级别。
- 启用 High Privacy 后,任何尝试调用可达云端模型的动作 MUST 被拒绝;如用户已通过白名单显式允许某些云模型,调用前 MUST 触发二次确认。
5. 沙箱控制族#
Hydite Agent 在 T1 边界内运行,本节定义其控制族。
5.1 文件系统(CTL-SBX-01 ~ 04)#
| ID | 控制 | 缺省策略 |
|---|---|---|
| CTL-SBX-01 | 工作区可读范围 | 仅当前项目根及其子目录 |
| CTL-SBX-02 | 工作区可写范围 | 仅当前项目根;项目外路径 MUST 由 Agent 显式提示 |
| CTL-SBX-03 | 系统敏感目录 | ~/.ssh、~/.aws、密钥库等 MUST 受显式白名单保护 |
| CTL-SBX-04 | 项目级文件黑名单 | .hydite/agent-deny.glob 中匹配的路径 MUST 被沙箱拒绝读写 |
5.2 命令执行(CTL-SBX-05 ~ 07)#
| ID | 控制 | 缺省策略 |
|---|---|---|
| CTL-SBX-05 | 命令工作目录 | 默认锁定在项目根 |
| CTL-SBX-06 | 命令网络访问 | MAY 全局禁用;High Privacy 模式下 MUST 默认禁用 |
| CTL-SBX-07 | 命令资源限制 | 子进程时长、CPU、内存 SHOULD 受可配置上限约束 |
5.3 网络(CTL-NET-01 ~ 04)#
| ID | 控制 | 缺省策略 |
|---|---|---|
| CTL-NET-01 | 默认出站策略 | High Privacy:拒绝;其余模式:仅允许已授权目的地 |
| CTL-NET-02 | 模型推理出站 | 仅指向当前模式约定的目标(本机 / 用户授权云端 / 自托管网关) |
| CTL-NET-03 | 客户端更新通道 | SHOULD 可由企业管理员关闭或代理至内网 |
| CTL-NET-04 | 第三方 MCP 出站 | 与 CTL-NET-01 一致;MCP MUST NOT 绕过沙箱直接联网 |
5.4 第三方代码:Skill / MCP(CTL-SBX-08 ~ 10)#
| ID | 控制 | 缺省策略 |
|---|---|---|
| CTL-SBX-08 | Skill 文件读写权限 | 与所属 Agent 的 T1 限制一致;不能突破 |
| CTL-SBX-09 | MCP 资源白名单 | 默认 MUST 由用户在项目级显式启用 |
| CTL-SBX-10 | Skill / MCP 网络出站 | 受 CTL-NET-04 约束 |
5.5 Worktree 物理隔离(CTL-SBX-11)#
Agent Hub 在多 Agent 并行作业时,每个 Agent MUST 在独立的 Git Worktree(或临时分支)中执行;其写操作 MUST NOT 直接污染主分支,回流前 SHOULD 经统一审查。该机制保证:
- 单个 Agent 的失败 / 越权尝试 MUST 被限制在单一 Worktree 内。
- 用户对任何 Agent 的写操作 MAY 通过删除其 Worktree 一键回滚。
6. High Privacy 模式正式规范#
6.1 激活条件(CTL-PRV-05)#
- 当前会话 MUST 处于 Agent 模式。
- 用户在输入框左下角的高隐私胶囊上发起切换,MUST 经过一次显式确认面板。
- 确认面板 MUST 逐项展示如下作用域:源代码出站、索引出站、命令网络、Skill / MCP 网络、遥测。
6.2 出站契约(CTL-PRV-06)#
进入 High Privacy 后,下列承诺生效:
- 源代码 MUST NOT 离开本机。 任何尝试将文件内容、文件路径或文件元信息发送至非本机驻留模型的行为 MUST 被拒绝。
- 项目语义索引 MUST 仅由本机模型构建与查询。 索引数据 MUST NOT 出现在任何对外请求体中。
- Prompt 上下文 MUST 仅发往本机驻留模型。
- 遥测 MUST 处于关闭状态。
- 命令执行的网络访问 MUST 默认拒绝。 用户 MAY 通过逐条规则放行内网目的地,但不得放行公网。
6.3 推理路径限制(CTL-PRV-07)#
High Privacy 模式下,可用推理路径受限于「本机驻留模型」,包含但不限于:
- 客户端宿主机直接运行的本地推理框架。
- 客户端可达局域网内的私有推理服务。
任何指向公网的推理路径在该模式下 MUST 被禁用。若用户在白名单中显式登记了云端模型,调用 MUST 在执行前再次提示并要求确认。
6.4 UI 不变量(CTL-PRV-08)#
- 输入框胶囊 MUST 显示锁形指示,且仅在 High Privacy 期间显示。
- 状态栏 SHOULD 显示「Local-only」或语义等价的指示。
- 切出 High Privacy MUST 触发显式提示,提示中应说明退出后恢复的默认出站策略。
7. Standard 模式正式规范#
7.1 数据最小化原则(CTL-PRV-09)#
Standard 模式遵循"最小相关片段"原则:
- Prompt 上下文 MUST 经 Context Hub 的本地检索阶段筛选,仅保留与当前请求最相关的片段。
- 整目录扫描结果、整索引快照 MUST NOT 直接进入 Prompt 上下文。
7.2 传输保护(CTL-PRV-10)#
- 跨网传输 MUST 使用具备认证与加密的信道。
- 客户端 MUST 校验对端身份;自定义网关时 MUST 校验客户提供的证书或 SPKI 锚定信息。
7.3 用户可控项(CTL-PRV-11)#
Standard 模式下,下列项 MUST 在客户端设置中可关闭:
- 遥测上报。
- 客户端自动更新通道。
- 第三方 Skill / MCP 网络出站。
- 模型回流(response)日志缓存。
8. Self-Hosted Enterprise 模式正式规范#
8.1 部署假设(CTL-PRV-12)#
- 客户在自有 VPC / 内网中部署 Hydite Vtslx AO 网关。
- 客户端 MUST 仅指向客户提供的网关地址;Hydite 控制的网络节点 MUST NOT 出现在调用链上。
8.2 BYOK 与身份(CTL-PRV-13)#
- 模型 API Key、推理凭证 MUST 由客户保管,存放于客户网关或客户密钥管理系统。
- 客户端 MUST 支持企业 SSO 登录(详见 Vtslx AO 文档),并 SHOULD 复用其会话标识完成网关鉴权。
8.3 审计协同(CTL-PRV-14)#
- 所有跨网请求 MUST 经过客户网关;客户网关 SHOULD 提供完整的访问日志。
- 客户端 SHOULD 提供本地行为摘要导出能力,便于与网关日志合并审计。
9. 遥测与最小化#
9.1 遥测分类(CTL-AUD-01)#
| 分类 | 包含示例 | High Privacy | Standard | Self-Hosted |
|---|---|---|---|---|
| 崩溃报告 | 堆栈、版本、平台 | 关闭 | 用户可关 | 经客户网关或关闭 |
| 性能计数 | 启动耗时、索引耗时(不含路径) | 关闭 | 用户可关 | 经客户网关或关闭 |
| 用量计数 | 模式切换次数、Agent 启动次数 | 关闭 | 用户可关 | 经客户网关或关闭 |
| Prompt / 响应 | 模型输入与输出 | MUST 关闭 | MUST NOT 默认开启 | MUST 经客户网关或关闭 |
9.2 默认值(CTL-AUD-02)#
- 任何包含代码片段、文件路径、提示词、模型响应的遥测 MUST NOT 默认启用。
- 默认启用的遥测项 MUST 不包含可还原代码资产的字段。
10. 可审计性与自验证#
10.1 用户级自验证(CTL-AUD-03)#
任何用户均可通过以下路径自行验证当前模式是否如本规范所述:
| 验证目标 | 操作 | 期望结果 |
|---|---|---|
| 索引位置 | 检查项目根 .hydite/index/ | 索引文件存在于本地,无远端同步痕迹 |
| 网络出站 | 在主机上启动包嗅探(如 lsof -i、Little Snitch、tcpdump) | High Privacy 期间无指向公网的推理流量 |
| 命令网络 | 让 Agent 执行 curl https://example.com | High Privacy 模式下被沙箱拒绝 |
| 文件越权 | 在 .hydite/agent-deny.glob 中加入 *.pem,让 Agent 读取 | 读取被拒绝并记录 |
| 模式 UI | 切换至 High Privacy | 输入框胶囊显示锁形指示 |
10.2 企业级自验证(CTL-AUD-04)#
- 客户网络团队可在出口防火墙上对客户端集群配置出站白名单,仅放行自托管 Vtslx AO 网关,SHOULD 观察到无任何意外目的地流量。
- 客户网关日志 SHOULD 与客户端导出的本地行为摘要在请求计数上对账一致。
11. 配置面参考#
11.1 项目级文件(CTL-CFG-01)#
| 路径 | 用途 |
|---|---|
.hydite/index.ignore | 索引黑名单,语法同 .gitignore |
.hydite/index.include | 索引强制纳入路径 |
.hydite/agent-deny.glob | Agent 文件读写黑名单 |
.hydite/index/ | 本地索引存储(建议加入 .gitignore) |
11.2 命令面板项(CTL-CFG-02)#
| 命令 | 用途 |
|---|---|
Hydite: Toggle High Privacy Mode | 在 Agent 模式下切换高隐私 |
Hydite: Rebuild Project Index | 强制重建本地索引 |
Hydite: Open Privacy Scope Panel | 打开高隐私作用域确认面板 |
Hydite: Export Local Activity Summary | 导出本地行为摘要供审计 |
11.3 全局设置项(CTL-CFG-03,节选)#
| 设置键 | 含义 |
|---|---|
hydite.privacy.defaultMode | IDE 启动默认隐私模式 |
hydite.privacy.allowedCloudModels | 高隐私白名单内的可达云端模型 |
hydite.telemetry.enabled | 是否启用基础遥测 |
hydite.network.allowedHosts | 命令执行允许出站的主机白名单 |
12. 一致性等级#
为便于客户内部评估,本规范定义两级一致性:
- 基础一致:客户端默认启用的所有控制项符合本规范第 5、9 条对应内容。
- 企业一致:在基础一致之上,启用 Self-Hosted Enterprise 模式并通过第 8 条与第 10.2 节的自验证项。
本规范不主张任何特定第三方认证(如 SOC 2、ISO/IEC 27001、FedRAMP 等)。客户在受监管行业落地时,SHOULD 将本规范作为合规自评的输入之一,并结合所在行业的具体要求进行差距分析。
13. 修订记录#
| 版本 | 范围 |
|---|---|
| 1.0 | 初版:定义术语、信任边界、三档隐私模式形式化矩阵、沙箱控制族与可验证项 |
14. 参考与延伸阅读#
- Agent vs Edit 模式 —— 模式切换与高隐私交互入口。
- Context Hub —— 项目语义索引在本规范中的资产定位。
- Hydite Vtslx AO Overview —— 自托管网关的服务端规范。
- RFC 2119 — Key words for use in RFCs —— 关键字语义。