AI 安全模型
AI 与远程桌面结合后可以读取系统状态并协助操作,因此必须建立严格的信任边界。LCXL Remote Desk 把 AI 作为正式控制入口,并用一组必须始终满足的安全规则加以约束。
服务端是唯一可信源
所有授权逻辑均由中心信令服务在服务端校验。请求编号、目标、操作者、适用范围、调用来源、最终风险等级和审批编号等受信字段,都由服务端写入并核对;浏览器、移动端或 MCP 客户端不能自行声明这些字段。整个信任关系建立在连接认证之上,未经认证的转发连接不会被提升为已授权连接。
能力协议面向设备
能力协议描述对设备能做什么,与调用者无关。读权限点由输入派生(OperationInput::capability()),从而杜绝能力、证据采集与审计三者之间的漂移。
中心授权与本地上限
开源信令服务端的中心授权默认采用每次操作均需确认,每台设备仍保留独立的本地执行上限,且本地上限默认保持只给建议。最终采用两者中更严格的设置,因此设备只能收紧中心授权,不能将其放宽。即使提高本地上限,也不会启用无人值守执行:每条命令仍必须经过服务端,并由用户明确确认。
AI 诊断面板与终端 Copilot 共用同一套确认流程。Copilot 始终只给建议,不会自行执行命令。用户点击“执行”后,确切命令会发送到被控端,由服务端重新判定风险并生成预览;用户再次确认后才会真正执行。该流程还受设备的本地执行上限控制。如果设备保持“只给建议”,执行请求会被拒绝,并提示设备所有者先调整上限。调整后,诊断和终端 Copilot 都会采用相同设置。
所有者交互式自由命令
命令模板仍是默认的执行条件。只有经过认证的设备所有者操作自己的设备时,中心服务才能授予 OwnerInteractive 权限;开源信令服务中的唯一认证账户就是设备所有者。非所有者、访问码会话、操作共享设备的组织成员、批量运维、自动化、MCP 和原始请求仍然必须使用模板,或保持禁止执行。
非模板的所有者命令不会被视为安全。黑名单只进行尽力而为的宽泛匹配,并不是完整的语义沙箱。因此这类命令一律标为严重风险,完整展示命令解释器、工作目录和超时时间,并提示“仅检查黑名单”。每条命令都必须单独批准;确认按钮不会默认获得焦点,也不能直接按 Enter 触发。模型只能提出请求并等待,不能自行批准。
批准后,中心服务会重新判定风险,并要求命令草稿的每个字段都与预览一致。被控端随后独立检查授权绑定、本地执行上限、黑名单、执行依据和资源限制。工作进程最终只接收已经冻结的程序名和参数列表(program + argv),不会重新解析命令字符串。
在智能体执行流程中,被控端无法直接观察浏览器里的确认操作,只能信任受信中心服务已经消费了一次有效审批。如果中心服务本身被攻陷,审批边界也会随之失守;被控端仍能阻止非受信来源伪造请求,以及命令在传输过程中被篡改。
设备自己的并发上限
被控端设备还会限制同时运行的命令数(ai_policy.max_concurrent_executions,默认 4)。这道限制由设备自己执行,不依赖调用方遵守。
Manager 也会按平台配额调度任务,但这只约束由 Manager 下发的工作。控制端通过开源信令服务器直连设备时并不经过 Manager,因此设备必须保留自己的并发上限,不能依赖中心调度器保证安全。
超过上限的命令会被拒绝且不予受理——它没有被记入设备的执行账本,所以调用方稍后重试会被正常接纳,而不会被误判为一次重复投递。
运行中的命令会自己上报
命令一旦启动,被控端就会主动说明:上报已受理、运行期间周期性上报仍在运行, 并可随时回答关于任一次派发的直接询问。
这取代了原先靠时钟做的推断。此前上游听不到消息时只能猜一条长命令是仍在工作还是已经丢失, 而对一条会改变系统的命令猜错,不是无关紧要的错误。现在沉默不再被解读: 权威答案永远来自被控端自己的持久记录,该记录比写下它的进程活得更久。
被控端若因崩溃而丢失了某次执行的踪迹,它会如实报告不确定,而不是声称失败。 可能已改变系统的命令会被留给人工查看,绝不静默重试。
停止一条命令
运行中的命令可以被停止,而停止会回收整棵进程树——不只是被启动的那一个进程。 命令启动的辅助进程、fork 出的子进程或转入后台的工作,都无法遗留下来继续运行。 由于被控端回收的是容器而非向进程发信号,忽略信号的命令同样会被停止。
每一次停止都会留痕,无论是否生效;留痕归属于经过认证的操作者, 绝不采用请求里自报的名字。
停止是一个请求,不是一个结果。在被控端报告命令自身的结局之前,命令都不被当作已结束, 因此一条已经产生改动的命令被停止后,不会被误报成从未运行过。
脱敏失败即中止
流水线按 采集 → 脱敏 → 模型 → 渲染 运行。采集与脱敏在被控端设备上进行;模型调用在中心进行。若脱敏失败,被控端返回错误,中心大脑在调用模型之前中止。证据(原始截图字节已剥离)在离开主机或到达模型前一定已脱敏。
API 密钥只保存在服务端
AI 模型 API 密钥存放在中心信令服务器,不会保存到被控端设备上,也不会回传浏览器、进入公开设置数据或写入日志。
审计只记元数据
审计只记录不含原文的摘要,例如计数、大小、模型 Token 用量、模型服务商和适配器。原始提示词、模型输出和截图不会进入审计记录。
MCP 只读
MCP 工具集是静态白名单,从构造上就没有执行 / 写入 / 控制类工具(“未定义即不可达”)。也没有诊断工具:MCP 只暴露只读上下文,从不进行模型推理或屏幕采集。见 MCP 服务页。
模型无关
不同模型服务的接口协议由中心服务的适配器统一处理,包括 OpenAI 兼容接口和 Anthropic Messages。接入新服务商时只需增加适配器,不必修改诊断编排器。
工具续调所需的服务商推理状态只以不透明、绑定来源的 replay envelope 保存,绝不进入 transcript DTO、审计正文、安全审核 prompt 或日志。若 replay 已不可用,或来源端点/协议/模型 revision 不一致,系统会从“发送给模型的上下文”中省略受影响的完整工具组,不重建也不只发送半组;用户可见对话保持不变。
AI 交互披露
AI 诊断面板与终端 Copilot 面板会在每个会话的首次交互起,明确告知你正在与 AI 助手交互。该提示是各面板顶部的常驻元素——绝非一次性、可关闭的横幅——并与另一条准确性提示(“AI 可能会出错”)清晰区分开。这让 AI 的身份被显式告知,而不只是靠命名暗示。
AI 生成内容标注
AI 输出会携带机器可读的来源信息,并在界面上显示「AI 生成」标记。是否显示标记取决于内容本身是否由 AI 生成,而不是来源信息是否完整;即使来源信息缺失,AI 内容也不会被误标为普通内容。来源信息可用时,会记录生成模型和生成时间。
这覆盖所有展示模型文本的界面:诊断结论、终端 copilot 回答、内联命令补全,以及供应商连通性测试的回复片段。模型生成的命令建议是新生成的输出、而非对你已输入内容的辅助编辑,因此会被标注;而补全那条来自你自己近期历史的零延迟本地猜测并非 AI 生成,不作标注。