Files
selfheal-lab-gitops/vm/ai-env/ai.env
T
seon 2fd39a65df chore: ai image 2a2f91a (external responder requeues unanswered turns)
참고 측정 중 가져간 턴의 답이 오지 않으면 3분 뒤 새 토큰으로 다시 내주는 수정본.
반영은 진행 중 진단이 없는 틈에 make ai-sync 로 한다.
2026-10-16 22:22:59 +09:00

37 lines
2.8 KiB
Bash

# Non-secret settings of the AI VM (merged into /opt/selfheal/ai.env by apply.sh). Secrets never go here.
# Discord server "Selfheal Lab" (created 2026-10-08): approvals channel for layer-2 buttons, escalation channel for layer 3.
DISCORD_GUILD_ID=1557424985793101824
DISCORD_APPROVALS_CHANNEL_ID=1557425140302872698
DISCORD_ESCALATION_CHANNEL_ID=1557425282363691048
# optional: restrict button decisions to one role id (empty = any member of the server)
DISCORD_APPROVER_ROLE_ID=
# Discord message language of the hitl bot: en or ja (runbooks and prompt free text are written in Japanese)
HITL_LANG=ja
# experiment design 11.1: candidates gpt-6-astra / gpt-6.1-sol / gpt-6-luna (OpenAI model page 2026-10-08). luna for the first live checks and campaign (budget), compare with sol afterwards
# default when a campaign does not name a model. Since apps 53ff243 the harness passes the campaign's model on every /diagnose
# (console "model" field); ids starting with claude- go to the Claude Messages API (secret selfheal-anthropic-api-key).
OPENAI_MODEL=gpt-6.1-sol
EMBED_MODEL=text-embedding-3-small
# Claude API auth: Workload Identity Federation (platform.claude.com/docs/en/manage-claude/wif-providers/gcp). The four ids are
# not secrets; the agent exchanges this VM's Google identity token (service account selfheal-ai-vm, unique id 117534696004805578884)
# for a short-lived access token. Empty = federation off (then the key file selfheal-anthropic-api-key is used, if registered).
ANTHROPIC_FEDERATION_RULE_ID=fdrl_01NYa2DRXZMrWhqDC5uNP3Yy
ANTHROPIC_ORGANIZATION_ID=fc82f31f-51c4-4416-95f5-62584092e1bc
ANTHROPIC_SERVICE_ACCOUNT_ID=svac_01RMQAkUx4vD6X5scTxwmebU
ANTHROPIC_WORKSPACE_ID=wrkspc_0149qfHWmbEEBmEh4aL2vHjw
# external-* model ids (apps 2a2f91a, reference runs 2026-10-16): each loop turn is answered by a client outside the VM
# over the 127.0.0.1:8090 listener (compose EXTERNAL_ADDR). Deadlines: one diagnosis / one turn, seconds. The harness
# waits 26 minutes per /diagnose for these ids. Results are reference records, not rows of the model comparison.
EXTERNAL_DIAGNOSE_TIMEOUT_S=1500
EXTERNAL_TURN_TIMEOUT_S=1200
HARNESS_URL=http://10.20.0.11:8080
MIMIR_URL=http://10.20.0.10:9009/prometheus
LOKI_URL=http://10.20.0.10:3100
K8S_API=https://10.10.0.10:6443
# Jev gates (2026-10-08): off | shadow | enforce. shadow records TypeSafe System One answers (triage before the LLM, review after it)
# next to each diagnosis in ai.jev_shadow and in the harness diagnosis event without changing the disposition. enforce additionally
# downgrades a catalogue proposal to escalate when review.best_action disagrees with confidence >= 0.9 or target_valid < 0.5
# (campaign-2 report 3.3). Kept at shadow until the C-G1 re-run shows the rules catching a real misjudgement.
JEV_MODE=enforce
JEV_MODEL=jev-1.13.0