Docs: Claude Code polling — komplett oppsett og feilsøking
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>
This commit is contained in:
parent
956fbc124c
commit
7d0ccdfa06
1 changed files with 120 additions and 0 deletions
120
docs/infra/claude_code_polling.md
Normal file
120
docs/infra/claude_code_polling.md
Normal file
|
|
@ -0,0 +1,120 @@
|
||||||
|
# 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:
|
||||||
|
```sql
|
||||||
|
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
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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.sh`
|
||||||
|
> Svar 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
|
||||||
|
```bash
|
||||||
|
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)
|
||||||
|
```bash
|
||||||
|
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:**
|
||||||
|
```bash
|
||||||
|
# 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:**
|
||||||
|
```bash
|
||||||
|
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:**
|
||||||
|
```bash
|
||||||
|
docker exec sidelinja-postgres-1 psql -U sidelinja -d synops -c "
|
||||||
|
SELECT agent_key, handler_mode, is_active FROM agent_identities;
|
||||||
|
"
|
||||||
|
```
|
||||||
Loading…
Add table
Reference in a new issue