Skip to content

配置指南

Rnix 使用分层配置系统,通过 YAML 配置文件、Agent 定义和 Skill 定义来控制行为。运行 rnix init 可初始化配置环境。


配置模型

Rnix 的配置有三个独立维度:

1. 配置文件分层(XDG 风格)

YAML 配置文件(providers.yamlconfig.yamlweb-search.yaml)遵循 全局 + 项目 双层模型:

层级位置用途
全局层~/.config/rnix/(或 $XDG_CONFIG_HOME/rnix/用户级默认配置
项目层<project>/.rnix/项目级覆盖

YAML 文件采用深度合并:项目级值覆盖全局级值。

2. Skill 存储(agentskills.io 2×2 模型)

Skill 遵循 agentskills.io 规范的 dual-scope × dual-namespace 模型。Rnix 在每个 scope 下实现了两个 namespace

Native Namespace(Rnix)Agents Namespace(agentskills.io)
Project scope<project>/.rnix/skills/<project>/.agents/skills/
User scope~/.config/rnix/skills/~/.agents/skills/
  • Native namespace.rnix/skills/~/.config/rnix/skills/):Rnix 专属 skill,同 scope 内优先级最高
  • Agents namespace.agents/skills/~/.agents/skills/):遵循 agentskills.io 跨工具标准——置于此处的 skill 对 Cursor、OpenCode、Windsurf 等兼容工具可见

优先级:project/native > project/agents > user/native > user/agents。详见 Skill 包管理

3. 数据目录(会话与历史)

运行时产物——推理步骤、检查点、events.jsonl、可恢复历史——存放在配置旁边,而是位于单一的全局数据目录,按以下顺序解析:

优先级来源解析路径
1RNIX_DATA_DIR取其原值
2XDG_DATA_HOME$XDG_DATA_HOME/rnix
3(默认)~/.local/share/rnix

在数据目录下,每个项目在项目注册表中拥有自己的子树,以一个确定性的、可读的 ID 作为键:

<data-dir>/
└── projects/
    ├── my-api-3f9a1c2b/         ← <sanitized-basename>-<hash8>
    │   └── steps/
    │       └── <uuid>/          ← events.jsonl、proc-info.json、检查点
    └── another-repo-7c4e0d11/
        └── steps/

ID 形如 <sanitized-basename>-<hash8>,其中 hash8sha256(项目绝对路径) 的前 4 字节。哈希可避免两个同名 basename 的项目(例如两个不同的 api/ 目录)相互冲突,basename 则保持目录可读。如此集中存储,使得 rnix ps -arnix recordrnix replayrnix resume 能从单一根目录跨所有项目枚举历史,也让下文的**垃圾回收(GC)**能全局地应用 retention_days / max_entries

旧版本曾将会话数据存放在相对当前目录的 <project>/.rnix/data/steps/。该位置已被全局数据目录取代——.rnix/ 现在仅保存配置、状态和 skill。

目录结构

~/.config/rnix/                  ← 全局配置(由 rnix init 创建)
├── providers.yaml
├── config.yaml
├── web-search.yaml
├── agents/                      ← 全局 Agent 定义
│   └── code-analyst/
│       ├── agent.yaml
│       └── instructions.md
└── skills/                      ← 用户 skill(native namespace)
    └── code-analysis/
        └── SKILL.md

~/.agents/skills/                ← 用户 skill(agents namespace,agentskills.io 标准)
└── web-research/                ←   与 Cursor、OpenCode 等共享
    └── SKILL.md

<project>/.rnix/                  ← 项目配置(由 rnix init 创建)
├── providers.yaml
├── config.yaml
├── init.yaml
├── compose.yaml
├── web-search.yaml
├── agents/                      ← 项目 Agent 定义
├── skills/                      ← 项目 skill(native namespace)
└── state/                       ← 运行时状态(trust marker 等)
                                 ← (会话数据位于全局数据目录——见"3. 数据目录")

<project>/.agents/skills/        ← 项目 skill(agents namespace,agentskills.io 标准)
└── shared-util/                 ←   项目内跨工具共享
    └── SKILL.md

注意~/.agents/skills/.agents/skills/ rnix init 创建,而是在首次使用(rnix skill install --shared)时创建。这遵循 agentskills.io 约定——.agents/ 目录属于生态,不属于单一工具。

