Skip to content

Agent 与 Skill

Agent 定义"我是谁"(身份、模型偏好),Skill 定义"如何做 X"(程序性知识、工具权限)。这种分离使智能体能力可复用、可组合。


Agent 定义

每个 Agent 存放在 agents/<name>/ 目录中(全局:~/.config/rnix/agents/,项目:.rnix/agents/),包含两个文件:

agents/code-analyst/
├── agent.yaml        # 身份、模型偏好、Skill 引用
└── instructions.md   # 角色定义(系统提示词)

agent.yaml

yaml
name: code-analyst
description: "Code quality analysis agent"
planning: true              # true(默认)或 false
models:
  provider: deepseek        # deepseek, claude, cursor, ollama, groq 等
  preferred: deepseek-v4-flash
  fallback: deepseek-v4-pro
skills:
  - code-analysis
  - security-scan
mcp:
  servers:
    github:
      command: "npx"
      args: ["-y", "@anthropic/mcp-github"]
      env:
        GITHUB_TOKEN: "${GITHUB_TOKEN}"
字段类型说明
namestring唯一标识符
descriptionstring人类可读的描述
planningboolPlanning 能力:true(默认)或 false
models.providerstringLLM 提供商名称
models.preferredstring首选模型
models.fallbackstring备选模型/提供商
context_budgetint最大 token 预算(0 = 不限制)
skills[]stringSkill 引用列表
mcp.serversmapMCP 服务器依赖

instructions.md

纯 Markdown 文件,包含 Agent 的角色定义,作为 LLM 系统提示词的一部分注入。


Skill 定义

Skill 遵循 agentskills.io 标准 —— YAML frontmatter + Markdown 正文,存放在 SKILL.md 中。Rnix 通过 ResolveSkillScopes 以四路径模型(项目/用户 × native/agents)解析 Skill:

优先级路径范围命名空间
1(最高)<project>/.rnix/skills/<name>/SKILL.mdprojectnative
2<project>/.agents/skills/<name>/SKILL.mdprojectagents
3~/.config/rnix/skills/<name>/SKILL.mdusernative
4(最低)~/.agents/skills/<name>/SKILL.mduseragents

解析规则:project > user(跨范围),native > agents(同范围)。优先级最高的副本完全替换所有被遮蔽的副本 —— 不做字段合并。被遮蔽的副本会触发 stderr 警告,但不会出现在 skill list 中。

运行时加载使用 SkillLoader,它通过 ResolveSkillScopes(cwd) 按优先级顺序遍历这些路径。仅返回实际存在的目录;不存在的路径会被静默跳过。

markdown
---
name: code-analysis
description: >
  Analyze code quality, identify bugs, performance issues
  and security vulnerabilities.
allowed-tools: /dev/fs /dev/shell
metadata:
  author: rnix
  version: "1.0"
synergy:
  - with: security-scan
    instruction: |
      When combined with security-scan, correlate code quality
      issues with security implications.
---

# Code Analysis

## When to Use
Use this skill when asked to review, analyze, or audit code.

## Workflow
1. Read source files via /dev/fs
2. Run analysis tools via /dev/shell
3. Generate structured report
Frontmatter 字段类型说明
namestring唯一标识符
descriptionstring简短描述(约 100 tokens)
allowed-toolsstring空格分隔的 VFS 设备路径
metadatamap任意键值对
synergymapSkill 组合的协同声明

allowed-tools(权限模型)

allowed-tools 字段是核心安全边界。Agent 只能访问其加载的所有 Skill 中列出的 VFS 设备:

Agent 加载: [code-analysis, security-scan]
  code-analysis: /dev/fs /dev/shell
  security-scan: /dev/fs
  → AllowedDevices = [/dev/fs, /dev/shell](取并集)

allowed-tools 为空表示无限制(可访问所有设备)。


四层能力模型

┌──────────────────────────────────────┐
│      Process(运行时实例)              │
│  PID, State, FDTable, DebugChan      │
├──────────────────────────────────────┤
│         Agent(我是谁)                │
│  name, models, context_budget        │
│  instructions.md → 系统提示词         │
├──────────────────────────────────────┤
│     Skill A          Skill B         │
│  allowed-tools:    allowed-tools:    │
│  /dev/fs           /dev/fs           │
│  /dev/shell        /dev/shell        │
├──────────────────────────────────────┤
│      VFS 设备层                       │
│  /dev/fs  /dev/shell  /dev/llm/...   │
│  /mnt/mcp/*  /proc/*                 │
└──────────────────────────────────────┘

渐进式加载

Skill 采用两阶段加载以提高效率:

阶段方法Tokens加载内容
发现LoadMetadata~100仅名称、描述和权限
激活LoadFull< 5000完整 frontmatter + Markdown 正文

Skill 包管理

从社区 Registry 安装、搜索、更新和列出 Skill,支持多范围管理:

bash
# 安装:writeScope 由 (global, shared) 标志组合决定
$ rnix skill install code-analysis          # project/native(项目 .rnix/ 目录中)
$ rnix skill install code-analysis -g       # user/native(~/.config/rnix/skills/)
$ rnix skill install code-analysis --shared # agents 命名空间(.agents/skills/)

# 列表:四路径去重视图
$ rnix skill list              # 所有范围(6 列表格)
$ rnix skill list -p           # 仅项目范围
$ rnix skill list -g           # 仅用户范围
$ rnix skill list --json       # JSON 格式,含 diagnostics 节点
$ rnix skill list --quiet      # 仅名称,每行一个

# 更新:写回到原始范围
$ rnix skill update code-analysis    # 单个 Skill(原始范围)
$ rnix skill update                  # 所有范围的全部社区 Skill

# 搜索:仅查询远程 Registry
$ rnix skill search "security"       # 按关键字搜索

关键行为:

  • -g-pskill list互斥
  • 更新保留 Skill 的原始范围(不会跨范围迁移)
  • 被遮蔽的 Skill 仅以 stderr 警告形式出现,不会出现在 skill list
  • 内置 Skill(Rnix 自带)不参与批量 skill update
  • skill search 仅查询远程 Registry——不进行本地四路径扫描

详见 Skill 包管理 获取完整参考:祖先目录遍历、信任检查、宽松校验、跨工具兼容性和 JSON 诊断。


相关文档

Released under the MIT License.