ops-speedup

GitHub

系统性能优化技能,通过调用ops-speedup二进制文件诊断并清理磁盘、内存等资源。支持自动心跳触发、cgroup层级内存压力分析及systemd配置修复,旨在提升Mac运行速度并解决卡顿问题。

claude-ops/skills/ops-speedup/SKILL.md Lifecycle-Innovations-Limited/claude-ops

Trigger Scenarios

用户请求加速电脑 用户请求清理磁盘 心跳触发扫描

Install

npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-speedup -g -y
More Options

Non-standard path

npx skills add https://github.com/Lifecycle-Innovations-Limited/claude-ops/tree/main/claude-ops/skills/ops-speedup -g -y

Use without installing

npx skills use Lifecycle-Innovations-Limited/claude-ops@ops-speedup

指定 Agent (Claude Code)

npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-speedup -a claude-code -g -y

安装 repo 全部 skill

npx skills add Lifecycle-Innovations-Limited/claude-ops --all -g -y

预览 repo 内 skill

npx skills add Lifecycle-Innovations-Limited/claude-ops --list

SKILL.md

Frontmatter
{
    "name": "ops-speedup",
    "effort": "low",
    "maxTurns": 30,
    "description": "OPS on-demand: This skill should be used when the user asks to \"speed up this mac\", \"clean disk\", or…",
    "allowed-tools": [
        "Bash",
        "Read",
        "Grep",
        "Glob",
        "AskUserQuestion"
    ],
    "argument-hint": "[scan|clean|deep|auto]"
}

Heartbeat-triggered runs

When asked to run a newly configured session heartbeat, read its saved prompt from the active Hermes database's state_meta entry heartbeat:<session_id>. Slash-command setup may not appear in conversation history, config.yaml, or cron/jobs.json. Execute that prompt in the current turn; do not invent a hermes heartbeat CLI command or mark a scheduler fire that did not occur.

Validate scan warnings with short live samples before changing the machine. Existing swap use alone is not active memory pressure; a transient blocked process or CPU spike does not justify cache purges or killing useful workers.

When host memory is available but swapping and stalls persist, inspect memory.high, memory.events, and memory.pressure at EVERY cgroup ancestor, not only the process's leaf. An inherited soft limit can force disk reclaim despite free host RAM. Establish the limit's original purpose before changing it; preserve service headroom, back up persistent settings, and verify that new high-limit events stop. Disk recovery can lag after the limit is corrected; do not call the whole host recovered from a configuration readback alone.

When a memory-limit fix reverts after daemon-reload, inspect all systemd drop-ins, including system.control and ordinary unit overrides. Align the stale conflicting source after backing it up; test a daemon-reload and read the live cgroup limit. A successful set-property alone does not prove reload persistence. Keep separate worker hard limits intact; diagnose worker heap settings against those limits rather than raising them indiscriminately.

Runtime Context

Before scanning, load:

  1. Preferences: cat ${CLAUDE_PLUGIN_DATA_DIR:-$HOME/.claude/plugins/data/ops-ops-marketplace}/preferences.json — read timezone for timestamps

OPS > SPEEDUP — System Optimizer

Load ops-rules before acting. Public repo (no personal data). Outbound: one draft → one approval → one send. If AskUserQuestion / Workflow are missing, follow Rule 10 in ops-rules (Hermes: numbered options / two-turn Telegram card; delegate_task).

Architecture

The bin/ops-speedup binary is the single source of truth for probes AND actions. This skill's job is to:

  1. Call the binary with the right flags based on user intent
  2. Parse the JSON
  3. Present a health score + cleanup report
  4. Confirm destructive actions per plugin Rule 5
  5. Invoke the binary's clean/deep/aggressive modes to execute

CLI Reference — bin/ops-speedup

Command Purpose Side effects
ops-speedup Visual banner + hardware summary None
ops-speedup --json Quick JSON diagnostics (disk/mem/net only) None
ops-speedup --scan Full parallel probe: disk + mem + CPU hogs + power hogs + GPU/ANE + startup None
ops-speedup --clean Safe cleanup: caches, tmp, logs, demote daemons, DNS flush, kernel tune Non-destructive
ops-speedup --deep --clean + Trash, DerivedData, simulators, animation cuts, launch-agent kill Removes files
ops-speedup --aggressive --deep + unload launch agents, docker --volumes, stale node_modules (>14d), TCP BBR Potentially breaking — confirm first

