gebruder/wirken
GitHub: gebruder/wirken
面向企业级安全部署的 AI 智能体多通道网关,通过进程隔离、加密凭据保险库和哈希链审计日志,在合规框架下安全地将消息平台接入多种 LLM 后端。
Stars: 106 | Forks: 2
# Wirken
[](LICENSE) [](https://github.com/gebruder/wirken/actions/workflows/ci.yml)  [](https://github.com/gebruder/wirken/releases)
` 类型,使跨通道句柄转换成为编译时错误。这种类型级别的 API 尚未贯穿到生产消息路径中,在该路径中,通道鉴别器是 Cap'n Proto 入站帧上的一个字符串字段。如果适配器进程受损,爆炸半径仅限于一个通道,因为网关的 IPC 边界(运行在独立的内存安全进程中)阻止了横向移动。
MCP 代理也通过 Unix 域套接字在进程外运行,且保险库句柄在代理中被隔离。MCP 服务器通过 stdio、HTTP 或 OAuth2 连接,并且智能体进程永远看不到 MCP 凭据。
智能体在轮次之间是无状态的。`AgentFactory` 通过重放其会话日志,为每个入站消息唤醒一个智能体。对话以类型化会话事件(用户消息、助手消息、工具调用、工具结果、LLM 请求/响应元数据)的形式,记录在按会话的只追加哈希链表中。如果智能体在轮次中途崩溃,线束会在唤醒时检测到不完整的工具轮次,并将它们作为失败浮出水面,而不是静默地重新执行副作用。上下文引擎在每次 LLM 调用之前,会根据每个模型的 token 预算修剪对话,优先丢弃旧的工具结果,然后再触及用户或助手文本。
智能体可以通过 `spawn_subagent` 将有界限的子任务委托给子智能体。操作员配置每个子项的能力上限(工具允许列表、最大权限层级、最大轮次、最大运行时)。子代以无头模式运行,没有交互式批准,隔离的会话日志,并且硬深度上限为 4。
## 安全属性
- **会话证明。** 按智能体的 Ed25519 身份在每一轮后对按会话的哈希链进行签名。`wirken session verify` 离线重放日志并重新检查消息哈希、确定性工具结果和链完整性。被篡改的会话会破坏链条。
- **可重现的重放。** 每次 LLM 调用都作为类型化会话事件记录,带有发送的准确消息和工具的 SHA-256 哈希。验证器从日志中重新计算这些哈希,并标记任何差异。
- **按通道的进程隔离。** 每个通道适配器在其自己的操作系统进程中运行,具有独特的 ed25519 身份。类型级别的通道分离(`SessionHandle` 与 `SessionHandle`)存在于 IPC crate 中并经过了回归测试,但尚未用于生产消息路径。
- **进程外凭据隔离。** MCP 凭据(bearer token、OAuth2 客户端密钥)存在于单独的代理进程中。智能体进程永远看不到它们。保险库为 XChaCha20-Poly1305,由操作系统密钥链提供密钥;`secrecy` + `zeroize` 使得记录秘密成为编译时错误。
- **能力衰减的多智能体。** LLM 无法扩大子智能体的权限。操作员设定上限;线束进行交集、钳制和执行。子代以无头模式运行,没有交互式批准。
完整的 OWASP 和 NIST AI RMF 映射:[docs/security-properties.md](docs/security-properties.md)
## 企业部署
Wirken 为组织提供了所需的控制能力,以部署 AI 智能体而无需绕过现有的安全性、合规性和审计要求。
- **完整归因。** 每个入站消息都会记录平台发送者 ID、通道、会话和智能体。权限决策按智能体划分范围,而不是按用户。类型化会话事件记录了运行了什么操作、何时运行以及在哪个目标上运行。
- **防篡改审计追踪。** 所有操作在执行前作为类型化会话事件记录。按会话的 SHA-256 哈希链可检测修改或删除。按智能体的 Ed25519 证明在每一轮之后对链头进行签名。`wirken session verify` 离线重放日志并重新检查哈希。SIEM 转发实时将事件发送到 Datadog、Splunk 或任何 Webhook。
- **崩溃恢复。** 智能体在轮次之间是无状态的。线束在唤醒时重放会话日志。不完整的工具轮次会被检测到并作为失败浮出水面,而不是被静默地重新执行。
- **分级权限。** 三层模型。工作区文件访问和 Web 搜索始终被允许。Shell 执行和外部文件访问需要首次使用批准。破坏性操作、凭据访问和技能安装始终需要明确批准。批准在 30 天后过期。
- **能力衰减的多智能体。** 父智能体通过 `spawn_subagent` 在操作员配置的上限(工具允许列表、最大权限层级、最大轮次、最大运行时)下委托给子代。子代以无头模式运行,带有隔离的会话日志。硬深度上限为 4。
- **沙盒执行。** Shell 执行默认在临时 Docker 容器中运行(自 0.7.5 起为仅执行模式)。容器删除所有 Linux 能力,设置 `no-new-privileges`,使用 Docker 的默认 seccomp 配置文件,使用具有 64 MB tmpfs 在 `/tmp` 的只读根文件系统,限制内存和 PID,并以无网络的非 root 用户身份运行。gVisor (runsc) 是可选的,用于减少内核攻击面。如果在网关启动时无法访问 Docker,ToolRegistry 会记录明显的警告,并在智能体的生命周期内回退到主机执行;如果请求了 runsc 但未注册,警告会具体指出该依赖。沙盒配置是惰性的,因此在未使用时没有启动成本。
- **上下文管理。** 按模型的上下文引擎在每次 LLM 调用之前,在 token 预算下修剪对话,优先丢弃旧的工具结果,然后再触及用户或助手文本。结构化压缩事件被写入会话日志并投影回提示中,以便模型知道修剪了什么。
- **提示注入检测。** 入站消息会被扫描以查找角色切换尝试、指令覆盖、base64 编码的命令、工具调用注入和系统提示提取。检测到的威胁会在会话日志中被标记并转发到 SIEM;消息不会被阻止。
- **机密推理。** Tinfoil 和 Privatemode 提供商在硬件飞地(AMD SEV-SNP,Intel TDX)内运行 LLM。提示是端到端加密的,可抵御基础设施上的软件攻击。有关端到端信任模型和部署方案,请参阅 [Privatemode 参考实例](docs/reference/privatemode.md)。
- **加密凭据。** 从操作系统密钥链获取密钥的 XChaCha20-Poly1305 保险库。按凭据的过期和轮换。无明文导出。MCP 凭据隔离在单独的代理进程中。
- **集中策略。** `wirken setup --org https://wirken.corp.example.com` 从公司端点拉取提供商、SIEM、MCP 和权限配置。开发者可以开箱即用。IT 管理一个配置。策略在每次 `wirken run` 时刷新。
## 文档
- [快速开始](docs/getting-started.md)
- [团队部署](docs/deploying-for-teams.md)(共享推理、按通道适配器、当前限制)
- [权限与身份](docs/permissions-and-identity.md)(当前已有的功能和计划中的功能)
- [CLI 参考](docs/cli.md)
- [配置参考](docs/configuration.md)
- [通道设置](docs/channels.md)(Telegram、Discord、Slack、Teams、Matrix、Signal、Google Chat、iMessage)
- [多智能体设置](docs/multi-agent.md)
- [技能指南](docs/skills.md)(Markdown 技能、Wasm 技能、注册表)
- [MCP 设置](docs/mcp.md)
- [安全属性](docs/security-properties.md)(OWASP 和 NIST AI RMF 映射)
- [企业部署](docs/enterprise.md)(组织配置、SIEM、沙盒)
- [从 OpenClaw 迁移](docs/migration.md)
- [故障排除](docs/troubleshooting.md)
- [架构](docs/architecture.md)
- [执行模型](docs/enforcement-model.md)(编译时与运行时保证)
- [发布流程](docs/release-process.md)(版本号更新、标签、签名、发布、冒烟测试)
- [发布签名](docs/release-signing.md)(Ed25519 密钥、轮换、验证)
## 状态
Wirken 0.7.x 是当前系列。0.7 获得修复和功能;0.6 仅获得安全修复。
- `crates/adapter-*` 下的 **9 个通道适配器**:Telegram、Discord、Slack、Microsoft Teams、Matrix、WhatsApp、Signal、Google Chat、iMessage。
- `crates/agent/srcllm.rs` 中的 **8 个 LLM 提供商**:Ollama、Anthropic、OpenAI、Google Gemini、AWS Bedrock、Tinfoil、Privatemode,以及用于任何兼容 OpenAI 的端点的 `custom` 提供商。
- `skills/` 下的 **15 个捆绑技能**。
- 工作区中的 **452 个测试**,在主分支上全部变绿(`cargo test --workspace`)。
- **签名发布。** `checksums.sha256` 使用 Ed25519 SSH 密钥离线签名。`install.sh` 内嵌公钥,从发布版本中获取 `checksums.sha256.sig`,并在任何验证失败时失败即关闭。请参阅 [docs/release-signing.md](docs/release-signing.md) 和 [KEYS](KEYS)。
## 名称
Wirken:德语,意为*工作*、*编织*、*生效*。以 [Gebruder Ottenheimer](https://gebruder.ottenheimer.app/briefs/wirken.html) 命名,这是 1862 年至 1937 年间位于符腾堡的一家织造厂。
## 许可证
MIT
标签:AI网关, Anthropic, CIS基准, Datadog, Discord, Ed25519, Gemini, JSONLines, LLM网关, LLM评估, Microsoft Teams, MIT协议, Ollama, OpenAI, Rust, SHA-256, Signal, Slack, Streamlit, StruQ, Telegram机器人, WhatsApp, XChaCha20-Poly1305, 人工智能, 代理调度, 保险库, 内存规避, 凭据管理, 加密, 单文件二进制, 即时通讯, 可视化界面, 哈希链, 多模态接入, 子域名变形, 安全, 审计日志, 开源, 权限管理, 构建工具, 模型越狱, 消息总线, 漏洞扫描器, 用户模式Hook绕过, 网络流量审计, 访问控制, 请求拦截, 超时处理, 进程隔离, 通知系统, 隐私计算, 零信任, 零日漏洞检测