Handler-moduser (internal/external/paused), chat-ID, scripts, start/stopp-prosedyrer, feilsøking. Alt en ny sesjon trenger for å starte polling uten forkunnskaper. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
3.5 KiB
3.5 KiB
Claude Code polling — chat-integrasjon
Oversikt
Claude Code (denne terminalen) kan svare på meldinger i
Synops-chatten ved å polle for deferred jobber. Maskinrommet
ruter meldinger basert på handler_mode i agent_identities.
Forutsetninger
- Claude Code kjører i tmux-sesjon på serveren
- Maskinrommet kjører (
systemctl status maskinrommet) - PostgreSQL kjører (Docker)
Handler-moduser
Sett med:
UPDATE agent_identities SET handler_mode = '<modus>' WHERE agent_key = 'claude-main';
| Modus | Oppførsel |
|---|---|
internal |
Maskinrommet kjører synops-respond (eksternt API). Standard. |
external |
Jobb deferred → Claude Code poller og svarer. |
paused |
Maskinrommet svarer "AI utilgjengelig". Ingen AI-kall. |
Claude Code chat
- Chat-ID:
abe2edfd-986b-45ba-8c2e-4461a8a7e480 - Tittel: "Claude Code"
- Deltakere: Vegard + Claude Code agent
- URL:
https://ws.synops.no/chat/abe2edfd-986b-45ba-8c2e-4461a8a7e480
Starte polling
1. Sett handler_mode til external
docker exec sidelinja-postgres-1 psql -U sidelinja -d synops -c "
UPDATE agent_identities SET handler_mode = 'external', is_active = true
WHERE agent_key = 'claude-main';
"
2. Start polling i Claude Code
Si til Claude Code:
Start vaktmester-polling. Sjekk for deferred jobber hvert minutt. Poll med:
/home/vegard/synops/scripts/vaktmester-poll.shSvar med:/home/vegard/synops/scripts/chat-reply.sh <chat-id> "<svar>"Marker ferdig:/home/vegard/synops/scripts/vaktmester-complete.sh <job-id>Chat-ID: abe2edfd-986b-45ba-8c2e-4461a8a7e480
Eller bruk /loop 1m vaktmester-poll for automatisk polling.
3. Flyten
Bruker skriver i chat
→ Maskinrommet: create_node + agent_respond jobb
→ Handler: handler_mode=external → status='deferred'
→ Claude Code poller: finner deferred jobb
→ Leser melding fra payload
→ Behandler (svarer, utfører kommandoer, etc.)
→ Skriver svar: scripts/chat-reply.sh
→ Markerer done: scripts/vaktmester-complete.sh
Stoppe polling
Tilbake til eksternt API
docker exec sidelinja-postgres-1 psql -U sidelinja -d synops -c "
UPDATE agent_identities SET handler_mode = 'internal'
WHERE agent_key = 'claude-main';
"
Pause (ingen AI)
docker exec sidelinja-postgres-1 psql -U sidelinja -d synops -c "
UPDATE agent_identities SET handler_mode = 'paused'
WHERE agent_key = 'claude-main';
"
Scripts
| Script | Funksjon |
|---|---|
scripts/vaktmester-poll.sh |
Returner JSON med eldste deferred jobb, eller "none" |
scripts/chat-reply.sh <chat-id> "<melding>" |
Skriv melding som Claude Code med access-propagering |
scripts/vaktmester-complete.sh <job-id> |
Marker jobb som completed |
Feilsøking
Jobber forblir deferred for lenge:
# Sjekk deferred jobber
docker exec sidelinja-postgres-1 psql -U sidelinja -d synops -c "
SELECT id, created_at FROM job_queue WHERE status = 'deferred' ORDER BY created_at;
"
Bytt tilbake til internal hvis Claude Code er nede:
docker exec sidelinja-postgres-1 psql -U sidelinja -d synops -c "
UPDATE agent_identities SET handler_mode = 'internal' WHERE agent_key = 'claude-main';
UPDATE job_queue SET status = 'pending' WHERE status = 'deferred' AND job_type = 'agent_respond';
"
Sjekk handler_mode:
docker exec sidelinja-postgres-1 psql -U sidelinja -d synops -c "
SELECT agent_key, handler_mode, is_active FROM agent_identities;
"