All modes:

  • Auto-detect OS (macOS / Linux / WSL / Windows) and dispatch OS-specific ops
  • Idempotent — skip DerivedData/Metro/journal if last run was <1h ago
  • Write telemetry to ~/.ops-speedup/history.jsonl
  • Only raise kernel tuning parameters, never lower
  • Protected processes list blocks killing of shells, IDEs, daemons

OS-specific capabilities

Capability macOS Linux WSL Windows
Disk reclaimable scan ✓ ✓ ✓ limited
Memory + swap ✓ ✓ ✓ limited
CPU hog kill ✓ ✓ ✓ —
Power/Energy Impact ✓ (top -stats power) ✓ (powertop) — —
GPU/Neural Engine ✓ (ioreg, no sudo; powermetrics fallback detail when available) ✓ (nvidia-smi) — —
Launch agent offenders ✓ — — —
systemd unit masking — ✓ ✓ —
E-core demotion ✓ (taskpolicy -b) ✓ (renice+ionice) ✓ —
UI animation cuts ✓ — — —
Kernel tune (vnodes/somaxconn) ✓ ✓ ✓ —
TCP BBR — ✓ (aggressive) ✓ (aggressive) —
DNS flush ✓ (dscacheutil) ✓ (resolved) ✓ (via Windows) —
Memory purge ✓ (purge) ✓ (drop_caches) ✓ —
Stale build dir prune (>14d) ✓ ✓ ✓ —

Phase 1 — Visual header

${CLAUDE_PLUGIN_ROOT}/bin/ops-speedup 2>/dev/null || echo "SCAN_FAILED"

Phase 2 — Full diagnostic scan (parallel, all probes)

${CLAUDE_PLUGIN_ROOT}/bin/ops-speedup --scan 2>/dev/null || echo '{}'

The binary already runs all probes in parallel. Do NOT add additional serial probe calls from this skill — they will duplicate work that's already in the JSON output.

Phase 3 — Health score + cleanup report

Parse the JSON and render:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 OPS > SYSTEM SPEEDUP — [os] [os_version] [chip]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 HEALTH SCORE: [health.score] / 100  [runtime-first: health.model]

 RUNTIME
 ────────────────────────────────────────────────────
 CPU idle:     [runtime.cpu_idle_pct]%  user/sys: [runtime.cpu_user_pct]/[runtime.cpu_sys_pct]%
 Load:         [runtime.load1] / [runtime.load5] / [runtime.load15]
 Processes:    [runtime.processes] total, [runtime.running] running, [runtime.stuck] uninterruptible, [runtime.zombies] zombies

 GPU
 ────────────────────────────────────────────────────
 Device:       [gpu.device_util_pct]%   Renderer: [gpu.renderer_util_pct]%   Tiler: [gpu.tiler_util_pct]%
 GPU memory:   [gpu.mem_in_use_mb] MB in use / [gpu.mem_allocated_mb] MB allocated

 PID AUDIT
 ────────────────────────────────────────────────────
 Current CPU hogs:       [len(cpu_hogs)] (two samples >30%, not one spike)
 Power hogs:             [len(power_hogs)]
 Long-lived heavy PIDs:  [runtime.long_lived_hogs] actionable / [runtime.long_lived_hogs_total] total (>=3h and high average/current CPU)
 Health factors:         [health.factors or none]

 MEMORY
 ────────────────────────────────────────────────────
 Pressure:    [memory.pressure_pct]% free    Swap: [memory.swap_mb] MB    Free: [memory.free_mb] MB

 NETWORK / TCP
 ────────────────────────────────────────────────────
 Interface:   [network.iface]      DNS: [network.dns_ms]ms
 TCP states:  CLOSE_WAIT [runtime.tcp_close_wait]      TIME_WAIT [runtime.tcp_time_wait]

 DISK (secondary signal; cache size alone does not lower health)
 ────────────────────────────────────────────────────
 brew cache          [N] MB              ✓ safe
 npm cache           [N] MB              ✓ safe
 pnpm cache          [N] MB              ✓ safe
 Xcode DerivedData   [N] MB              ✓ safe
 Xcode DeviceSupport [N] MB              ✓ safe
 Docker reclaimable  [N] MB              ⚠ only prune after checking live containers
 Metal shader cache  [N] MB              ✓ safe
 Trash               [N] MB              ✓ safe
 Logs                [N] MB              ✓ safe
 Downloads           [N] MB              ⚠ review
 Caches (general)    [N] MB              ⚠ review
 /tmp                [N] MB              ✓ safe
 apt/journal         [N] MB              ✓ safe (linux)
 ────────────────────────────────────────────────────
 TOTAL RECLAIMABLE:  [N] GB

 STARTUP (informational)
 ────────────────────────────────────────────────────
 Login items:   [N]              (macOS)
 Launch agents: [N]              (macOS; raw count is not a health penalty)
 Failed units:  [N]              (Linux)
 Enabled units: [N]              (Linux)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Health score contract:

