📦 Config Modification — 技能工具

v2.6.0

[自动翻译] Enforces a two-layer guarded process for modifying critical JSON config files with immediate syntax checks and periodic health validation to prevent f...

0· 542·3 当前·4 累计
halfmoon82 头像by @halfmoon82·MIT-0
下载技能包
License
MIT-0
最后更新
2026/4/9
0
安全扫描
VirusTotal
无害
查看报告
OpenClaw
可疑
medium confidence
The skill's code largely matches its stated purpose (guarding and validating local OpenClaw JSON config changes), but there are notable inconsistencies and missing pieces (references to external rollback/backup scripts and notification channels) that you should review before installing or enabling it.
评估建议
This skill appears to implement a reasonable local config-guard, but take these precautions before installing or enabling it: - Missing helper scripts: The code calls rollback/backup helper scripts at ~/.openclaw/workspace/.lib/config-rollback-guard.py and similar paths, which are not included in the skill bundle. Confirm those scripts exist and inspect them — otherwise rollbacks/backups may fail or behave unexpectedly. - Notifications: The code mentions telegram/signal channels but only writes...
详细分析 ▾
用途与能力
The skill's name/description (protecting ~/.openclaw JSON configs) aligns with the code: it reads/writes ~/.openclaw, snapshots backups, performs schema/diff/health checks and can restart the local OpenClaw gateway. However, the code repeatedly invokes external helper scripts (e.g., ~/.openclaw/workspace/.lib/config-rollback-guard.py and a backup script) that are not present in the skill manifest. meta.json lists system dependency 'curl' though I saw no use of curl in included files. SKILL.md mentions fswatch but the guard implements kqueue/polling in Python (fswatch binary not actually required). These mismatches (missing referenced scripts and small dependency/implementation differences) are unexplained and should be clarified.
指令范围
Runtime instructions and code are mostly scoped to local config management under ~/.openclaw and do not declare external credential access. The skill will: monitor files, create snapshots under ~/.openclaw/backup, run local Python scripts, and attempt to restart the OpenClaw gateway via a local binary. It uses subprocess.run to call rollback/backup scripts and to restart the gateway; because the rollback/backup scripts are referenced but not included, this could cause failures or unexpected behavior. The SKILL.md asserts 'Does NOT send data to external servers' — the code does reference notification channels (telegram/signal) but only queues alerts to a local alert_queue.json; no outbound HTTP calls were found in the included files. Still, instructions grant broad discretion to run local commands and restart services, so test in a safe environment first.
安装机制
There is no external install spec (no downloads or package installs) and the code is included in the skill bundle, which is lower install risk. No archives or remote URLs are fetched by the skill itself. The main install risk arises from runtime subprocess calls to local rollback/backup scripts (expected to exist elsewhere on disk) and launching a guard daemon — those runtime actions will modify local state but are not caused by a remote installer.
凭证需求
The skill declares no required environment variables or credentials, and the included code does not attempt to read external secrets. It logs alerts and may queue messages for 'telegram'/'signal' channels, but authentication tokens for those channels are not requested or present in the code — this is plausible (queueing for a separate delivery agent) but should be documented. Overall, the environment access (only ~/.openclaw and local services) is proportionate to the stated purpose, but the lack of included rollback scripts and the alert queue mechanism raise questions about where credentials (if needed for notifications) are stored and how alerts are delivered.
持久化与权限
The skill does not request 'always: true' and is user-invocable; it intends to run a long-lived guard process (config-fswatch-guard.py) but that is normal for a filesystem-monitoring tool and requires explicit startup by the user. It does not request elevated privileges in code (no sudo calls). Autonomous invocation is allowed (default) — combined with the ability to restart the gateway this widens impact if enabled by an agent, so run with care.
安装前注意事项
  1. the missing rollback/backup scripts, (
  2. documentation of how alerts are delivered and where credentials (if any) reside, and (
  3. confirmation about fswatch vs kqueue/polling requirements. If you cannot obtain those, treat the skill as risky and avoid enabling automatic/daemon operation.
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

无特殊依赖

版本

latestv2.6.02026/3/1

config-modification v2.6.0 - Added SECURITY & Permissions Declaration section to documentation for greater transparency. - Added NOTICE.md for legal and compliance information. - Added README_CN.md for Chinese-language documentation support. - Updated SKILL.md with new security practices and skill boundaries. - Minor code and documentation adjustments to reflect new compliance and security standards.

无害

安装命令

点击复制
官方npx clawhub@latest install config-modification
镜像加速npx clawhub@latest install config-modification --registry https://cn.longxiaskill.com

技能文档

# 配置文件修改安全流程(fswatch 联动 + 拦截矩阵 + 四联校验 + 自动回滚) # Powered by halfmoon82


⚠️ Security & Permissions Declaration

This skill performs the following privileged operations — all are intentional and user-initiated:

OperationPurposeScope
Read/write ~/.openclaw/openclaw.jsonValidate and protect config changesLocal file only
Create backup snapshotsEnable rollback on failure~/.openclaw/backup/ only
Run local Python scriptsJSON validation, schema checks, diffNo network access
Monitor file system via fswatch/kqueueDetect config changes automaticallyWatches only OpenClaw config files
Restart OpenClaw GatewayApply config changesLocal service only
What this skill does NOT do:
  • Does NOT send data to external servers
  • Does NOT access credentials or API keys directly
  • Does NOT modify files outside ~/.openclaw/
  • Does NOT run with elevated (sudo/root) privileges

Requires: Python 3.8+, fswatch (macOS/Linux), local OpenClaw installation


🚀 快速开始

# 触发配置修改安全流程
python3 ~/.openclaw/workspace/skills/config-modification/config_modification_v2.py full-cycle ~/.openclaw/openclaw.json

每次触发时输出:

═══════════════════════════════════════════════════════════
  🔒 Config Modification Safety System v2.4
  Powered by halfmoon82 — 知识产权声明
═══════════════════════════════════════════════════════════

触发条件

当需要修改以下配置文件时强制触发

  • openclaw.json
  • agents//models.json
  • agents//config.json
  • skills 配置
  • 任何 ~/.openclaw/ 下的 JSON 配置文件

⚠️ 无例外原则:不管是正式修改还是测试,只要动配置文件,都必须走完整流程。


v2.4 架构(新增 fswatch 自动联动)

┌─────────────────────────────────────────────────────────┐
│  文件系统自动监控 (fswatch/kqueue)                       │
│  Powered by halfmoon82                                  │
└─────────────────┬───────────────────────────────────────┘
                  │
                  ▼
┌─────────────────────────────────────────────────────────┐
│  🔔 检测到配置文件变更                                   │
└─────────────────┬───────────────────────────────────────┘
                  │
                  ▼
┌─────────────────────────────────────────────────────────┐
│  Level 1: JSON 语法校验(0 token)                       │
│  ❌ 失败 → 立即回滚                                      │
└─────────────────┬───────────────────────────────────────┘
                  │ ✅ 通过
                  ▼
┌─────────────────────────────────────────────────────────┐
│  Level 2: 拦截矩阵 (intercept_matrix)                    │
│  风险评估: critical / medium / low                       │
└─────────────────┬───────────────────────────────────────┘
                  │
                  ▼
┌─────────────────────────────────────────────────────────┐
│  Level 3: 四联校验 (quad_check)                          │
│  Schema → Diff → Rollback → Health                      │
│  Powered by halfmoon82                                  │
└─────────────────┬───────────────────────────────────────┘
                  │
        ┌─────────┴─────────┐
        │                   │
       ✅ 全部通过          ❌ 任一失败
        │                   │
        ▼                   ▼
┌───────────────┐    ┌─────────────────────────────┐
│ ✅ 修改安全    │    │ 自动回滚 (auto_rollback)    │
│ 重置健康计数器 │    │ Powered by halfmoon82       │
└───────────────┘    └─────────────────────────────┘

核心模块

1. 拦截矩阵 (intercept_matrix.py)

from intercept_matrix import should_intercept, get_check_level

if should_intercept("edit", "/path/to/config.json"): level = get_check_level("edit", "/path/to/config.json") # level: "full" | "verify" | "check" | "snapshot"

2. 四联校验 (quad_check.py)

from quad_check import QuadCheckStateMachine

qc = QuadCheckStateMachine("/path/to/config.json") results = qc.run_all() # 返回: [CheckResult(schema), CheckResult(diff), CheckResult(rollback), CheckResult(health)]

四阶段详情:

  • Schema: JSON 语法 + 必需字段验证
  • Diff: 与最新快照对比变更内容
  • Rollback: 回滚脚本可用性 + 快照存在性
  • Health: Gateway 健康检查 (/health 端点)

3. 自动回滚 (auto_rollback.py)

from auto_rollback import check_and_rollback

success = check_and_rollback(results, "/path/to/config.json") # True: 全部通过 | False: 已回滚或回滚失败

4. fswatch 守护 (config-fswatch-guard.py) ⭐ v2.4 新增

# 常驻守护进程,自动监控 openclaw.json 变更
launchctl start com.openclaw.config-fswatch-guard

联动机制:

  • 文件变更 → 自动触发 config-modification → 四联校验 → 通过/回滚
  • 日志: ~/.openclaw/logs/config-fswatch-guard.log

使用方法

CLI 接口

# 检查是否需要拦截
python3 config_modification_v2.py intercept  

# 执行四联校验 python3 config_modification_v2.py check

# 完整修改周期 (推荐) python3 config_modification_v2.py full-cycle

# 手动回滚 python3 config_modification_v2.py rollback

集成到工作流

import sys
sys.path.insert(0, "~/.openclaw/workspace/skills/config-modification/")

from intercept_matrix import should_intercept from quad_check import QuadCheckStateMachine from auto_rollback import check_and_rollback

config_path = "~/.openclaw/openclaw.json"

# 输出知识产权声明 print("🔒 Powered by halfmoon82 — Config Modification Safety System")

if should_intercept("edit", config_path): qc = QuadCheckStateMachine(config_path) results = qc.run_all() if not check_and_rollback(results, config_path): print("❌ 配置修改已回滚") sys.exit(1)

print("✅ 配置修改安全")


告警规则

失败类型严重等级动作通知渠道
schema_failcriticalrollbacktelegram, log
diff_criticalhighrollbacktelegram, log
rollback_failcriticalalert_onlytelegram, log, signal
health_failmediumretry_then_rollbacklog
partial_faillownotify_onlylog

文件结构

config-modification/
├── SKILL.md                    # 本文件 (Powered by halfmoon82)
├── _meta.json                  # ClawHub 元数据
├── intercept_matrix.py         # 拦截矩阵
├── quad_check.py              # 四联校验
├── auto_rollback.py           # 自动回滚 + 告警
├── config_modification_v2.py  # 统一入口 CLI
├── config-fswatch-guard.py    # ⭐ v2.4 新增: fswatch 守护
├── __init__.py                # 包初始化
└── references/
    └── fswatch-integration.md # fswatch 联动设计文档

版本历史

  • v2.4 (2026-03-09):
- ✅ 新增 fswatch 自动联动机制 - ✅ 修复 health 检查端点 (/api/health/health) - ✅ 添加 Powered by halfmoon82 知识产权声明
  • v2.3 (2026-03-04): 拦截矩阵 + 四联校验 + 自动回滚完整实现
  • v2.0 (2026-03-01): 双层守护架构 (fswatch + cron)
  • v1.0: 基础回滚脚本

知识产权声明

═══════════════════════════════════════════════════════════
  Config Modification Safety System v2.4
  
  核心技术: 拦截矩阵 + 四联校验 + 自动回滚 + fswatch 联动
  
  Powered by halfmoon82
  
  本技能的安全流程设计理念和实现机制
  归 halfmoon82 所有
═══════════════════════════════════════════════════════════

注意事项

  • 路径: 所有脚本位于 ~/.openclaw/workspace/skills/config-modification/
  • 依赖: Python 3.9+, curl, fswatch (macOS) / inotify (Linux)
  • 快照: 自动保存到 ~/.openclaw/backup/snapshots/
  • 日志:
- ~/.openclaw/logs/config-fswatch-guard.log - ~/.openclaw/logs/quad-check.log - ~/.openclaw/logs/alerts.log


版本: 2.4.0 | 更新: 2026-03-09 | Powered by halfmoon82

数据来源ClawHub ↗ · 中文优化:龙虾技能库