合并规则

  • YAML 文件providers.yamlconfig.yamlweb-search.yaml):深度合并——项目覆盖全局
  • Agent 目录agents/):Shadow——同名项目 agent 完全替代全局 agent
  • Skill 目录skills/):Shadow,按 2×2 优先级——project/native > project/agents > user/native > user/agents。胜出副本完全替代被 shadow 的副本。

初始化

bash
# 同时创建全局(~/.config/rnix/)和项目(.rnix/)目录
$ rnix init
[init] created ~/.config/rnix/
[init] created .rnix/

# 带 MCP 示例配置
$ rnix init --with-mcp-examples
[init] created ~/.config/rnix/
[init] created .rnix/
[init] added agents/playwright-demo/ with MCP Playwright config
[init] added agents/github-assistant/ with MCP GitHub config

rnix init 是幂等的——已存在的文件和目录会被跳过。--with-mcp-examples 会在创建示例配置之前执行预检查,验证所需二进制文件(如 npx)是否可用。


config.yaml — 全局配置

位于 ~/.config/rnix/config.yaml(全局)和可选的 .rnix/config.yaml(项目覆盖)。

特性档案(Feature Profile)

特性档案控制运行时激活哪些涌现子系统。它们支持消融实验——选择性禁用能力,以衡量每一层对整体智能涌现的贡献。

提供四个命名预设和一个 custom 模式,用于精细控制:

档案描述
baseline仅基础设施——裸 LLM + VFS 设备。无规划、无子进程、无自适应机制。
core基础设施 + 核心机制——规划、子进程派生、上下文压缩。
adaptive核心 + 反馈闭环——运行时学习、技能获取、路径重规划。
full所有能力启用,包括免疫系统。默认值。
custom逐项控制——未显式列出的 flag 默认为 true

配置方式:

yaml
# .rnix/config.yaml 或 ~/.config/rnix/config.yaml
features:
  profile: full   # baseline | core | adaptive | full | custom
  custom:         # 仅 profile=custom 时生效
    planning: true
    replan: false
    specialize: true
    discover_skill: true
    spawn: true
    diff_memory: false
    stem_matcher: false
    immune: true
    compaction: true

预设矩阵:

特性baselinecoreadaptivefull(默认)
planningfalsetruetruetrue
replanfalsefalsetruetrue
specializefalsefalsetruetrue
discover_skillfalsefalsetruetrue
spawnfalsetruetruetrue
diff_memoryfalsefalsetruetrue
stem_matcherfalsefalsetruetrue
immunefalsefalsefalsetrue
compactionfalsetruetruetrue

环境变量覆盖:

设置 RNIX_FEATURE_PROFILE 可覆盖配置文件中的设定。有效值:baselinecoreadaptivefullcustom。无效值会产生警告并回退到 full

bash
RNIX_FEATURE_PROFILE=baseline rnix "analyze this code"

Custom 模式:

profile: custom 时,仅应用 custom: 下显式列出的 flag。未列出的 flag 默认为 true——custom 模式用于精准消融,而非全面禁用。

查看当前活跃档案:

使用 rnix config show 显示活跃的特性档案和各项 flag。详见 CLI 参考

参见特性档案与消融了解档案如何映射到涌现堆栈。

垃圾回收(GC)

yaml
gc:
  retention_days: 30      # 删除 N 天前的 dead_at 条目;0 = 禁用
  max_entries: 500        # 最多保留 N 条历史;0 = 禁用
  interval_seconds: 3600  # 后台扫描周期(最小 60,默认 1h)
  • retention_daysmax_entries 取并集——命中任一即触发清理
  • 两者均设为 0 可完全关闭 GC daemon
  • Running 和 Suspended 进程永久豁免

CLI 操作:

bash
rnix gc --dry-run          # 预览候选(表格)
rnix gc --dry-run --json   # 预览候选(JSON,脚本友好)
rnix gc                    # 执行清理;> 100 条会提示 [y/N]
rnix gc --force            # 跳过确认
rnix gc --json             # JSON 输出(隐含 --force)

详见 进程恢复


providers.yaml — LLM 提供商

定义可用的 LLM 提供商。位于 ~/.config/rnix/providers.yaml(全局)和可选的 .rnix/providers.yaml(项目覆盖)。