Use health.score from the binary. Do not recalculate it in the skill and do not lower health merely because caches, Trash, Downloads, or launch-agent counts are large. The runtime-first model penalizes only evidence of current pressure or actual risk:

  • sustained low CPU idle / high runnable or uninterruptible process pressure
  • memory pressure below 40%, swap over 1 GB, or zombie accumulation
  • GPU utilization above 75/90%
  • DNS over 100/500 ms, CLOSE_WAIT floods, or high TIME_WAIT accumulation
  • long-lived heavy PIDs (alive at least 3h and high average/current CPU)
  • disk only when it is genuinely scarce (90/97% used), never because cleanup is possible
  • failed startup units, not the mere number of intentional launch agents

Phase 4 — Present cleanup choice (max 4 options per AskUserQuestion)

AskUserQuestion call 1 — Cleanup scope:

  [Quick — caches, tmp, logs, DNS flush (~[N] GB)]
  [Deep — + Trash, DerivedData, simulators, animation cuts (~[N] GB)]
  [Aggressive — + launch-agent unload, stale node_modules, docker volumes (~[N] GB)]
  [More options...]

AskUserQuestion call 2 (only if "More options..."):

  [Custom — pick categories]
  [Memory — kill top RAM hogs]
  [Startup / Network / Skip...]

AskUserQuestion call 3 (only if "Startup / Network / Skip..."):

  [Startup — review & disable launch agents / systemd units]
  [Network — flush DNS, tune TCP, BBR (aggressive)]
  [Skip — just show the report]

Phase 5 — Confirm destructive actions per Rule 5

Per plugin Rule 5, destructive actions require explicit per-action confirmation. Before running --aggressive:

About to run AGGRESSIVE cleanup. Each item is destructive:

  • Unload launch agents: [list]
  • Docker volume prune (may delete unmounted volumes): [N] MB
  • Stale node_modules (>14 days): [list of paths]
  • TCP congestion control → BBR (Linux only)

  [Proceed with all]  [Pick categories]  [Cancel]

If "Pick categories", batch per Rule 1 (max 4 options per AskUserQuestion).

Phase 6 — Execute

Invoke the binary directly — it handles OS detection and dispatch:

# Quick clean
${CLAUDE_PLUGIN_ROOT}/bin/ops-speedup --clean

# Deep clean
${CLAUDE_PLUGIN_ROOT}/bin/ops-speedup --deep

# Aggressive (after confirmation)
${CLAUDE_PLUGIN_ROOT}/bin/ops-speedup --aggressive

Memory hog killing (option 5 from Phase 4):

Top processes are already in the scan JSON (cpu_hogs / power_hogs). Present them in paginated AskUserQuestion calls (max 3 processes + [More...] per page, final page has [Kill selected] + [Skip]).

NEVER kill: kernel_task, launchd, WindowServer, loginwindow, Finder, Dock, systemd, init, shells (bash/zsh/fish), tmux, IDE processes (Cursor/Comet/Code), Claude, node, python, Xcode. The binary's PROTECTED_RE regex blocks these automatically.

Phase 7 — Results

After cleanup, re-scan and diff:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 OPS > CLEANUP COMPLETE
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 Reclaimed:  [N] GB
 Disk free:  [before] GB → [after] GB
 RAM free:   [before] MB → [after] MB
 Swap:       [before] MB → [after] MB
 Health:     [before]/100 → [after]/100
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

History: ~/.ops-speedup/history.jsonl

