feat(discord-bridge): punte Discord -> Claude Code pe LXC 171
Implementeaza planul claude-master-plan-discord-bridge-20260830 (15 taskuri, 3 lane-uri paralele) — un bot subtire discord.py peste CLI-ul `claude`, cu proces persistent per fir alimentat pe stdin cu --input-format stream-json. Nucleu: runner (proces persistent + reaper 20min + respawn --resume), stream (parser tolerant), session_store (scriere atomica, lock per fir, detectare PID reuse, recovery), limits (max 4 procese, timeout tur, rate per user, plafon cost pe zi), render (un loop de editare per canal, interval adaptiv). Adaptor: allowlist guild/canal/user fail-closed cu respingerea webhook-urilor, comenzi !new/!cd/!model/!status/!stop/!cleanup, cost si model in subsolul fiecarui raspuns. Mesajul sosit in timpul unui tur devine steering, nu tur nou. Securitate: hook PreToolUse fail-closed care cere confirmare in Discord pentru operatiuni ireversibile, wrapper `infra` cu lista explicita de hosturi. Deny rules raman strat cosmetic, nu bariera (verificat: /usr/bin/ssh trece pe langa). Ops: alerte email pe conventia repo-ului, !cleanup pentru orfani, unit systemd user cu KillMode=control-group si limite de memorie, install.sh idempotent. Verificat: 275 teste fara retea/Discord/API (10.8s), identic cu si fara discord.py instalat; e2e pe CLI real confirma steering-ul mid-tur (mesaj la 6s intr-un tool call de 25s schimba raspunsul final). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01B29CApsP1JkSdjYaGaHpE7
This commit is contained in:
45
proxmox/lxc171-claude-agent/discord-bridge/ops/env.example
Normal file
45
proxmox/lxc171-claude-agent/discord-bridge/ops/env.example
Normal file
@@ -0,0 +1,45 @@
|
||||
# Configurarea puntii Discord -> Claude Code.
|
||||
#
|
||||
# install.sh copiaza acest fisier in ~/.claude-discord/env cu drepturi 0600.
|
||||
# Formatul e cel cerut de systemd EnvironmentFile: CHEIE=valoare, fara `export`,
|
||||
# fara ghilimele in jurul valorii, fara expandare de variabile.
|
||||
#
|
||||
# DUPA COPIERE COMPLETEAZA MANUAL cel putin DISCORD_TOKEN si allowlist-ul.
|
||||
|
||||
# --- Discord ---------------------------------------------------------------
|
||||
# Token-ul botului: Discord Developer Portal -> aplicatia ta -> Bot -> Reset Token.
|
||||
# Se vede o singura data. Daca ajunge in git, invalideaza-l imediat din portal.
|
||||
DISCORD_TOKEN=
|
||||
|
||||
# Allowlist. Liste separate prin virgula, cu ID-uri numerice (Discord -> Advanced ->
|
||||
# Developer Mode, apoi click dreapta -> Copy ID). Gol = nimic permis (fail-closed).
|
||||
DISCORD_GUILD_IDS=
|
||||
DISCORD_CHANNEL_IDS=
|
||||
DISCORD_USER_IDS=
|
||||
|
||||
# --- Model si cost ---------------------------------------------------------
|
||||
# Modelul implicit al firelor noi. `!model opus` il schimba per fir.
|
||||
CLAUDE_MODEL=sonnet
|
||||
# Plafon de cost pe zi, in USD. La atingere botul refuza tururi noi si alerteaza.
|
||||
# Reper masurat: un tur banal pe opus a costat $0.1547.
|
||||
COST_CAP_USD_DAY=5.00
|
||||
|
||||
# --- Limite ----------------------------------------------------------------
|
||||
# Maxim de procese `claude` vii simultan (406 MB RSS fiecare, masurat).
|
||||
MAX_LIVE_PROCESSES=4
|
||||
# Timeout per tur, secunde.
|
||||
TURN_TIMEOUT_S=900
|
||||
# Reaper: dupa cate secunde de inactivitate se opreste procesul unui fir.
|
||||
IDLE_REAP_S=1200
|
||||
# Cat asteapta hook-ul de confirmare o apasare pe Allow/Deny, secunde.
|
||||
# CONSTRANGERE: trebuie sa ramana MAI MIC decat `timeout` din bot-settings.json
|
||||
# (acum 330), altfel CLI-ul taie hook-ul inainte ca acesta sa refuze curat.
|
||||
CLAUDE_DISCORD_APPROVAL_TIMEOUT=300
|
||||
|
||||
# --- Alerte (alerts.py) ----------------------------------------------------
|
||||
# Destinatarul emailurilor de alerta. Aceeasi conventie ca restul repo-ului
|
||||
# (vezi proxmox/vm109-windows-dr/scripts/pveelite-down-alert.sh): default root.
|
||||
ALERT_RECIPIENT=root
|
||||
|
||||
# --- Directorul de lucru implicit -----------------------------------------
|
||||
DEFAULT_CWD=/workspace
|
||||
Reference in New Issue
Block a user