Configuration Manual

Complete reference for every configuration key in config.yaml. Structure follows the file layout.


Top-Level Keys

bots (required)

Map of bot IDs to bot configurations. Each key under bots is a bot ID used as the runtime identifier.

bots:
  engineering_bot:
    # bot config...
  support_bot:
    # bot config...

log_level

FieldValue
Typestring
Default"info"
Values"debug", "info", "warn", "error"

Structured log level for the entire process.

log_file

FieldValue
Typestring
Default"" (auto: <ALICE_HOME>/log/YYYY-MM-DD.log)

Log file path with daily rotation. Empty uses the default.

log_max_size_mb

FieldValue
Typeint
Default20

Maximum log file size in megabytes before rotation.

log_max_backups

FieldValue
Typeint
Default5

Maximum number of rotated log files to retain.

log_max_age_days

FieldValue
Typeint
Default7

Maximum days to keep rotated log files.

log_compress

FieldValue
Typebool
Defaultfalse

Whether to gzip rotated log files.


bots.<id>

Each bot is identified by its key and configured with the following fields.

name

FieldValue
Typestring
RequiredNo

Display name used in prompts and status cards. Defaults to the bot ID.

feishu_app_id (required)

FieldValue
Typestring
RequiredYes

Feishu Open Platform App ID (cli_...).

feishu_app_secret (required)

FieldValue
Typestring
RequiredYes

Feishu Open Platform App Secret. Keep this value secure.

feishu_base_url

FieldValue
Typestring
Default"https://open.feishu.cn"

Feishu API base URL. Use "https://open.larksuite.com" for Lark (international edition).


Runtime Directories

alice_home

FieldValue
Typestring
Default"<ALICE_HOME>/bots/<bot_id>"

Bot-specific runtime root directory. All per-bot state lives under this path.

workspace_dir

FieldValue
Typestring
Default"<alice_home>/workspace"

Agent workspace directory. This is the working directory for LLM subprocesses.

prompt_dir

FieldValue
Typestring
Default"<alice_home>/prompts"

Directory for bot-specific prompt template overrides. Files here override embedded templates.

codex_home

FieldValue
Typestring
Default"$CODEX_HOME" or "~/.codex"

Codex configuration and authentication directory. Shared across bots by default unless overridden here.

soul_path

FieldValue
Typestring
Default"SOUL.md" (relative to alice_home)

Path to the SOUL.md persona document. Relative paths resolve against alice_home. If the file doesn't exist at startup, Alice writes the embedded template.


Message Trigger (Legacy)

trigger_mode

FieldValue
Typestring
Default"at"
Values"at", "prefix", "all"

Legacy trigger mode. Only used when both group_scenes.chat.enabled and group_scenes.work.enabled are false.

ValueBehavior
"at"Only @bot messages accepted
"prefix"Only messages starting with trigger_prefix
"all"Every message accepted

trigger_prefix

FieldValue
Typestring
Default""

Prefix string for trigger_mode: "prefix".


llm_profiles

Map of profile names to LLM profile configurations. Each profile selects a provider, model, and settings.

Profile Fields

provider (required)
FieldValue
Typestring
Values"opencode", "codex", "claude", "gemini", "kimi"

LLM backend provider.

command
FieldValue
Typestring
DefaultSame as provider (e.g., "opencode")

Path or name of the CLI binary. Use an absolute path for binaries outside $PATH.

timeout_secs
FieldValue
Typeint
Default172800 (48 hours)

Per-run timeout in seconds.

model (required)
FieldValue
Typestring

Model identifier. Examples: "deepseek/deepseek-v4-pro", "gpt-5.4-mini", "claude-sonnet-4-6".

variant (OpenCode only)
FieldValue
Typestring
Values"max", "high", "minimal"

Model variant for DeepSeek models via OpenCode.

profile (Codex only)
FieldValue
Typestring

Named sub-profile from Codex CLI configuration.

reasoning_effort (Codex only)
FieldValue
Typestring
Values"low", "medium", "high", "xhigh"

Thinking intensity level.

personality (Codex only)
FieldValue
Typestring

Named personality preset from Codex CLI config.

prompt_prefix
FieldValue
Typestring
Default""

Text prepended to every prompt before sending to the model.

permissions
FieldValue
Typeobject

Sandbox and approval settings.

permissions.sandbox
FieldValue
Typestring
Default"workspace-write"
Values"read-only", "workspace-write", "danger-full-access"

Filesystem access level for the LLM agent.

permissions.ask_for_approval
FieldValue
Typestring
Default"never"
Values"untrusted", "on-request", "never"

When the agent should ask for approval before executing tool calls.

permissions.add_dirs
FieldValue
Typestring[]
Default[]

Extra directories accessible to the agent beyond the workspace.

profile_overrides
FieldValue
Typemap[string]ProfileRunnerConfig
Default{}

