Skip to content

Application Configuration

application.conf is the main configuration file, located in the project conf/ directory.

LLM Configuration

General Settings

Key Description Allowed Values
llm.choice-provider Default AI provider openai / anthropic

Capability Declaration

Tells the framework which features the selected provider supports for each model tier. Top-level llm.capability.* switches are the default capabilities; lite, flash, and pro override the corresponding tier.

Key Description
llm.capability.completion Supports text completion
llm.capability.prompt-caching Supports prompt caching
llm.capability.temperature Supports temperature sampling
llm.capability.tools Supports function calling / tools
llm.capability.tool-choice Supports forced tool choice
llm.capability.multiple-choices Supports multiple candidates
llm.capability.thinking Supports thinking / reasoning mode
llm.capability.vision-image Supports image input
llm.capability.lite.* Capability overrides for the lite tier
llm.capability.flash.* Capability overrides for the flash tier
llm.capability.pro.* Capability overrides for the pro tier

Parameter Overrides

llm.param.lite, llm.param.flash, and llm.param.pro can be used to override default LLM parameters (such as temperature, maxTokens, etc.) for each model tier.

Providers

llm {
  choice-provider: "openai"

  providers {
    openai {
      api-key: ${?OPENAI_API_KEY}
      base-url: "https://api.openai.com/v1"
      models {
        lite: "gpt-4o-mini"
        flash: "gpt-4o"
        pro: "gpt-4.1"
      }
    }
  }
}

Models are organized in three tiers: lite, flash, pro. choice-provider sets the default provider.

Each provider supports the same set of keys: api-key, base-url, and models.{lite,flash,pro}.

Usage Pricing

Key Description
llm.usage-pricing.price-unit Pricing unit, e.g. USD
llm.usage-pricing.lite.input-cache-hit Lite cached input price
llm.usage-pricing.lite.input-cache-miss Lite uncached input price
llm.usage-pricing.lite.output Lite output price
llm.usage-pricing.flash.* Flash tier prices
llm.usage-pricing.pro.* Pro tier prices

State Tuning

Emotion

Key Description
state-tuning.emotion.emotion-retention-high High emotion retention rate
state-tuning.emotion.emotion-retention-medium Medium emotion retention rate
state-tuning.emotion.emotion-retention-low Low emotion retention rate
state-tuning.emotion.mood-retention Mood retention rate
state-tuning.emotion.mood-emotion-influence Mood influence on emotion
state-tuning.emotion.emotion-half-life-seconds Emotion half-life in seconds
state-tuning.emotion.mood-half-life-seconds Mood half-life in seconds

Flow

Key Description
state-tuning.flow.min-ratio-of-desire Minimum desire ratio
state-tuning.flow.min-value-min Minimum value lower bound
state-tuning.flow.min-value-max Minimum value upper bound
state-tuning.flow.decay-normal-per-minute Normal decay per minute
state-tuning.flow.decay-negative-per-minute Negative decay per minute
state-tuning.flow.core-interest-base-charge Core interest base charge
state-tuning.flow.continuous-interaction-base-charge Continuous interaction base charge
state-tuning.flow.deep-reply-base-charge Deep reply base charge
state-tuning.flow.group-resonance-base-charge Group resonance base charge
state-tuning.flow.negative-penalty Negative penalty
state-tuning.flow.topic-interrupt-penalty Topic interrupt penalty
state-tuning.flow.repeat-topic-penalty Repeat topic penalty
state-tuning.flow.low-activity-penalty Low activity penalty
state-tuning.flow.getting-better-threshold Getting-better threshold
state-tuning.flow.burst-threshold Burst threshold

Volition

Key Description
state-tuning.volition.base-desire-default Default base desire
state-tuning.volition.keyword-hit-max-stimulus Maximum keyword-hit stimulus
state-tuning.volition.busy-group-stimulus Busy group stimulus
state-tuning.volition.indirect-mention-stimulus Indirect mention stimulus
state-tuning.volition.emotional-resonance-stimulus Emotional resonance stimulus
state-tuning.volition.reset-stimulus-amount Reset stimulus amount
state-tuning.volition.fatigue-on-speak Fatigue on speaking
state-tuning.volition.fatigue-decay-low-arousal Fatigue decay at low arousal
state-tuning.volition.fatigue-decay-normal Normal fatigue decay
state-tuning.volition.stimulus-decay-normal Normal stimulus decay
state-tuning.volition.stimulus-decay-high-flow Stimulus decay at high flow
state-tuning.volition.normal-speak-threshold Normal speak threshold
state-tuning.volition.high-flow-speak-threshold High-flow speak threshold
state-tuning.volition.high-flow-threshold High-flow threshold
state-tuning.volition.arousal-impulse-weight Arousal impulse weight
state-tuning.volition.negative-pleasure-penalty-weight Negative pleasure penalty weight
state-tuning.volition.flow-bonus-start Flow bonus start value
state-tuning.volition.flow-bonus-weight Flow bonus weight

