| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- # Reasonix configuration.
- # Resolution order: flag > ./reasonix.toml > ~/.config/reasonix/config.toml > built-in defaults.
- # Secrets come from the environment via api_key_env; never put keys here.
- default_model = "deepseek-flash"
- language = "zh" # ui/model language; empty = auto-detect from $LANG / $REASONIX_LANG
- [ui]
- theme = "auto" # auto|dark|light; CLI colors only; REASONIX_THEME can override per run
- # theme_style = "graphite" # graphite|ember|aurora|midnight|sandstone|porcelain|linen|glacier
- [network]
- proxy_mode = "auto" # auto|env|custom|off; auto currently uses env proxy
- # proxy_url = "socks5://127.0.0.1:7890" # optional custom override
- # no_proxy = "localhost,127.0.0.1,.local" # honored for proxy_mode = "custom"
- [network.proxy]
- type = "socks5" # http|https|socks5|socks5h
- # server = "127.0.0.1"
- # port = 7890
- # username = ""
- # password = "${REASONIX_PROXY_PASSWORD}" # optional; supports ${VAR} expansion
- [agent]
- system_prompt = """
- You are Reasonix, a coding agent focused on executing code tasks.
- Use the provided tools to read and write files and run shell commands.
- Principles: understand the request before acting; verify with tools instead of
- guessing; keep changes minimal and correct; briefly summarize what you did.
- When the request leaves a real choice to the user — which approach or library,
- the scope, or a consequential or ambiguous decision — call the ask tool to offer
- 2-4 concrete options rather than guessing or burying the question in prose. Skip
- it when there's an obvious default; don't ask just to confirm.
- For multi-step work, track progress with the todo_write tool: lay out the steps,
- keep exactly one in_progress, and flip each to completed as you finish it — update
- the list as you go, not just at the end.
- In plan mode the harness blocks writer tools: do read-only research, then write a
- concise plan as your reply and stop. The user is asked to approve before anything
- is changed; once approved, work through the steps, updating the task list as you go."""
- # system_prompt_file = "prompts/system.md" # overrides system_prompt when set
- max_steps = 0
- temperature = 0.0
- auto_plan = "ask" # off|ask|on; ask/on auto-enter plan mode for complex tasks
- # auto_plan_classifier = "deepseek-flash" # optional; only used for borderline tasks
- # planner_model = "mimo" # optional: enable two-model collaboration
- # subagent_model = "deepseek-pro" # optional default for runAs=subagent skills
- # subagent_models = { review = "deepseek-pro", security_review = "deepseek-pro" } # per-skill overrides
- # output_style = "explanatory" # explanatory | learning | concise | custom; empty = default
- [[providers]]
- name = "deepseek-flash"
- kind = "openai"
- base_url = "https://api.deepseek.com"
- models = ["deepseek-v4-flash"]
- default = "deepseek-v4-flash"
- api_key_env = "DEEPSEEK_API_KEY"
- balance_url = "https://api.deepseek.com/user/balance" # optional; wallet-balance endpoint shown in the status bar
- context_window = 1000000 # tokens; compaction triggers near this limit
- price = { cache_hit = 0.02, input = 1, output = 2, currency = "¥" } # per 1M tokens
- [tools]
- enabled = [] # empty = all built-in tools
- [skills]
- # paths = ["~/my-skills", "../shared/skills"] # extra custom skill roots
- [permissions]
- # Per-call gating. mode = writer fallback when no rule matches: ask|allow|deny.
- # Readers always default to allow. Precedence: deny > ask > allow > fallback.
- # Rules are "ToolName" or "ToolName(glob)"; '*' matches any run, '?' one char.
- mode = "ask"
- # deny = ["bash(rm -rf*)", "bash(git push*)"] # hard-blocked in every mode
- # allow = ["bash(go test*)", "bash(git status*)"] # never prompted
- # ask = ["write_file"] # force a prompt even if otherwise allowed
- [sandbox]
- # Confine tool blast radius. File-writers (write_file/edit_file/multi_edit)
- # may only write under workspace_root (empty = current dir) + allow_write.
- # bash = "enforce" (default) jails each command in an OS sandbox (macOS now;
- # graceful fallback elsewhere); "off" disables it. network allows egress.
- # workspace_root = "" # default: current working directory
- # allow_write = ["/tmp"] # extra dirs writers may also modify
- bash = "enforce"
- network = true
- [statusline]
- # A custom status line: a command whose first stdout line replaces the built-in
- # data row. It receives {"model","contextUsed","contextWindow"} as JSON on stdin.
- # command = "my-statusline.sh"
- # External MCP servers. type: "stdio" (default, a subprocess) | "http" | "sse".
- # ${VAR} / ${VAR:-default} are expanded from the environment in command/args/env/url/headers.
- # [[plugins]]
- # name = "example"
- # command = "reasonix-plugin-example"
- # [[plugins]] # a remote server over Streamable HTTP
- # name = "stripe"
- # type = "http"
- # url = "https://mcp.stripe.com"
- # headers = { Authorization = "Bearer ${STRIPE_KEY}" }
|