mcpField
S
SysKnife

SysKnife

本地服务
lacs-project.github.io云与基础设施851 天前更新

关于 SysKnife

SysKnife 是面向希望由 AI 辅助管理 Linux、同时保留人工审批的用户的 MCP 服务。它将请求转换为带类型和风险等级的操作,要求在终端单独批准后执行,并以 Ed25519 签名审计链记录操作。

主要功能

  1. 01带类型和风险等级的管理计划
  2. 02单独的终端审批凭证
  3. 03特权守护进程执行
  4. 04Ed25519 签名审计记录
  5. 05审计链完整性验证
  6. 06适配发行版的只读查询

适用场景

  1. 01规划软件包或服务变更以供审核
  2. 02在终端批准指定系统变更
  3. 03查看审计日志中的过往操作
  4. 04验证操作记录的完整性

MCP 相关

向 MCP 客户端提供计划、执行、历史记录、健康状态、审计验证和只读系统查询工具。执行需要在终端单独取得一次性凭证,客户端不能批准自己的计划。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
cargosysknife-cli0.27.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

SysKnife

SysKnife

Linux 系统管理员的 MCP 服务。规划。审批。审计。

持续集成 许可证 星标 问题 讨论 npm 版本 Glama MCP 服务质量评分 从记录的基线读取的 Rust 测试数量 从记录的基线读取的前端测试数量

发行版  支持 Ubuntu 20.04 及更高版本 已在 Ubuntu 22.04、24.04 和 26.04 虚拟机中验证 Fedora Atomic 41 及更高版本符合条件,但尚未在虚拟机中验证

MCP 服务 · 安装 · 工作原理 · 为什么不直接用 X? · 发行版对照表 · 路线图 · 参与贡献 · 参与讨论

在 Ubuntu 24.04 上通过 MCP 于 Claude Code 中使用 SysKnife:通过终端签发的凭证运行 UfwAllow、AptInstall 和 UfwStatus

在 Ubuntu 24.04 上确定性重现 Claude Code MCP 流程,由 ubuntu-flow-mock.sh离线呈现,因此在全新检出后每次回放的结果都相同。展示的每个操作名称、风险级别和命令均来自目录。相同的流程也适用于 Cursor 和 Codex CLI。
在原子化主机上,计划会改用 rpm-ostree: Fedora Atomic 录制。 想了解独立 CLI?请参阅CLI 指南。

用通俗语言描述你的需求。 查看包含风险级别的类型化计划。明确批准。观看带实时输出的执行过程。原子化主机上的更改(rpm-ostree)会在失败时自动回滚。每个操作都经过 Ed25519 签名并接受审计。

AI 绝不会提供命令。每个操作都是具有正式风险级别的类型化操作,守护进程会根据操作自身的定义构建命令行——部分操作确实会通过 sh -c 运行,但 Shell 片段由 SysKnife 构建,而非模型构建。AI 无法直接操作你的系统。特权守护进程只会执行你批准的内容,写入具备防篡改能力的 Ed25519 签名审计链,并在失败时自动回滚原子化主机(rpm-ostree)上的更改。

为什么使用类型化操作,而不是受保护的 Shell? 红队研究(GuardFall)发现,11 个 AI Agent 中有 10 个能绕过原始字符串 Shell 防护——白名单或正则表达式过滤的是一种足以隐藏意图的丰富语言。SysKnife 完全移除了 Shell 字符串:模型会生成类型化操作,而可通过公钥验证的审计链会记录每一个操作。


MCP 服务

SysKnife 首先是一个 MCP 服务。将 Claude Code、Cursor 或 Codex CLI 指向它,你的助手就能使用经过风险分类的类型化系统管理工具,而不是 Shell:

工具功能
sysknife_plan将通俗语言转换为类型化步骤,每个步骤都包含风险级别、解析后的命令和守护进程事务 ID
sysknife_execute仅运行带有一次性凭证的步骤,不执行其他操作
sysknife_history从签名审计日志中读取以往的运行记录
sysknife_doctor报告守护进程、提供方和审计链的运行状况
sysknife_audit_verify遍历 Ed25519 链并报告其是否完整
sysknife_get_disk_usage 及其余只读目录直接查询,并根据你使用的发行版选择
npx sysknife-setup

只需一条命令,即可将服务接入客户端并安装守护进程。 安装中有详细说明,MCP 协议介绍了线路行为。

你的助手无法批准自己的操作。 sysknife_plan 会返回事务 ID,然后停止。sysknife_execute 所需的凭证来自 sysknife approve <transaction-id>,由你在终端中输入;模型无法访问该通道。缺失、过期、不匹配和重放的凭证都会被拒绝。

更喜欢在 Shell 中操作?CLI使用的是同一个引擎,前面不需要客户端。