yaml
version: "1"
default_provider: deepseek

providers:
  - name: claude
    driver: claude-cli
    default_model: haiku

  - name: cursor
    driver: cursor-cli
    command: agent

  - name: groq
    driver: openai-compat
    base_url: https://api.groq.com/openai/v1
    default_model: llama-3.3-70b-versatile
    api_key_env: GROQ_API_KEY

  - name: ollama
    driver: openai-compat
    base_url: http://localhost:11434/v1
    default_model: llama3

  - name: deepseek
    driver: openai-compat
    base_url: https://api.deepseek.com/v1
    default_model: deepseek-chat
    api_key_env: DEEPSEEK_API_KEY

字段

字段类型描述
versionstring配置格式版本("1"
default_providerstring未指定时的默认提供商(默认:deepseek
providers[].namestring提供商名称,映射到 /dev/llm/<name>
providers[].driverstring驱动类型:claude-clicursor-cliopenai-compat
providers[].commandstringCLI 驱动器的二进制名称覆盖
providers[].default_modelstring默认模型名称
providers[].base_urlstringAPI 基础 URL(用于 openai-compat 驱动)
providers[].api_key_envstringAPI 密钥的环境变量名

驱动类型

驱动工作原理示例
claude-cli调用 Claude Code CLI(claude -pAnthropic Claude
cursor-cli调用 Cursor CLI(agent --printCursor
openai-compat调用 OpenAI 兼容 HTTP APIOllama、Groq、DeepSeek 等

API 密钥管理

API 密钥通过环境变量引用——绝不直接存储在配置文件中。优先从项目 .env 文件解析,再回退到 daemon 进程环境。


web-search.yaml — Web 搜索后端

配置 /dev/web 设备的搜索后端。位于 ~/.config/rnix/web-search.yaml(全局)或 .rnix/web-search.yaml(项目,优先)。

yaml
version: "1"
default_backend: tavily
backends:
  - name: tavily
    driver: tavily
    api_key_env: TAVILY_API_KEY
    max_results: 5
    search_depth: basic

  - name: exa
    driver: exa
    api_key_env: EXA_API_KEY
    num_results: 5

  - name: local-searxng
    driver: searxng
    base_url: http://localhost:8888

项目文件完全覆盖全局文件(不合并)。详见 Web 搜索


环境文件(.env)

Rnix 支持项目级 .env 文件,用于管理 API 密钥等环境变量,而不会污染 daemon 的进程环境。

加载顺序

  1. .env — 基础环境
  2. .env.local — 本地覆盖(应加入 .gitignore)
  3. .env.{RNIX_ENV} — 环境特定(如 .env.production
  4. .env.{RNIX_ENV}.local — 环境特定的本地覆盖

RNIX_ENV

RNIX_ENV 环境变量选择要加载的环境文件集。默认:development

项目隔离

每次 spawn 请求会从 .env 文件生成独立的环境快照。变量写入 os.Setenv——不同项目的环境完全隔离,即使共享同一 daemon。


init.yaml — 启动服务

定义 daemon 启动时自动运行的服务。位于 .rnix/init.yaml

yaml
version: "1.0"

services:
  health-monitor:
    intent: "Monitor system health and report anomalies"
    agent: "monitor"
    restart: always
    max_restarts: 3

  code-watcher:
    intent: "Watch for file changes and trigger analysis"
    agent: "watcher"
    restart: on-failure
    depends_on:
      - health-monitor

服务字段

字段类型默认值描述
intentstring必填服务的 intent 字符串
agentstring""命名的 agent 定义(空 = 通用)
restartstring"no"重启策略:noalwayson-failure
max_restartsint3最大重启次数
depends_on[]string[]必须先启动的服务

compose.yaml — 多 Agent 工作流

Compose 文件定义基于 DAG 的多 agent 工作流。位于 .rnix/compose.yaml

yaml
version: "1.0"
intent: "Code review workflow"
model: "deepseek-v4-flash"

agents:
  analyzer:
    intent: "Analyze kernel/kernel.go code quality"
    agent: "code-analyst"

  doc-gen:
    intent: "Generate improvement documentation"
    depends_on:
      analyzer: completed

  checker:
    intent: "Verify analysis and documentation quality"
    depends_on:
      doc-gen: completed

运行 Compose 工作流

bash
rnix compose up          # 运行工作流
rnix compose up --json   # JSON 输出
rnix compose down        # 停止所有 compose 进程
rnix compose resume --node <name>  # 恢复失败的 DAG 节点

Agent 清单 — agent.yaml

每个 Agent 由 agents/<name>/ 目录下的 agent.yamlinstructions.md 文件定义(全局:~/.config/rnix/agents/,项目:.rnix/agents/)。

yaml
name: code-analyst
description: "Code quality analysis agent"
models:
  provider: deepseek
  preferred: deepseek-v4-flash
  fallback: deepseek-v4-pro
max_steps: 20
max_tokens: 50000
skills:
  - code-analysis
  - security-scan
mcp:
  servers:
    github:
      command: "npx"
      args: ["-y", "@anthropic/mcp-github"]
      env:
        GITHUB_TOKEN: "${GITHUB_TOKEN}"
      timeout: 30s
      max_output_tokens: 4096

字段

字段类型必填描述
namestring唯一 agent 标识
descriptionstring可读描述
modelsobjectLLM 模型偏好
models.providerstringLLM 提供商名称
models.preferredstring首选模型
models.fallbackstring回退模型
context_budgetint单步上下文窗口守卫:单次 LLM 调用允许的最大输入 token 数。超限时进程自暂停(退出码 3, context_full),可通过 resume 恢复。0 = 自动推导为 context_window × 0.9;显式设置的值会截断为 min(budget, context_window)
max_stepsint最大推理步数(0 = 默认 10)
max_tokensint最大总 token 数(0 = 无限制)
skills[]string引用的 skill 名称
mcpobjectMCP 服务器配置

MCP 服务器配置字段

字段类型必填描述
commandstring启动 MCP 服务器的可执行文件
args[]string命令行参数
envmap[string]string环境变量(支持 ${VAR} 展开)
timeoutduration每服务器超时(默认:30s
max_output_tokensint每工具输出的最大 token 数

Skill 定义 — SKILL.md

Skill 遵循 agentskills.io 标准,使用 YAML frontmatter + Markdown 正文。存储采用四路径模型(project/user × native/agents namespace):

路径ScopeNamespace优先级
<project>/.rnix/skills/projectnative1(最高)
<project>/.agents/skills/projectagents2
~/.config/rnix/skills/usernative3
~/.agents/skills/useragents4(最低)

详见 Skill 包管理

markdown
---
name: code-analysis
description: >
  分析代码质量,识别 bug、性能问题和安全漏洞。
allowed-tools: /dev/fs /dev/shell /dev/web
metadata:
  author: rnix
  version: "1.0"
  tags: "code, quality"
---

# 代码分析

## 使用场景
...

## 工作流程
1. 通过 /dev/fs 读取源文件
2. 通过 /dev/shell 运行分析
3. 生成报告

allowed-tools 与安全

allowed-tools 字段是 Rnix 权限模型的核心。skill 只能访问此处列出的 VFS 设备:

设备能力
/dev/fs主机文件系统读写
/dev/shellShell 命令执行
/dev/llm/<provider>LLM 推理
/dev/webWeb 搜索和页面抓取
/mnt/mcp/*MCP 服务器工具

多个 skill 的 allowed-tools并集。空 allowed-tools 表示无限制(可访问所有设备)。


环境变量

变量描述
RNIX_ENV选择 .env 文件加载环境(默认:development
RNIX_ASCII设为 1 强制 ASCII 模式(禁用 Unicode)
RNIX_FEATURE_PROFILE特性档案覆盖:baselinecoreadaptivefullcustom
XDG_CONFIG_HOME覆盖全局配置目录(默认:~/.config
XDG_RUNTIME_DIR用于确定 socket 路径
TAVILY_API_KEYTavily 搜索 API 密钥(/dev/web 自动检测)
EXA_API_KEYExa 搜索 API 密钥(/dev/web 自动检测)
RNIX_SEARCH_URLSearXNG 实例 URL(/dev/web 自动检测)

Socket 路径

Daemon socket 位置优先级:

  1. $XDG_RUNTIME_DIR/rnix/rnix.sock
  2. /tmp/rnix-{uid}/rnix.sock(回退)

目录权限:0700(仅当前用户)。


相关文档

Released under the MIT License.