Advanced: per-profile runner overrides. Keys are profile names. Each override can set:

  • command — binary path override
  • timeout — timeout override (seconds)
  • provider_profile — provider-specific profile name
  • exec_policy — per-override sandbox and approval settings

env

FieldValue
Typemap[string]string
Default{}

Environment variables passed to all LLM subprocesses. Useful for PATH, proxy settings (HTTPS_PROXY, ALL_PROXY), and API keys.


Reply Messages

failure_message

FieldValue
Typestring
Default"暂时不可用,请稍后重试。"

Message shown when the LLM backend fails.

thinking_message

FieldValue
Typestring
Default"正在思考中..."

Message shown in the progress card while the LLM is processing.


Immediate Feedback

immediate_feedback_mode

FieldValue
Typestring
Default"reaction"
Values"reaction", "reply"

How Alice acknowledges a received message before the LLM responds.

immediate_feedback_reaction

FieldValue
Typestring
Default"OK"

Feishu emoji name for the reaction feedback (e.g., "OK", "WINK", "THUMBSUP").


group_scenes

group_scenes.chat

FieldValue
Typeobject

Chat scene configuration for group / topic-group chats.

enabled
FieldValue
Typebool
Defaulttrue
session_scope
FieldValue
Typestring
Default"per_chat"
Values"per_chat", "per_thread"
llm_profile
FieldValue
Typestring

Name of the LLM profile under llm_profiles to use.

no_reply_token
FieldValue
Typestring
Default""

If the model returns this exact string, Alice stays silent.

create_feishu_thread
FieldValue
Typebool
Defaultfalse

Whether to create a Feishu thread for replies.

group_scenes.work

FieldValue
Typeobject

Work scene configuration for group / topic-group chats.

enabled
FieldValue
Typebool
Defaulttrue
trigger_tag
FieldValue
Typestring
Default"#work"

Tag required in the message (after @bot mention) to trigger work mode.

session_scope
FieldValue
Typestring
Default"per_thread"
Values"per_thread", "per_chat"
llm_profile
FieldValue
Typestring
create_feishu_thread
FieldValue
Typebool
Defaulttrue
no_reply_token
FieldValue
Typestring
Default""

private_scenes

Same structure as group_scenes. Both chat and work sub-sections are disabled by default.

private_scenes.chat

Additional session scope: "per_user" — all DM messages from the same user share one session.

private_scenes.work

Additional session scope: "per_message" — each DM with #work creates a fresh session.


Runtime HTTP API

runtime_http_addr

FieldValue
Typestring
Default"127.0.0.1:7331"

Listen address for the runtime HTTP API. Multi-bot setups auto-increment the port (7332, 7333, ...).

runtime_http_token

FieldValue
Typestring
Defaultauto-generated

Bearer token for API authentication. Auto-generated if empty. Set explicitly for cross-process calls.


permissions

runtime_message

FieldValue
Typebool
Defaulttrue

Allow bundled skills to send messages via the runtime API.

runtime_automation

FieldValue
Typebool
Defaulttrue

Allow bundled skills to manage automation tasks via the runtime API.

allowed_skills

FieldValue
Typestring[]
Default["alice-message", "alice-scheduler"]

Bundled skills enabled for this bot. Built-in skills: alice-message, alice-scheduler, alice-goal.


Worker Pool

queue_capacity

FieldValue
Typeint
Default256

Maximum pending jobs. Beyond this, new messages are dropped.

worker_concurrency

FieldValue
Typeint
Default3

Number of concurrent workers processing jobs.


Timeouts

All values in seconds.

automation_task_timeout_secs

FieldValue
Typeint
Default6000

Outer timeout for scheduled automation and workflow runs.

auth_status_timeout_secs

FieldValue
Typeint
Default15

Timeout for provider auth status checks on startup.

runtime_api_shutdown_timeout_secs

FieldValue
Typeint
Default5

Grace period when shutting down the runtime HTTP API server.

local_runtime_store_open_timeout_secs

FieldValue
Typeint
Default10

Timeout for opening the local BoltDB runtime store on startup.

codex_idle_timeout_secs

FieldValue
Typeint
Default900

Codex idle timeout for default/medium reasoning effort.

codex_high_idle_timeout_secs

FieldValue
Typeint
Default1800

Codex idle timeout for high reasoning effort.

codex_xhigh_idle_timeout_secs

FieldValue
Typeint
Default3600

Codex idle timeout for xhigh reasoning effort.


Display Options

show_shell_commands

FieldValue
Typebool
Defaulttrue

Show recently executed shell commands in the heartbeat status card.

disable_identity_hints

FieldValue
Typebool
Defaultfalse

When true, messages are sent to the LLM as raw text without identity context (Name说:, @mention rules). When false (default), identity hints are included.