Skip to content

可配置技能体系

Reeve 内置 34 套运维技能,外加用户级 + 项目级扩展。AI 不会的命令先 evaluate_skills 查技能再动手;任何技能里的危险命令正则自动注入策略黑名单。

进入

主界面左侧导航 → 技能

技能是什么

技能(Skill)是一份带 frontmatter 的 Markdown 文档(SKILL.md),告诉 AI:

  • 遇到什么场景该用这个技能(触发词)
  • 该用什么命令、什么顺序(指南正文)
  • 哪些命令永远不能跑(dangerous_commands 正则)

例如 nginx-status 技能告诉 AI 排查 nginx 时按 systemctl → nginx -t → error.log → 重启的顺序,并自动拦截 rm -rf /etc/nginx

三级合并

层级位置说明
builtinReeve 内置 34 套AI 知识库,UI 默认隐藏
user~/.config/reeve/skills/~/.claude/skills/全局个人技能
project<project>/.claude/skills/项目级,跟着项目走

优先级:project > user > builtin(同名覆盖)。

34 套内置技能

按域分组:

技能
系统 / 网络 / 安全linux-fundamentals / systemd-service / ssh-hardening / log-investigation / iptables-firewalld / wireguard-vpn / selinux-apparmor
Web 反代 / 证书nginx-status / openresty-lua / caddy-traefik / certbot-acme
数据库mysql-ops / postgresql-ops / mongodb-ops / clickhouse-ops / redis-ops
容器 / 编排 / 面板docker-ps / kubernetes-basics / portainer-ops / 1panel-ops
消息队列rabbitmq-ops / kafka-ops
CI/CD / Gitgit-server / jenkins-runner
存储 / 备份 / 共享minio-s3 / nfs-smb-share / borgbackup-restic
监控prometheus-grafana / loki-promtail
运行时nodejs-pm2 / java-jvm-tuning / python-venv-uwsgi / php-fpm-ops
AIollama-vllm

内置技能 UI 默认隐藏

内置技能是「AI 知识库」,普通用户在 UI 看不到。如果想浏览:工具栏 显示内置 Switch 打开。后端 + AI 行为不受 UI 显示状态影响。

列表视图

每行:

  • 名称
  • 来源(builtin / user / project,颜色标识)
  • 描述
  • 触发词(前 5 个)
  • 修改时间
  • 操作(编辑 / 删除 / 测试触发)

工具栏:

  • 来源过滤(Segmented)
  • 显示内置 Switch(localStorage 持久化)
  • 关键字搜索

测试触发

工具栏 测试触发 按钮 → 弹窗:

  1. 输入一个 prompt(例如「nginx 重启失败」)
  2. Reeve 跑 evaluate_skills(prompt=...)
  3. 命中的技能高亮,显示分数

用于:

  • 调试新写的技能触发词
  • 看 AI 在你的项目里会自动用到哪些技能

新建技能

右上 新建 按钮 → 弹窗:

字段说明
作用域user / project(项目作用域需先打开项目目录)
名称kebab-case,例如 redis-cluster-ops
描述一句话
触发词多个关键字,逗号分隔
危险命令多行正则,每行一条

保存后打开 Drawer 编辑正文(Markdown)。

SKILL.md 格式

markdown
---
name: nginx-status
description: 排查 nginx 服务状态、配置、错误日志
triggers:
  - nginx
  - 反向代理
  - 502
  - upstream
dangerous_commands:
  - 'rm\s+-rf\s+/etc/nginx'
  - 'nginx\s+-s\s+stop'  # 生产慎用
---

# nginx 状态排查

## 1. 检查服务状态
...

## 2. 验证配置
...

## 3. 看错误日志
...

frontmatter 字段:

字段说明
name唯一标识
description一句话描述
triggers触发词数组(用于 evaluate_skills 匹配)
dangerous_commands正则数组,自动注入 ai-policy 黑名单,任何档位(含 trusted)都拦

编辑技能

行内 编辑 → Drawer 打开:

  • 编辑 tab:CodeMirror Markdown 编辑器(含语法高亮)
  • 预览 tab:Markdown 渲染

保存时:

  • 凭据黑名单扫描(含 password= api_key: 等模式 → 拒保存)
  • frontmatter 解析校验
  • 正则可编译性校验

危险命令自动注入

SKILL.md 的 dangerous_commands 字段加载时自动注册到 ai-policy

  • 任何档位(含 trusted)都拦
  • AI 走 ssh_exec 时实时匹配
  • 命中即拒绝 + 写审计 blocked_by_skill: <skill_name>

例如 mysql-ops 技能里写:

yaml
dangerous_commands:
  - 'DROP\s+DATABASE'
  - 'mysql.*--password=\S+'  # 命令行带密码

AI 永远跑不出这些命令,即使你把 mysql-ops 技能压根没在对话里用。

evaluate_skills 工具

AI 通过 MCP 工具 evaluate_skills(prompt="...") 主动查询技能:

AI: 用户说 nginx 502 了
[调用 evaluate_skills(prompt="nginx 502")]
返回: matched=["nginx-status"], score=12
[调用 get_skill(name="nginx-status")]
返回: <完整 SKILL.md>
AI: 我先 systemctl status nginx ...

内置技能集成测试

每个内置技能都有 frontmatter 校验测试 builtin_skills_all_parse_correctly

  • 全部 SKILL.md frontmatter 可解析
  • 全部 dangerous_commands 正则可编译
  • 累计 100+ 条 危险命令注入 ai-policy 黑名单

删除技能

行内 删除 按钮:

  • 二次确认
  • 仅对 user / project 技能可用(内置只读)
  • 从黑名单移除该技能的正则
  • 写审计

项目空间联动

打开项目空间后,<project>/.claude/skills/ 下的所有 SKILL.md 自动加载为 project 作用域技能,跟着项目走。

这也意味着:

  • Git 仓库可以提交团队共享的技能
  • Claude Code 进到该目录原生发现这些技能(因为路径符合 Claude Code 约定)

故障排查

症状排查
保存被拒「含敏感凭据」frontmatter 或正文里有疑似密码字段,剔除
正则编译失败检查转义;用「测试触发」预演
AI 没用我的技能触发词不够精准;尝试在对话里直接 @skill
内置技能不显示工具栏「显示内置」Switch 打开

下一步

受控的远程运维助手 — 让 AI 安全地帮你管服务器