安装

最快捷的方式是使用设置向导。它会安装守护进程,并将 SysKnife 接入你的 AI IDE——Claude Code、Cursor 或 Codex CLI——让你能够通过聊天规划并执行操作。

npx sysknife-setup

需要 Node 22 或更高版本;旧版 Node 已不再获得安全修复。在 Ubuntu 22.04 上,apt install nodejs 会安装 Node 12,版本过旧;安装程序会说明这一点,并告知如何获取当前版本的 Node。无需 Rust 工具链,也无需编译:安装程序会下载经过验证的预编译二进制文件。

npm 版本

此操作会执行以下内容:

  1. 从 GitHub Releases 下载适用于你架构(x86_64 / aarch64)的预编译 sysknife + sysknife-daemon 二进制文件,并根据发布校验和文件对每个文件进行 SHA-256 校验——校验不匹配会中止安装——然后将它们放入 ~/.local/bin(无需 sudo)。传入 --no-binary 可跳过下载,改为从源代码构建。

  2. 询问你的 大模型提供商、密钥和模型——OpenAI / Anthropic / Gemini / Ollama / Groq / DeepSeek / Mistral / xAI(Ollama 无需密钥)。如果已设置对应的环境变量,则会跳过密钥提示。

  3. 询问要接入 哪种 AI 集成(或选择 --claude / --cursor / --codex / --all),以及你的 守护进程目标——套接字,以及可选的远程 VM vsock 令牌。

  4. 写入特定集成的 MCP 配置(与任何现有文件合并,绝不覆盖),让下一个聊天会话能够将 sysknife_* 工具——sysknife_plan、sysknife_execute、sysknife_history、sysknife_doctor、sysknife_audit_verify,以及与发行版兼容的直接只读查询工具,例如 sysknife_get_disk_usage——作为一等工具使用。

  5. 最后一步:将守护进程安装并启动为服务——默认使用 systemd 用户 服务(无需 sudo;通过 linger 在注销后继续运行)。 该服务以你的身份运行,因此只读操作可用,但 不能执行变更操作:安装软件包或重启服务需要系统级服务,其 sudoers 授权应属于 sysknife 系统用户。对于任何你打算进行变更的主机,请选择系统服务,并传入 --daemon-mode=system|user|skip,即可无需提示地选择模式。--daemon-mode=system 不会通过向导安装系统服务——它需要 root 所有的 sudoers、polkit 和辅助程序策略,而这些由 sudo make install 管理——因此向导会打印确切的操作步骤,并报告守护进程尚未安装。

    若要使用独立于发布内容、由你信任的校验和列表验证下载,请设置 SYSKNIFE_PINNED_SHA256SUMS=/path/to/sums;参见 SECURITY.md。

要检查某个发布版二进制文件的构建位置,请从发布页面下载它,然后运行 gh attestation verify sysknife-vX.Y.Z-linux-x86_64 --repo lacs-project/sysknife。 只有当文件与 GitHub 为本仓库由 release.yml 构建而签名的来源声明相匹配时,此命令才会成功。每个发布版也会附带该来源声明,文件名为 sysknife-vX.Y.Z-linux-<arch>.intoto.jsonl,因此也可以使用 --bundle 执行相同的验证;参见验证已发布版本。

客户端写入的文件
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 <transaction-id> 批准每笔事务,返回一次性收据,然后观察执行过程。强制执行收据边界的是守护进程,而不是提示词。

更喜欢独立 CLI? 使用相同引擎,无需 IDE——请参阅 CLI 指南,了解 sysknife "..."、--dry-run、--json、 审批提示和审计日志检查。

手动安装——Ubuntu 20.04+

需要 Rust stable 和 C 编译器(build-essential):TLS 和 SQLite 依赖项需要构建原生代码,因此仅安装 rustup 的机器会卡在 error: linker cc not found。无需安装 cmake。这次约 400 个 crate 的构建预计需要 7 到 12 分钟(Ubuntu 24.04 上为 6m56s,22.04 上为 11m43s)。

sudo apt-get install -y build-essential
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

# Join the socket group and one role group, or every request is refused with
# "Permission denied" before any role check runs: /run/sysknife is 0750
# sysknife:sysknife, and a sudo admin is not in that group automatically.
# Role groups: sysknife-observer (read-only), sysknife-dev (medium risk),
# sysknife-admin (high risk). Members of wheel are treated as admin.
sudo usermod -aG sysknife,sysknife-admin "$USER"
newgrp sysknife                       # or log out and back in

# Then wire your IDE — --no-binary skips the download since you just built them
# (--daemon-mode=skip: make install already set the service up)
npx sysknife-setup --no-binary --daemon-mode=skip
卸载

