ReMe/docs/en/configuration.md
imrewce 354837f9af
feat(proactive): separate proactive refresh from auto dream (#488)
* refractor(proactive): upgrade proactive feature with disentangled job and steps

* refactor(proactive): apply audit fixes

- rename read-side job 'proactive' -> 'proactive_read' (less confusing vs the refresh pipeline)
- drop dedicated agent_wrapper.proactive; extraction reuses the default wrapper
- simplify schema: remove unused ProactiveExtractOutput/TopicUpdate, drop resource_paths
- extract no longer scans resource/ directly (daily notes already carry resource content)
- update tests and docs accordingly

* feat(proactive): strict extract-output gate and prompt total budget

- parse_extract_reply now requires a contract section (follow_ups/extends/updates
  as a list); non-empty replies with misspelled section names trigger the
  existing one-shot retry instead of silently checkpointing changed files
- pack_paths gains max_total_chars; extract packs newest daily material first,
  keeps the first file on overflow, and records omitted files in a trailer
  (default budget 300000 chars, configurable via max_total_chars)
- tests: schema gate unit, schema-error retry e2e, budget unit + e2e

* feat(proactive): add scenario-card plan step and generative agenda step

* feat(proactive): digest-personal profile personalization and leaner LLM contract

- extract/plan/agenda now draw a user profile block from <digest_dir>/personal/*.md
  (frontmatter description + body excerpt, per-file budget, profile.md fallback)
- all daily access honours the configured daily_dir (prompt paths parameterized,
  config-driven fallbacks) so workspaces using e.g. memory/ work unchanged
- schema trim: drop dead fields errors/material_paths, carry_forward_all -> count
- shrink LLM output contract: new topics emit title/reason/confidence/paths only;
  keywords removed end-to-end, evidence derived from paths[0] (updates keep it)

* fix(proactive): skip checkpoint when extract reply stays unusable after retry

Two consecutive unparseable replies now short-circuit the round without
checkpointing, so the same material is retried next round instead of being
silently consumed (closes the residual audit #1 gap: the structural gate
detected schema-wrong output but a double failure still checkpointed).

* fix(proactive): replace running bool with reference-counted job activity tracker for the idle gate

* refactor(proactive): remove job activity tracking and idle gate, restore job tree to upstream

* fix(proactive): address second audit round (readonly reader, mtime checkpoint, wider fallbacks, profile containment, horizon content, expiry boundary)

* refactor(dream): strip interests.yaml ownership from dream, proactive is now the sole writer

* refactor(dream): separate proactive topic generation

* ci: update renamed auto dream smoke test

* fix(proactive): complete refresh migration and docs

---------

Co-authored-by: jinli.yl <jinli.yl@alibaba-inc.com>
2026-09-07 17:23:37 +08:00

4.9 KiB

title description
Configuration ReMe configuration files, environment expansion, command-line overrides, and core components.

Configuration

ReMe uses YAML or JSON to describe its Service, Jobs, and Components. The built-in default is reme/config/default.yaml. Select another configuration at startup and apply command-line overrides when needed.

Precedence

Configuration is merged in this order, with later values winning:

  1. application_defaults from enabled plugins.
  2. The selected file; default is used when none is specified.
  3. CLI dot-notation overrides.
reme start
reme start config=demo
reme start config=/absolute/path/to/app.yaml
reme start service.port=8181 workspace_dir=/data/reme

config accepts a built-in name or a .yaml, .yml, or .json file. Overrides are deep-merged, so changing service.port preserves sibling service settings.

CLI values

Arguments use key=value; leading - or -- is accepted:

reme start --service.port=8181 --service.web_enabled=false

Values support null, booleans, numbers, JSON arrays and objects, quoted JSON strings, and plain strings. Numeric-looking values with leading zeroes, such as 007, remain strings. Quote values such as "true" in JSON when they must remain strings.

Environment variables

Configuration recursively expands:

api_key: ${LLM_API_KEY}
base_url: ${LLM_BASE_URL:-https://example.com/v1}

${VAR} fails when undefined; ${VAR:-default} uses its fallback. ReMe also searches for .env from the command's working directory through at most five parents.

Keep secrets in .env or the process environment, never in committed configuration.

Application fields

Field Default Purpose
app_name ReMe Display name
workspace_dir .reme User-owned workspace root, normalized to an absolute path
metadata_dir metadata Rebuildable indexes, graphs, and catalogs
session_dir session Agent sessions; standard transcripts use session/dialog
mem_session_dir mem_session Agent-wrapper sessions and configuration
resource_dir resource External resources
daily_dir daily Daily memory
digest_dir digest Consolidated long-term memory
timezone Asia/Shanghai IANA timezone used for dates and cron jobs
language empty Default language for LLM interactions
plugins [] Installed plugins enabled for this Application
service HTTP Service configuration
jobs default Jobs Job configurations by name
components defaults Components grouped by type and name

session_dir must remain workspace-relative.

LLM

The default LLM uses an OpenAI-compatible interface:

components:
  as_llm:
    default:
      backend: openai
      model: qwen3.7-plus
      context_size: 200000
      credential:
        api_key: ${LLM_API_KEY:-}
        base_url: ${LLM_BASE_URL:-}

Built-in registrations include openai, anthropic, dashscope, deepseek, gemini, moonshot, ollama, and xai. Their detailed model fields follow the corresponding AgentScope wrappers.

File operations, BM25 search, wikilink traversal, and proactive_read do not require an LLM. Evolution workflows such as auto_memory, auto_resource, auto_dream, and proactive refresh do.

Embeddings

Vector retrieval is disabled by default. Credentials alone do not enable it: configure as_embedding, embedding_store, and connect the store to file_store.

components:
  as_embedding:
    default:
      backend: openai
      model: text-embedding-v4
      dimensions: 1024
      credential:
        api_key: ${EMBEDDING_API_KEY}
        base_url: ${EMBEDDING_BASE_URL:-https://dashscope.aliyuncs.com/compatible-mode/v1}
  embedding_store:
    default:
      backend: local
      as_embedding: default
  file_store:
    default:
      backend: local
      embedding_store: default
      keyword_index: default
      file_graph: default

Rebuild the embedding index after changing the model or dimensions.

Service and Jobs

Minimal HTTP configuration:

service:
  backend: http
  host: 127.0.0.1
  port: 2333
  web_enabled: true
  mcp_enabled: true
  mcp_path: /mcp

A Job declares a backend, parameter schema, and ordered Steps:

jobs:
  example:
    backend: base
    description: Example job
    parameters:
      type: object
      properties:
        text: { type: string }
      required: [text]
    steps:
      - backend: example_step

Set enable_serve: false to keep a Job internal. Background and cron Jobs are never service-exposed.

Inspect the effective configuration

reme app_config

The result is the merged, validated configuration with secrets redacted. Use it when diagnosing plugin or override precedence. The authoritative contracts remain reme/schema/application_config.py and reme/config/default.yaml.