If user came from /ops:dash, offer b) Back to dashboard.

Mode shortcuts

If $ARGUMENTS is:

  • scan or empty — Phase 1-3 only (report, no cleanup)
  • clean — run ops-speedup --clean automatically (safe)
  • deep — run ops-speedup --deep automatically (after 1 confirmation)
  • auto — run ops-speedup --clean automatically, print results
  • aggressive — run ops-speedup --aggressive after per-item confirmations

Trend analysis

~/.ops-speedup/history.jsonl is append-only. For trend questions ("is my disk filling up?", "is swap growing over time?"), read + graph:

tail -30 ~/.ops-speedup/history.jsonl | jq -r '[.ts, .ram_free_mb, .swap_mb, .disk_pct] | @tsv'

Version History

  • 057e72d Current 2026-09-22 01:18

    新增心跳触发机制说明及Hermes数据库交互细节;修正Agent匹配器锚定;补充cgroup内存压力与systemd配置排查逻辑。

  • 6f1e3e0 2026-08-27 09:33

    更新架构说明,增加 CLI 参考表格详情,补充 OS 特定能力表及 Runtime Context 偏好加载逻辑。

  • 64bad13 2026-08-12 09:02

Same Skill Collection

claude-ops/skills/boss/SKILL.md
claude-ops/skills/flow/SKILL.md
claude-ops/skills/humanizer/SKILL.md
claude-ops/skills/ledger/SKILL.md
claude-ops/skills/ops-accounts/SKILL.md
claude-ops/skills/ops-ar/SKILL.md
claude-ops/skills/ops-aws-audit/SKILL.md
claude-ops/skills/ops-comms/SKILL.md
claude-ops/skills/ops-competitors/SKILL.md
claude-ops/skills/ops-credentials/SKILL.md
claude-ops/skills/ops-daemon/SKILL.md
claude-ops/skills/ops-dash/SKILL.md
claude-ops/skills/ops-deploy-fix/SKILL.md
claude-ops/skills/ops-deploy/SKILL.md
claude-ops/skills/ops-desk/SKILL.md
claude-ops/skills/ops-desktop/SKILL.md
claude-ops/skills/ops-doctor/SKILL.md
claude-ops/skills/ops-ecom/SKILL.md
claude-ops/skills/ops-feature-dev/SKILL.md
claude-ops/skills/ops-fires/SKILL.md
claude-ops/skills/ops-fleet/SKILL.md
claude-ops/skills/ops-go/SKILL.md
claude-ops/skills/ops-gtm/SKILL.md
claude-ops/skills/ops-home/SKILL.md
claude-ops/skills/ops-humanizer/SKILL.md
claude-ops/skills/ops-inbox/SKILL.md
claude-ops/skills/ops-integrate/SKILL.md
claude-ops/skills/ops-leadgen/SKILL.md
claude-ops/skills/ops-linear/SKILL.md
claude-ops/skills/ops-mac/SKILL.md
claude-ops/skills/ops-marketing/SKILL.md
claude-ops/skills/ops-mcp/SKILL.md
claude-ops/skills/ops-merge/SKILL.md
claude-ops/skills/ops-monitor/SKILL.md
claude-ops/skills/ops-next/SKILL.md
claude-ops/skills/ops-orchestrate/SKILL.md
claude-ops/skills/ops-package/SKILL.md
claude-ops/skills/ops-pocket/SKILL.md
claude-ops/skills/ops-projects/SKILL.md
claude-ops/skills/ops-recap/SKILL.md
claude-ops/skills/ops-release/SKILL.md
claude-ops/skills/ops-resume/SKILL.md
claude-ops/skills/ops-revenue/SKILL.md
claude-ops/skills/ops-rotate-setup/SKILL.md
claude-ops/skills/ops-rotate/SKILL.md
claude-ops/skills/ops-rules/SKILL.md
claude-ops/skills/ops-secret-sync/SKILL.md
claude-ops/skills/ops-settings/SKILL.md
claude-ops/skills/ops-ship/SKILL.md
claude-ops/skills/ops-social-planner/SKILL.md

Metadata

Files
0
Version
057e72d
Hash
74670a26
Indexed
2026-08-12 09:02

Home - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-09-27 00:46
浙ICP备14020137号-1