Aliipou/AgenticAIPoweredLinuxSystemManagement
GitHub: Aliipou/AgenticAIPoweredLinuxSystemManagement
一个带有六层策略安全门控的自治AI代理运行时,用于安全的Linux系统自主管理,强调最小权限和全链路审计。
Stars: 3 | Forks: 0
[](https://python.org)
[](tests/)
[](tests/)
[](LICENSE)
# Policy-Constrained Autonomous Operations Runtime
**一个用于 Linux 系统管理的、带有策略门控的自治代理。**
不是 AI 助手。不是聊天机器人。是一个具有正式权限边界的运行时。
## 有何不同
大多数“代理式”系统只是套着 Shell 外壳的 LLM——它们解析请求并运行命令。而在本系统中,任何命令到达操作系统之前都会强制执行六个独立的安全门控:
1. **置信度门控** — 如果 LLM 的确定性不足,该操作将被拒绝或降级为空运行。置信度 ≠ 正确性,因此两者都会被追踪。
2. **环境门控** — 部署上下文强制执行硬性风险上限。`PRODUCTION` 上限为 MEDIUM;`STAGING` 为 HIGH;`DEVELOPMENT` 不受限制。通过 `AGENTIC_ENVIRONMENT` 设置。
3. **能力门控** — 最小权限原则。每种操作类型精确映射到一个必需的 `Capability`。运行时在构建时会获得一个包含已授权能力的 `frozenset`;对于需要缺失能力的操作,将在策略评估之前被拒绝。
4. **策略门控** — 每种操作类型都带有一个静态风险等级和 sudo 需求。高于配置阈值的操作将被阻止。停止或重启关键服务会自动升级为 CRITICAL,在没有 `--force` 的情况下将被阻止。
5. **命令验证器** — 对生成的命令和目标字符串进行两层确定性扫描。语法层:`rm -rf /`、fork 炸弹、原始磁盘写入。语义层:`find / -delete`、`chmod -R 777 /`、在 `/etc` 上的 `chown -R`、删除 `/etc/passwd` 或 `/boot/*`。均被无条件阻止。
6. **模拟引擎** — 在执行之前,每个获批的操作都会经过一个预测模型,计算其范围、可逆性、数据丢失风险和可用性影响。结果会附加到 `ActionPlan` 以供检查。
如果所有门控都通过,操作将通过**事务管理器**执行,如果任何步骤失败,该管理器将按相反顺序回滚之前的操作。
每一个决定——无论获批还是被拒——都会被记录在审计日志中。
## 管道
```
User query
│
▼
[ContextRetriever] Retrieves recent history for grounding
│
▼
[IntentParser] LLM classification → IntentType + confidence + entities
│
▼
[ConfidenceGate] confidence < 0.70 → reject (LowConfidenceError)
confidence < 0.85 → approve, force dry-run
confidence ≥ 0.85 → full approval
│
▼
[DecisionEngine] Maps intent → ActionPlan via registered strategies
│
▼
[EnvironmentGate] PRODUCTION → max MEDIUM cap
STAGING → max HIGH cap
DEVELOPMENT → unrestricted
│
▼
[CapabilityGate] frozenset[Capability] — deny if required cap not granted
│
▼
[SafetyGate] Per-action risk scoring against PERMISSION_MATRIX
Critical service targets escalate to CRITICAL
│
▼
[CommandValidator] Syntactic + semantic pattern scan
Rejects regardless of upstream approval
│
▼
[SimulationEngine] Predicts effect of each approved action (non-blocking)
Attaches ActionSimulation list to ActionPlan
│
▼
[TransactionManager] Executes actions sequentially
On failure: rolls back succeeded actions in reverse order
│
▼
[MemoryStore] Full audit trail: request → decisions → simulations → results
```
## 意图类型
| 意图 | 描述 | 只读 |
|--------|-------------|-----------|
| `FOCUS` | 终止/挂起干扰进程 | 否 |
| `UPDATE` | 安装或升级软件包 | 否 |
| `CLEAN_MEMORY` | 释放缓存,杀死内存占用大户 | 否 |
| `OBSERVE` | 检查系统状态 —— 进程、CPU、内存、磁盘 | 是 |
| `NETWORK` | 管理接口、防火墙、连接性 | 否 |
| `STORAGE` | 磁盘使用情况、清理、挂载管理 | 否 |
| `UNKNOWN` | 无法识别 —— 不执行任何操作 | — |
## 能力系统
每种操作类型只需一种能力。运行时在构建时会被授予一个 `frozenset[Capability]` —— 需要该集合之外能力的操作将被拒绝。
| 能力 | 操作类型 |
|-----------|-------------|
| `KILL_PROCESS` | `KILL_PROCESS`, `KILL_BY_MEMORY` |
| `SUSPEND_PROCESS` | `SUSPEND_PROCESS` |
| `RENICE_PROCESS` | `RENICE_PROCESS` |
| `PACKAGE_MANAGEMENT` | `APT_INSTALL`, `APT_UPGRADE` |
| `MEMORY_MANAGEMENT` | `DROP_CACHES` |
| `SERVICE_MANAGEMENT` | `SYSTEMCTL_START`, `SYSTEMCTL_STOP`, `SYSTEMCTL_RESTART` |
## 风险矩阵
| 操作 | 风险 | 需要 sudo |
|--------|------|---------------|
| `SUSPEND_PROCESS` | LOW | 否 |
| `RENICE_PROCESS` | LOW | 否 |
| `KILL_PROCESS` | MEDIUM | 否 |
| `APT_INSTALL` | MEDIUM | 是 |
| `DROP_CACHES` | MEDIUM | 是 |
| `SYSTEMCTL_START` | MEDIUM | 是 |
| `APT_UPGRADE` | HIGH | 是 |
| `KILL_BY_MEMORY` | HIGH | 否 |
| `SYSTEMCTL_STOP` | HIGH → **CRITICAL**¹ | 是 |
| `SYSTEMCTL_RESTART` | HIGH → **CRITICAL**¹ | 是 |
¹ 当目标是 `CRITICAL_SERVICES` 的成员时,升级为 CRITICAL。在没有 `--force` 的情况下将被阻止。
### 环境风险上限
| 环境 | 允许的最大风险 | 设置方式 |
|------------|-----------------|---------|
| `PRODUCTION` | MEDIUM | `AGENTIC_ENVIRONMENT=PRODUCTION` |
| `STAGING` | HIGH | `AGENTIC_ENVIRONMENT=STAGING` |
| `DEVELOPMENT` | CRITICAL (不受限制) | 默认 |
### 关键服务
针对以下任何一项的 `SYSTEMCTL_STOP` 或 `SYSTEMCTL_RESTART` 将升级为 CRITICAL:
`postgresql` · `mysql` · `mariadb` · `mongodb` · `nginx` · `apache2` · `haproxy` · `docker` · `containerd` · `kubelet` · `elasticsearch` · `redis` · `rabbitmq` · `kafka` · `sshd` · `ufw` · `iptables`
## 回滚可靠性
每个操作都带有明确的 `RollbackSupport` 声明。当回滚无法实现时,系统不会假装可以进行回滚。
| 值 | 含义 |
|-------|---------|
| `FULL` | 之前的状态完全可恢复 |
| `PARTIAL` | 尝试回滚,但可能残留部分影响 |
| `NONE` | 不存在回滚路径 —— 执行是永久性的 |
| `UNKNOWN` | 未声明 —— 引擎回退到静态高影响表 |
### 标准回滚真值表 (`ROLLBACK_CAPABILITIES`)
| 操作 | 回滚支持 | 原因 |
|--------|-----------------|--------|
| `SUSPEND_PROCESS` | FULL | `kill -CONT` 完全逆转 `kill -STOP` |
| `RENICE_PROCESS` | FULL | renice 回原始值 |
| `DROP_CACHES` | FULL | 缓存会在内存压力下自然重新填充 |
| `SYSTEMCTL_START` | FULL | 可以停止已启动的服务 |
| `SYSTEMCTL_STOP` | FULL | 可以启动已停止的服务 |
| `SYSTEMCTL_RESTART` | PARTIAL | 服务重启;进行中的请求将丢失 |
| `APT_INSTALL` | PARTIAL | apt-remove 有效,但配置文件会保留 |
| `KILL_PROCESS` | NONE | 进程已终止 —— 无法撤销 |
| `KILL_BY_MEMORY` | NONE | 进程已终止 —— 无法撤销 |
| `APT_UPGRADE` | NONE | 无安全的通用降级路径 |
`TransactionManager._rollback()` 会跳过任何标记为 `RollbackSupport.NONE` 的操作 —— 即使设置了 `rollback_command` —— 因为对实际可恢复的内容尝试回滚将会是不诚实的。
## 语义安全模式
命令验证器拒绝那些**基于效果判定为危险**的命令,而不仅仅是基于语法:
| 模式 | 示例 | 原因 |
|---------|---------|--------|
| `find / -delete` | `find / -type f -mtime +30 -delete` | 递归文件系统擦除 |
| `find / -exec rm` | `find / -name '*.bak' -exec rm {} \;` | 通过 exec 进行的递归删除 |
| `chmod -R [0-7]*77 /` | `chmod -R 0777 /` | 根文件系统全局可写 |
| `chown -R` 在关键路径上 | `chown -R nobody /etc` | 系统目录所有权被接管 |
| `rm /etc/passwd` 等 | `rm /etc/shadow` | 删除认证/启动关键文件 |
## Action IR
每个 `ActionCandidate` 都携带着其意图的正式规范:
```
ActionCandidate(
action_type=ActionType.SUSPEND_PROCESS,
description="Suspend chrome to reduce CPU",
command="kill -STOP $(pgrep chrome)",
target="chrome",
rollback_command="kill -CONT $(pgrep chrome)",
preconditions=["process exists", "not in ESSENTIAL_PROCESSES"],
postconditions=["process suspended", "CPU load reduced"],
required_capabilities=["SUSPEND_PROCESS"],
effect=ActionEffect(
scope=ActionScope.PROCESS,
reversible=True,
availability_impact=False,
),
)
```
`SimulationEngine` 在声明了 `effect` 时会使用它,或者在未声明时从 `action_type` 推导预测。
## 受保护进程
执行器维护着一个永远不能被作为目标的进程黑名单,无论是否通过了策略审批:
- PID 1 必备项:`init`, `systemd`, `kthreadd`
- systemd 管理器:`systemd-journald`, `systemd-logind`, `systemd-udevd`, `systemd-resolved`, `systemd-networkd`, `systemd-timesyncd`
- 认证与会话:`sshd`, `login`, `sudo`, `polkit`, `auditd`
- IPC:`dbus`, `dbus-daemon`
- 显示管理器:`Xorg`, `gdm3`, `lightdm`, `sddm`
- 网络:`NetworkManager`, `wpa_supplicant`, `dhclient`
## 设置
```
git clone https://github.com/Aliipou/AgenticAIPoweredLinuxSystemManagement.git
cd AgenticAIPoweredLinuxSystemManagement
cp .env.example .env # fill in AGENTIC_OPENAI_API_KEY
pip install -e .
agentic --help
```
或使用 Docker:
```
docker compose up
```
## 测试
```
# 运行所有测试并启用 coverage
pytest
# Coverage 强制要求达到 100% — 如果下降 CI 将会失败
```
471 个测试。所有生产代码实现了 100% 的行和分支覆盖率。
## 项目结构
```
src/agentic/
cli/ Typer CLI application
config/
settings.py Pydantic settings + AGENTIC_ENVIRONMENT
engine/ Decision engine and intent strategies
executor/
action_executor.py Dispatches to runners
command_validator.py Syntactic + semantic safety patterns
simulation_engine.py Pre-execution effect prediction
transaction.py Sequential execution with rollback
runners/ process, package, memory, systemctl
memory/ SQLite audit store
models/
action.py ActionType, ActionScope, ActionEffect,
ActionSimulation, ActionCandidate, ActionPlan
capability.py Capability enum (6 values)
environment.py Environment enum (PRODUCTION/STAGING/DEVELOPMENT)
parser/ OpenAI intent classifier
policy/
capability_gate.py Least-privilege enforcement
confidence_gate.py LLM confidence gating
environment_gate.py Deployment-context risk ceiling
permissions.py PERMISSION_MATRIX + CRITICAL_SERVICES + ENVIRONMENT_RISK_CAPS
safety_gate.py Risk-level enforcement + critical service escalation
pipeline.py End-to-end orchestrator
```
## 许可证
MIT标签:AIOps, DLL 劫持, DNS解析, IT运维, Linux系统管理, LLM封装, MIT许可, NLP意图解析, Petitpotam, Python, shell操作, Socks5代理, SQLite, 人工智能代理, 危险命令拦截, 命令验证, 大语言模型, 子域名枚举, 安全合规, 安全执行, 安全网关, 审计日志, 开源项目, 形式化边界, 无后门, 智能运维, 最小权限原则, 权限控制, 灰度发布, 环境隔离, 策略引擎, 系统安全, 系统稳定性, 网络代理, 网络安全挑战, 能力管控, 自主代理, 自动化运维, 自治系统, 请求拦截, 高覆盖率测试