lacs-project/sysknife
GitHub: lacs-project/sysknife
一个通过类型化操作、审批网关和签名审计链来安全执行 Linux 系统管理任务的 AI 副驾驶工具。
Stars: 4 | Forks: 0
SysKnife
你的系统管理副驾驶。规划。审批。审计。
Distros
安装 ·
工作原理 ·
为什么不用 X? ·
发行版矩阵 ·
路线图 ·
贡献 ·
讨论
对 Claude Code MCP 流程的演示性重现 —— 同样的流程也适用于 Cursor 和 Codex CLI。
寻找独立 CLI?请参阅 CLI 指南。
SysKnife 绝不直接运行 shell 命令。每一个操作都是具有正式风险等级的**类型化操作**。AI 无法直接触碰你的系统。一个特权 daemon 仅执行你批准的操作,写入防篡改的 Ed25519 签名审计链,并在失败时自动回滚 atomic-host (rpm-ostree) 的更改。
**为什么使用类型化操作而不是受监控的 shell?** 红队研究 发现 **11 个 AI 代理中有 10 个能绕过原始字符串 shell 防护** —— allowlist 或 regex 只是在过滤一种足以隐藏真实意图的丰富语言。SysKnife 彻底移除了 shell 字符串:模型发出[类型化操作](docs/typed-actions.md),而一条[公钥可验证的审计链](docs/the-audit-chain.md)会记录下每一个操作。
## 安装
最快的途径是使用设置向导。它会安装 daemon 并将 SysKnife 接入你的 AI IDE —— Claude Code、Cursor 或 Codex CLI —— 这样你就可以直接在聊天中进行规划和执行。
```
npx sysknife-setup
```
[](https://www.npmjs.com/package/sysknife-setup)
此操作会执行以下内容:
1. **为你的系统架构 (x86_64 / aarch64) 从 GitHub Releases 下载预构建的 `sysknife` 和 `sysknife-daemon` 二进制文件**,针对发布校验和文件对每一个进行 **SHA-256 校验** —— 如果不匹配则中止安装 —— 并将它们放置在 `~/.local/bin` 目录下(无需 sudo)。传入 `--no-binary` 可跳过下载并改为从源码构建。
2. 询问你的 **LLM 提供商、密钥和模型** —— OpenAI / Anthropic / Gemini / Ollama / Groq / DeepSeek / Mistral / xAI(Ollama 不需要密钥)。如果已设置匹配的环境变量,则会跳过密钥提示。
3. 询问**要接入哪个 AI 集成**(或选择 `--claude` / `--cursor` / `--codex` / `--all`)以及你的 **daemon 目标** —— socket,外加一个可选的用于远程 VM 的 vsock token。
4. **写入特定于集成的 MCP 配置**(合并到任何现有文件中,绝不覆盖),以便下一次聊天会话能将 `sysknife_*` 工具 —— `sysknife_plan`、`sysknife_execute`、`sysknife_history`、`sysknife_doctor`、`sysknife_audit_verify` —— 作为一等工具识别。
5. **作为服务安装并启动 daemon**(最后一步) —— 默认为 systemd *用户*服务(无需 sudo;通过 linger 在注销后保持活跃)。对于生产环境的多用户主机,请选择系统级服务。
| 客户端 | 写入的文件 |
|-----------------|------------------------------------------------------|
| **Claude Code** | `.mcp.json` + `.claude/hookify.*.local.md` |
| **Cursor** | `.cursor/mcp.json` + `.cursor/rules/sysknife.mdc` |
| **Codex CLI** | `~/.codex/config.toml` (追加) + `AGENTS.md` |
然后在你的聊天中:提出你的需求并查看带有风险标签的计划。在终端中通过 `sysknife approve
` 批准每个事务,返回一次性凭证,并观看其执行过程。强制执行凭证边界的是 daemon,而不是 prompt。
手动安装 — Ubuntu LTS · Fedora Atomic
```
git clone https://github.com/lacs-project/sysknife
cd sysknife
make build # builds sysknife (CLI) + sysknife-daemon
sudo make install # installs both; daemon runs as a system service
sudo systemctl enable --now sysknife-daemon
# 然后连接你的 IDE — --no-binary 会跳过下载,因为你刚刚已经构建了它们
# (在 daemon-service 提示时选择“skip”;make install 已经设置好了)
npx sysknife-setup --no-binary
```
Ubuntu 24.04 已在实时 VM 上通过 65/65 故事验证。Ubuntu 22.04 和 26.04 已通过 bootstrap 和冒烟测试,但尚未完成完整的故事套件。Fedora Atomic 是 rpm-ostree 的目标;在将某个版本视为当前已验证版本之前,请记录当前 Silverblue 44 VM 的运行情况。在 `dnf` 操作系列发布之前,普通的 Fedora Workstation 和 Server 仍处于实验阶段。有关证据和范围,请参阅[`发行版支持矩阵`](docs/distro-support.md)。
试运行 — 仅规划,不执行任何操作
```
# 需要 sysknife 二进制文件(参见上方的手动安装,或 `npx sysknife-setup`)。
# 仅限 plans:无 daemon、无审批、无执行。
export ANTHROPIC_API_KEY=sk-ant-...
sysknife --dry-run "show disk usage and list services that ate cpu in the last hour"
```
## 更喜欢终端?CLI 是一条核心路径
相同的引擎,无需 IDE 和 MCP 客户端 —— 从自然语言到类型化计划再到实时执行,直接在你的 shell 中完成,支持 `--dry-run`、`--json`、最高至风险上限的 `--yes`,以及 `sysknife audit verify`。这是运行 SysKnife 的完全受支持的方式,而不是事后补充。请参阅 [CLI 指南](docs/cli.md)。
## 工作原理
```
sysknife-brain → sysknife-shell → sysknife-daemon
(planner) (approval gate) (executor)
talks to LLM shows the plan, only privileged
never to OS takes y/n process; signs
every action
```
1. 你输入一个自然语言请求。
2. 大脑提出一个计划 —— 每一步都是带有风险等级(`Low` · `Medium` · `High`)的**类型化操作**。
3. shell 显示带有预览、副作用和回滚元数据的计划。
4. 你明确批准每一个步骤(或设置 `--yes` 直到达到某个风险上限)。
5. daemon 执行,流式传输实时输出,并在高风险失败时自动回滚。
6. 每次执行都会记录到一条 hash 链式的 SQLite 或 Postgres 审计轨迹中,你可以使用 `sysknife audit verify` 进行验证。
大脑负责*提议*;只有 daemon 拥有特权。daemon *强制执行*策略,执行类型化操作,写入已签名的链,并在失败时触发 atomic-host 回滚 (rpm-ostree)。信任边界是机械化的:没有 shell 字符串会通过网络传输。
## 为什么不用 X?
| 工具 | 差距 |
|---|---|
| **Open Interpreter** | 运行任意 Python/Shell。没有正式的风险模型。没有审计链。 |
| **Goose / Continue** | 通用型。临时确认,而非类型化的风险等级。 |
| **Claude Computer Use** | 不受控的桌面自动化,而非系统管理。 |
| **Ansible** | 提前编写 YAML。非对话式。没有风险分类。 |
| **shell-gpt / Copilot** | 建议原始 shell 命令。你仍在运行原始 shell。 |
| **AIShell-Gate** | 最接近的同类产品,但它是专有且封闭的;审计是对称 HMAC(验证者持有签名密钥,因此证明无法说服其他任何人)。没有回滚。 |
| **Manual** | 没有审计轨迹。没有回滚。一个输入错误 = 丢失工作。 |
SysKnife 在构建上就与众不同:类型化操作、Ed25519 签名审计链、明确的批准网关、针对 atomic-host (rpm-ostree) 更改的自动回滚、基于 polkit 的特权边界。AI 绝不持有 shell。请参阅完整的 [SysKnife 对比其他替代方案](docs/comparison.md)分析(AIShell-Gate、gate-oc-audit、MCP 网关、通用的 mcp-shell)。
## 状态
信任链已构建、测试并发布。多发行版支持是当前的活跃里程碑。
| 组件 | 状态 |
|---|---|
| `sysknife-brain` — LLM 规划器,工具循环,安全护栏 | ✅ |
| `sysknife-daemon` — 189 个类型化操作,认证,预览,事务 | ✅ |
| 实时 IPC + 流式传输 + atomic-host 回滚 (rpm-ostree) | ✅ |
| 终端批准网关 — 一次性,TTL 限制的凭证 | ✅ |
| MCP 服务器 (Claude Code / Cursor / 任何 MCP 客户端) | ✅ |
| 防篡改的 Ed25519 签名审计链 | ✅ |
| RFC 5424 syslog 转发 (Splunk / Sentinel / QRadar) | ✅ |
| Postgres 后端 (RDS / Cloud SQL / Neon / Supabase) | ✅ |
| **Ubuntu 24.04 支持** — 在使用 gpt-4.1 的实时 VM 上通过 65/65 故事 | ✅ |
| **Ubuntu 22.04 / 26.04 VM 工具** — 在所有三个 LTS 版本上通过冒烟测试 | ✅ |
| Telegram 批准界面 | 📋 路线图 |
**1,405 个 Rust 测试和 72 个前端测试**构成了当前的确定性发布基线。
## 配置你的 LLM
SysKnife 可与 **Ollama**(无需密钥,推荐用于隐私 / 离线 / 个人实验室)或 **OpenAI**、**Anthropic**、**Gemini**、**Groq**、**DeepSeek**、**Mistral**、**xAI** 配合使用。
```
# ~/.config/sysknife/config.toml
[llm]
provider = "ollama" # or anthropic / openai / gemini / groq / ...
model = "qwen3:8b" # provider-specific
ollama_url = "http://localhost:11434"
max_turns = 10
[daemon]
socket = "/run/sysknife/daemon.sock"
database = "/var/lib/sysknife/daemon.sqlite"
[storage] # production-recommended
backend = "postgres"
url = "postgres://sysknife:${PG_PASSWORD}@db.example.com/audit?sslmode=verify-full"
```
环境变量始终优先于配置文件。完整参考请参阅[`docs/configuration.md`](docs/configuration.md)。
## MCP 协议
SysKnife 实现了[Model Context Protocol](https://modelcontextprotocol.io/)并公开了受批准网关保护的规划和执行工具。`sysknife_plan` 为每个步骤返回一个由 daemon 签发的事务 ID。在审查计划后,用户在真实的终端中运行 `sysknife approve ` 并将一次性凭证交给代理。`sysknife_execute` 会拒绝缺失、过期、不匹配或重放的凭证。MCP 服务器本身无法凭空生成批准凭证。
使用设置向导(如上所述)将其接入 Claude Code、Cursor 或 Codex CLI。所有可能包含 API 密钥的配置文件在创建时均带有 `chmod 0600` 权限。
## 路线图
有关完整的里程碑细分,请参阅 [ROADMAP.md](ROADMAP.md)。
- ✅ **Ubuntu 24.04** — 在实时 VM 上验证了 65/65 个故事 (gpt-4.1)
- ✅ **Ubuntu 22.04 / 26.04** — VM 工具完成;在所有三个 LTS 版本上均通过了冒烟测试
- 📋 Telegram 内联按钮批准
- 📋 `sysknife audit export` (用于 SIEM 摄取的 CEF / NDJSON)
- 📋 集群计划/执行(一个计划,N 个目标,并行批准)
## 协议
SysKnife 是 **LACS (Linux Agent Control Standard)** 协议的参考实现 —— 类型化操作、风险分类、批准网关、审计要求。规范基于 CC0(公共领域):
→ **[lacs-project/specification](https://github.com/lacs-project/specification)**
我们明确鼓励为其他发行版和语言开发其他实现。
## 文档
- [类型化操作 — 为什么绝不使用 shell 字符串](docs/typed-actions.md)
- [操作参考 — 每一个操作,均从代码生成](docs/action-reference.md)
- [审计链 — Ed25519,公钥可验证](docs/the-audit-chain.md)
- [自动回滚](docs/automatic-rollback.md)
- [SysKnife 对比其他替代方案](docs/comparison.md)
- [架构概述](docs/architecture.md)
- [发行版支持矩阵](docs/distro-support.md)
- [配置](docs/configuration.md)
- [审计存储与恢复](docs/storage-cloud.md)
- [开发者指南](docs/developer-guide.md)
- [测试指南](docs/contributing/testing.md)
- [VM daemon 设置](docs/vm-daemon-setup.md)
- [安全策略](SECURITY.md)
- [发布准备清单](docs/release-readiness.md)
- [路线图](ROADMAP.md)
- [ADR 0001 — 系统边界](docs/adr/0001-system-boundaries.md)
- [ADR 0002 — Brain 提供商层](docs/adr/0002-brain-provider-layer.md)
- [ADR 0003 — IPC 网络协议](docs/adr/0003-ipc-wire-protocol.md)
## 哪里可以找到 SysKnife
| 渠道 | 安装 | 备注 |
|---------|---------|-------|
| **** | `npx sysknife-setup` | [npmjs.com/package/sysknife-setup](https://www.npmjs.com/package/sysknife-setup) — 零安装设置向导 |
| **crates.io** | `cargo install sysknife-cli` / `cargo install sysknife-daemon` | 通过审核的版本标签发布;请参阅 [docs/release.md](docs/release.md) |
| **GitHub Releases** | 从 [Releases](https://github.com/lacs-project/sysknife/releases) 下载 | 预构建的 x86_64 + aarch64 二进制文件,每个标签均附带 SHA-256 校验和 |
## 许可证
[MIT](LICENSE)。可免费使用、修改、分发,并无限制地嵌入到专有产品中。
[LACS 规范](https://github.com/lacs-project/specification)基于[CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/) — 公共领域。
由 Vladimir Rotariu 构建。
·
问题、想法、实战故事 — 来打个招呼。
标签:Awesome, 人工智能, 可视化界面, 操作审计, 暗色界面, 测试用例, 用户模式Hook绕过, 系统管理, 自动化运维, 运维工具, 通知系统