Memory

Key Description
state-tuning.memory.batch-limit Max messages per batch
state-tuning.memory.min-messages Minimum messages to trigger memory
state-tuning.memory.stale-recall-days Stale recall days

Summary

Key Description
state-tuning.summary.batch-limit Max messages per batch
state-tuning.summary.min-messages Minimum messages to trigger summary
state-tuning.summary.retention-days Summary retention days

Meme

Key Description
state-tuning.meme.analyze-threshold Required seen count to analyze
state-tuning.meme.max-contexts Max contexts to keep
state-tuning.meme.cleanup-days Cleanup unused memes after days
state-tuning.meme.low-heat-seen-threshold Low-heat seen threshold

Evolution

Key Description
state-tuning.evolution.default-weight Default weight
state-tuning.evolution.active-weight-threshold Active weight threshold
state-tuning.evolution.min-weight-threshold Minimum weight threshold
state-tuning.evolution.increase-on-use Weight increase on use
state-tuning.evolution.decay-per-cycle Decay per cycle
state-tuning.evolution.decrease-on-negative Weight decrease on negative feedback
state-tuning.evolution.stale-days Stale days
state-tuning.evolution.recent-range-hours Recent range in hours
state-tuning.evolution.recent-message-limit Recent message limit
state-tuning.evolution.active-limit Active word limit

OneBot Connection

Multiple bots can be configured under onebot.bots, each as a named block.

onebot {
  bots {
    erii {
      ws: "ws://127.0.0.1:3001"
      token: ${?NAPCAT_TOKEN}
      role-id: "erii"
      groups {
        123456789 {
          admins: []
          desire: 15
        }
      }
      enabled-plugins: []
      disabled-plugins: []
    }
  }
}

Bot Settings

Key Description
onebot.bots.<name>.ws Bot WebSocket address
onebot.bots.<name>.token Bot connection token
onebot.bots.<name>.role-id Bot persona ID

Group Settings

Key Description
onebot.bots.<name>.groups.<id>.admins Group admin QQ numbers
onebot.bots.<name>.groups.<id>.desire Group activity / desire level

Group Overrides

Key Description
onebot.bots.<name>.groups-override.enable-groups Override global group whitelist
onebot.bots.<name>.groups-override.debug-group-id Override global debug group
onebot.bots.<name>.groups-override.message-redirect-map Message redirect map, format source:target

Plugin Control

Key Description
onebot.bots.<name>.enabled-plugins Whitelist only specified plugins
onebot.bots.<name>.disabled-plugins Blacklist specified plugins

When both are present, the whitelist takes precedence.


Group Configuration

groups {
  enable-groups: []
  debug-group-id: null
  message-redirect-map: []
}
Key Description
groups.enable-groups Globally enabled group IDs
groups.debug-group-id Debug group ID
groups.message-redirect-map Message redirect rules, format source:target

Other Components

embedding {
  provider: "bytedance"
  api-key: ${?EMBEDDING_API_KEY}
  url: "https://ark.cn-beijing.volces.com/api/v3/embeddings/multimodal"
  model: "doubao-embedding-vision-251215"
}

search {
  provider: "exa"
  api-key: ${?SEARCH_API_KEY}
  url: "https://api.exa.ai/search"
}

vision {
  provider: "minimax"
  api-key: ${?VISION_API_KEY}
  url: "https://api.minimaxi.com/v1/coding_plan/vlm"
}

browser {
  download: false
  playwright-url: ${?PLAYWRIGHT_HOST}
  external-host: ${?EXTERNAL_HOST}
}

proxy {
  http: ${?HTTP_PROXY}
  socks: ${?SOCKS_PROXY}
}

Security

Configure the admin page username and password via environment variables. See Environment Variables.

Key Description
security.username Admin username
security.password Admin password