83 lines
3.6 KiB
TOML
83 lines
3.6 KiB
TOML
# werkrevisor host config for reviewing werkrevisor itself on git.javagil.de.
|
|
# It holds only what the host decides: model, prices, budget, gate, engine and the classifier endpoint.
|
|
# The review rules of the repository are in .werkrevisor.toml at the repository root.
|
|
# A PR that changes this file is still reviewed with the deployed copy; Werkator passes it in WERKREVISOR_CONFIG_TOML.
|
|
|
|
[model]
|
|
# An economy model suffices, since Jev decides and the model only advises (PR#40):
|
|
# on 4 heads with 10 known findings, MiniMax M3 found as many as Sonnet 5.5 for a tenth of the cost, but needs minutes.
|
|
id = "openrouter/minimax/minimax-m3"
|
|
# Operator-maintained prices in USD per 1M tokens.
|
|
input_price_usd_per_mtok = 0.30
|
|
output_price_usd_per_mtok = 1.20
|
|
# Longer prompts degrade the review even within the context window.
|
|
max_context_tokens = 150000
|
|
# Includes reasoning tokens: MiniMax M3 wrote up to 47050 in 211 reviews, and with 32000 it once answered nothing (PR#84).
|
|
max_output_tokens = 64000
|
|
# "low" and "none" missed a review on 1 of 4 heads each.
|
|
reasoning_effort = "medium"
|
|
# On 2026-10-08 some calls hung for over 700 s; the maker of the model first, others when it fails.
|
|
provider_order = ["minimax"]
|
|
# A call took up to 242 s; Werkator's ai-review build allows 15 minutes for 2 calls.
|
|
timeout_seconds = 300
|
|
max_retries = 1
|
|
# MiniMax reported at most 2 % more prompt tokens than o200k_base counted.
|
|
token_count_factor = 1.05
|
|
|
|
[budget]
|
|
# A review with 2 calls of 150000 input and 64000 output tokens costs at most about 0.24 USD.
|
|
max_usd_per_review = 0.25
|
|
min_key_remaining_usd = 0.50
|
|
|
|
[mechanical]
|
|
# A changed file whose every changed line is an import, a whitespace change or a rename does not go to the model.
|
|
# The built-in rules apply; .werkrevisor.toml may adjust them.
|
|
enabled = true
|
|
|
|
[gate]
|
|
# Branch protection requires one approval from {bot, human_reviewers}; see the README.
|
|
yellow_gate = "approval"
|
|
human_reviewers = ["mi"]
|
|
assessment_context = "ai-review/assessment"
|
|
# Only a PR whose title changed from "WIP: " to one without gets a review; the bot then schedules the merge,
|
|
# so a GREEN PR merges at once and a YELLOW or ORANGE one with the human approval.
|
|
require_wip_transition = true
|
|
automerge = true
|
|
|
|
[engine]
|
|
# "llm": the LLM review alone; "classifier": Jev alone, no LLM; "combined": Jev, then the LLM with Jev's hints.
|
|
mode = "combined"
|
|
# Jev decides with [path_judge] scope = "all"; the model only advises, so an economy model suffices.
|
|
model_role = "advises"
|
|
|
|
[classifier]
|
|
endpoint = "https://api.typesafe.ai/v1/systemone"
|
|
model = "jev-latest"
|
|
# Operator-maintained price in USD per 1M input tokens; Jev's output is free.
|
|
input_price_usd_per_mtok = 0.042
|
|
# Jev reads about 32000 tokens of state; a larger unit is not sent and makes the review YELLOW.
|
|
max_state_chars = 60000
|
|
max_units = 80
|
|
timeout_seconds = 20
|
|
|
|
[path_judge]
|
|
# Jev judges every changed file: only a change that touches security or weakens the checks waits for a human.
|
|
judge = "jev"
|
|
scope = "all"
|
|
|
|
[doc_check]
|
|
# Jev compares the diff of each changed file with the PR document; no economy model, the defaults suffice.
|
|
|
|
[excerpt]
|
|
# An economy model selects the lines of an excerpt; on 4 measured heads it never found less than the fixed window.
|
|
select = "model"
|
|
|
|
[diagrams]
|
|
# Measured on PR#117, PR#118, PR#122 and PR#123: Sonnet names the changed functions, GPT-6 Luna only rough boxes,
|
|
# and the graph documents of MiniMax M3 do not validate.
|
|
# Only PRs that a human reviews get them (skip_green), at about 0.10 to 0.20 USD per head.
|
|
enabled = true
|
|
model = "anthropic/claude-sonnet-5.5"
|
|
# Sonnet needed 18 to 43 s; 2 review calls of 300 s and 120 s here stay within the 15 minutes of the build.
|
|
timeout_seconds = 120
|