Orkas本地优先安全架构详解:密钥脱敏、命令沙箱与CLI权限审批的三层防护全流程
【免费下载链接】OrkasOrkas is an open-source, local-first AI desktop app: a commander LLM directs specialist sub-agents, and runs your installed coding CLIs — Claude Code, Codex, OpenCode, OpenClaw, Hermes — as local sessions. Agents self-evolve via reflection and skill crystallization. BYO keys. macOS / Windows / Linux.项目地址: https://gitcode.com/gh_mirrors/or/Orkas
Orkas 是一款开源的本地优先(local-first)AI 桌面应用:由指挥官 LLM 调度专家子代理,并把你本机安装的编程 CLI(Claude Code、Codex、OpenCode、OpenClaw、Hermes)作为本地会话运行。密钥只留本地(BYO keys)、命令默认拒绝、危险操作人工审批,三大机制构成它的完整安全架构。
为什么本地优先 = 安全前提
传统 AI 应用把密钥、对话、文件统统送上云端;Orkas 反其道而行:
- 密钥不出设备:API Key 由你自己提供(BYO keys),加密后只存在本地数据目录;
- 命令先过关卡再执行:任何 shell 命令都会经过沙箱策略检查;
- 人在回路(Human-in-the-loop):CLI 代理的敏感操作必须等你在界面上点"批准"。
这套设计覆盖 macOS / Windows / Linux 三大平台,源码全开源可审计。
密钥脱敏:你的 API Key 是怎么被保护的
Orkas 的密钥存储是一个两层门面,核心在 src/main/util/local-secret-store.ts:
- 第一层:主机加密后端(托管版使用
ORKLSEC1:前缀的私有后端); - 第二层:开源兜底方案src/main/util/crypto-vault.ts,采用 AES-256-GCM 加密 + PBKDF2(20 万次迭代)派生密钥,文件带
ORKVAULT1魔数头,防止明文被云备份 OCR、崩溃转储或文本编辑器误读。
此外还有两个配套机制:
- 密钥轮换:
rekey-user-local-secrets工具可在更换设备密钥后批量重加密旧文件; - 日志脱敏:src/main/util/log-redact.ts 会在日志中把密钥(
sk-、ghp_、github_pat等模式)替换为***REDACTED***,路径哈希化、ID 打码,确保敏感信息从不落盘。
命令沙箱:默认拒绝 + 隔离执行
Orkas 的命令沙箱位于 src/core-agent/src/sandbox/,设计原则写在 command-policy.ts 开头:"有界的准入检查,不是 shell 解释器,更不是操作系统沙箱"——它只做保守的拒绝匹配:
| 防护层级 | 机制 | 示例 |
|---|---|---|
| 内置黑名单 | 危险命令形状匹配 | rm -rf /、mkfs、dd if=、shutdown、fork 炸弹 |
| 保守规则 | 含$、反引号等"不透明"命令一律从严 | 变量展开、管道嵌套 |
| 自定义规则 | 用户可追加blockedCommands | 在 executor.ts 中按会话注入 |
针对 AI 代理执行脚本的场景,Orkas 还内置了 QuickJS 隔离运行时 run-program.ts,用硬性配额防失控:
- 墙钟超时 10 分钟、内存 64MB、栈 1MB;
- 工具调用上限 100 次、并发 8 次;
- 单次工具结果 8MB、总输出 8MB。
每次执行都会产出"执行回执"(源文件 SHA-256、改动文件清单与哈希),让每一次变更可追溯、可审计。相关行为由 sandbox.test.ts 回归覆盖。
CLI 权限审批:人在回路的完整流程
这是 Orkas 最有特色的环节。当你让 Claude Code 等本地 CLI 代理干活时:
- Orkas 通过 backends/claude.ts 以
--permission-prompt-tool模式启动 CLI,把权限请求转发给自己; - CLI 触发敏感操作时暂停,runner.ts 在界面上弹出审批提示(多语言内置,如"请求执行许可");
- 你逐条查看命令详情,点批准或拒绝;
- 未审批的操作保持等待状态,且按会话粒度隔离,互不干扰。
接口安全边界:最后一道门
除了上述三层,Orkas 还堵住了应用内部通道:src/main/ipc/security.ts 只允许来自内置渲染进程(index.html/preview.html)的受信请求进入特权 IPC,通道名严格白名单校验,防止任意网页或注入代码调用敏感接口。技能市场侧则由 src/main/quality/ 的静态质量门在技能落盘前拦截明显恶意内容(详见 README)。
核心安全模块速查
| 能力 | 文件 |
|---|---|
| 密钥加密存储 | src/main/util/crypto-vault.ts |
| 密钥门面与轮换 | src/main/util/local-secret-store.ts、src/main/util/rekey-user-local-secrets.ts |
| 命令黑名单策略 | src/core-agent/src/sandbox/command-policy.ts |
| 沙箱执行器 | src/core-agent/src/sandbox/executor.ts |
| 隔离运行时 | src/core-agent/src/tools/run-program.ts |
| 日志脱敏 | src/main/util/log-redact.ts |
| IPC 安全边界 | src/main/ipc/security.ts |
| CLI 审批后端 | src/main/features/local_agents/backends/claude.ts |
一句话总结:密钥加密不出本地、命令默认拒绝再加资源配额、CLI 敏感操作必须人工点头——Orkas 用"本地优先"把 AI 代理的每一步都放回你的掌控之中。想深入验证?docs/test/ 下的回归文档(如 connectors-regression.md)展示了各安全场景的测试基线。
【免费下载链接】OrkasOrkas is an open-source, local-first AI desktop app: a commander LLM directs specialist sub-agents, and runs your installed coding CLIs — Claude Code, Codex, OpenCode, OpenClaw, Hermes — as local sessions. Agents self-evolve via reflection and skill crystallization. BYO keys. macOS / Windows / Linux.项目地址: https://gitcode.com/gh_mirrors/or/Orkas
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考