无论你通过哪种方式安装,都只需运行一条命令。

# Removes the user service, the binaries in ~/.local/bin, and the SysKnife
# entries in the MCP and agent config it wrote: Claude Code's in the current
# directory, .cursor/mcp.json and .cursor/rules/sysknife.mdc, the sysknife block
# in ~/.codex/config.toml, and the SysKnife block in AGENTS.md.
npx sysknife-setup --uninstall

# See exactly what that would touch, without touching it.
npx sysknife-setup --uninstall --dry-run

默认会保留审计历史。 移除软件不应破坏其操作记录,因此审计数据库、安全审计日志和 ~/.config/sysknife 都会保留,并打印出它们的路径。只有在确实需要时,才用以下命令将它们一并删除:

npx sysknife-setup --uninstall --purge   # names each file before deleting it

如果你通过 sudo make install 安装了系统级服务,请使用管理其 sudoers 授权、polkit 规则和特权辅助程序的 Makefile 将其移除。--uninstall 会有意避开这些内容,因为只移除部分特权边界比完全不移除更糟:

sudo make uninstall

所有三个 Ubuntu LTS 版本都记录了 Ubuntu 套件中 79 个场景的实时虚拟机运行(该套件此后已扩展到 90 多个场景),并且每次运行都有一个可复现它的回放副本:22.04、24.04 和 26.04 均达到 79/79,每个副本都能处理所有调用,没有遗漏。这些运行记录位于 tests/evidence/story-runs/。当每个仅支持 Debian 的操作都配有一个场景时,套件从 50 个场景扩展而来,首先是 GetHostState。 Fedora Atomic 是 rpm-ostree 目标;make install 目前尚不能在 rpm-ostree 上完成(#301),而要将某个版本视为已验证发布版本,就需要在当前的 Silverblue 44 虚拟机上运行。普通的 Fedora Workstation 和 Server 仍处于实验阶段,直到 dnf 操作系列发布。有关证据和适用范围,请参阅 发行版支持矩阵。

试运行 — 仅规划,不执行任何操作
# Requires the sysknife binary (see manual install above, or `npx sysknife-setup`).
# Plans only: no daemon, no approval, no execution.
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 指南。

sysknife CLI——在终端中规划、审批和执行

这是一次真实规划与执行会话的确定性复现,由 demo-mock.sh 离线生成。实时 LLM 调用具有非确定性,而且录制内容必须能够在未配置守护进程或提供方的情况下生成,因此录制采用脚本制作,而非直接录制;输出样式则由与真实 CLI 相同的代码路径生成。

另有桌面 GUI——开发已暂停。 实验性的 Tauri 桌面应用 (sysknife-shell)在窗口中封装了相同的规划 → 审批 → 执行流程。目前其开发已暂停,开发精力转而投入 Ubuntu 及其支持的版本。代码仍保留在代码库中,也仍可构建,但目前不会接受审查、测试或扩展,因此只有在你特别需要图形化审批流程且能接受这些限制时,才考虑使用它。MCP 集成和 CLI 是目前持续维护的接口。

工作原理

sysknife-brain   →   approval gate    →   sysknife-daemon
  (planner)         (you, in a         (executor)
   talks to LLM      terminal)          only privileged
   never to OS       shows the plan,    process; signs
                     takes y/n          every action

审批关卡是一种机制,而非组件;具体如何运作取决于你如何使用 SysKnife:

  • MCP: AI 客户端提交的计划需要通过在终端中输入 sysknife approve <transaction-id> 来获取回执,因此客户端无法批准自己的计划。
  • 独立 CLI: sysknife "<intent>" 会在自己的提示中逐步询问,或者在 --yes 下批准风险不超过 --max-risk 的操作。它不会调用 sysknife approve。
  • 拥有你账户 shell 权限的 Agent 可以独自驱动 CLI。在这种情况下,守护进程的角色限制 (SECURITY.md,第 3 层) 就是保障边界。

已暂停的 Tauri GUI(sysknife-shell)是审批关卡的第三种实现,并非前两种实现会经过的步骤。

  1. 输入自然语言请求。
  2. 大脑提出计划——每一步都是带有风险级别(Low · Medium · High)的类型化操作。
  3. Shell 展示计划及其预览、副作用和回滚元数据。
  4. 明确批准每一步(或使用 --yes,将批准范围设为不超过指定风险上限)。
  5. 守护进程执行操作、实时传输输出,并在失败时自动回滚 atomic-host(rpm-ostree)变更。
  6. 每次执行都会记录到哈希链式 SQLite 或 Postgres 审计跟踪中,你可以使用 sysknife audit verify 验证该跟踪。

大脑只负责提出方案;只有守护进程拥有特权。守护进程负责强制执行策略、执行类型化操作、写入签名链,并在失败时触发 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(验证方持有签名密钥,因此这份证明无法说服其他人)。没有回滚功能。
手动操作没有审计跟踪,也没有回滚功能。一个拼写错误就可能造成工作损失。

SysKnife 从设计上就与众不同:采用类型化操作、Ed25519 签名审计链、明确的审批关卡、针对 atomic-host(rpm-ostree)变更的自动回滚,以及跨 sudo 和 polkit、按操作划定的特权边界。AI 始终无法访问 Shell。请参阅完整的 SysKnife 与替代方案对比(AIShell-Gate、gate-oc-audit、MCP 网关、通用 mcp-shell)。

状态

信任链已经构建完成、通过测试并投入使用。多发行版支持是当前的里程碑。

组件状态
sysknife-brain — 大模型规划器、工具循环、安全防护栏✅
sysknife-daemon — 190 多种类型化操作、身份验证、预览、事务✅
实时 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 — 在运行中的 22.04 VM 上完成 79/79 个故事,记录在 tests/evidence/story-runs/ 中✅
已验证所有 Ubuntu LTS 版本 — 22.04、24.04 和 26.04 均达到 79/79,每个版本都有可重放的副本,能够复现测试结果✅
Telegram 审批界面📋 规划中

2,000 多项 Rust 测试和 70 多项前端测试构成当前确定性发布基线。

配置你的 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。

MCP 协议

SysKnife 实现了 Model Context Protocol ,并提供需要审批的规划与执行工具。sysknife_plan 会为每个步骤返回由守护进程签发的事务 ID。检查计划后,用户在真实终端中运行 sysknife approve <transaction-id>,并将一次性回执交给 Agent。sysknife_execute 会拒绝缺失、过期、不匹配或重放的回执。MCP 服务自身无法签发审批回执。

使用设置向导(上文)将其接入 Claude Code、Cursor 或 Codex CLI。 所有可能包含 API 密钥的配置文件都会以 chmod 0600 创建。

路线图

完整的里程碑细分请见 ROADMAP.md。

  • ✅ Ubuntu 22.04 — 在运行中的 VM 上完成 79/79 个故事(记录于 tests/evidence/story-runs/)
  • ✅ Ubuntu 24.04 和 26.04 — 在运行中的 VM 上分别完成 79/79 和 79/79;每次 LTS 运行都有一个可重放的副本,可复现运行结果
  • ✅ sysknife audit export — 将存储的签名链记录导出为 JSON,支持 --since / --limit
  • 📋 Telegram 内联按钮审批
  • 📋 用于 SIEM 数据接入的 CEF / NDJSON 输出模式
  • 📋 机群规划/执行(一个计划,N 个目标,并行审批)

协议

SysKnife 是 LACS(Linux Agent Control Standard) 协议的参考实现,涵盖类型化操作、风险分类、审批关卡和审计要求。规范采用 CC0 许可(公有领域):

→ lacs-project/specification

我们明确鼓励为其他发行版和语言开发其他实现。

贡献

我们欢迎帮助。多发行版支持是目前最有影响力的参与方向——路线图矩阵请见 docs/distro-support.md,工作流程请见 CONTRIBUTING.md。

标记为 good first issue 的问题都有明确的验收标准和限定范围。

致谢

目前收到的补丁来自 @ITSMERNB、 @QinXi-ai、@Osheun、 @danial-razi、 @vsolano9 和 @Georgefifth。每次发布都会在 CHANGELOG.md 中注明每项修复的贡献者。

如果你提交了补丁,关注 Releases 是了解补丁发布情况最快的方式,也能及时发现新添加的 good first issue。点个星有助于其他人发现这个项目。

文档

在哪里获取 SysKnife

渠道安装方式备注
npmnpx sysknife-setupnpmjs.com/package/sysknife-setup — 设置向导;需要 Node 22+,无需编译
crates.iocargo install sysknife-cli / cargo install sysknife-daemon需要 build-essential;编译约需 7-12 分钟。通过审核的版本标签发布;参见 docs/release.md
MCP Registryio.github.lacs-project/syskniferegistry.modelcontextprotocol.io — 对应上方 crates.io 安装方式。会沙盒运行服务的目录页面会列出所有工具,但无法调用需要守护进程的工具;docs/mcp-registry.md 说明了其中的区别
GitHub Releases从 Releases 下载每个标签都提供预编译的 x86_64 + aarch64 二进制文件及 SHA-256 校验和

许可证

MIT。可自由使用、修改、分发,并嵌入专有产品,不受限制。

LACS specification 采用 CC0 1.0 许可,属于公有领域。


由 Vladimir Rotariu 构建。 · 有问题、想法或实战经验?——欢迎来聊。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。