chahinebrini 6fa94116a4 fix(hub): offene Asks sichtbar machen + Erinnerungsflut stoppen (TSK-0406)
Am 09.08. stellte sich heraus, dass fuenf Asks auf pending standen, zwei
seit einer Woche. Vier Agenten waren blockiert — darunter einer, der einen
fertigen Windows-Build fuer einen externen Tester nicht ausliefern durfte.
Der Architekt hat die ganze Zeit das Board gepollt und nichts davon gesehen.
Aufgefallen ist es nur, weil ein Agent den Stau selbst benannt hat.

TEIL 1 — SICHTBARKEIT (Umsetzung: codex)
Asks sind ein eigener, BLOCKIERENDER Kanal, den keine der Oberflaechen
erwaehnte, die ein Architekt regelmaessig ansieht:
- core/status.ts nennt jetzt Anzahl, IDs und Alter des aeltesten Asks.
  Das Alter ist der eigentliche Alarm: "einer offen" ist normal,
  "seit sechs Tagen offen" ist ein Notfall.
- /health liefert pendingAsks + oldestAskAgeSec — der billigste Statuscheck
  des Architekten; was dort nicht steht, existiert fuer ihn nicht.
- Der Watchdog kannte Asks gar nicht. Er meldete brav "silent for 16m",
  also das Symptom, waehrend die Ursache unsichtbar blieb. Jetzt alarmiert
  er bei ueberfaelligen Asks mit steigender Dringlichkeit, und die
  irrefuehrende "silent"-Meldung wird bei einem offenen Ask ersetzt durch
  "wartet seit Xh auf ASK-NNNN — bitte antworten, nicht neu starten".
  Genau diese Verwechslung fuehrte dazu, dass wartende Agenten fuer tot
  gehalten und ihre Sessions neu gestartet wurden.
- watch --await-ask weckt den Architekten bei neuen Asks (mit --new-only).
- Das Board zeigt offene Asks mit Alter und wartendem Agenten.

TEIL 2 — DIE FLUT (Umsetzung: claude)
Der Watchdog erinnerte einen nicht beanspruchten Task unbegrenzt im
Basisintervall weiter — auch an Agenten, von denen er WUSSTE, dass sie
nicht im work-Loop sind. Ergebnis: ueber 1500 ungelesene Nachrichten fuer
einen einzigen Agenten, dessen Loop daran nicht mehr anlief. Ein Alarm,
der den Empfaenger handlungsunfaehig macht, ist schlimmer als kein Alarm.
- Ist der Assignee nachweislich aus dem Loop ausgestiegen (nicht: nie
  gesehen), wird KEINE Erinnerung mehr in sein Postfach geschrieben.
  Eine Nachricht ist ein dauerhaftes Artefakt; in ein Postfach zu
  schreiben, das niemand liest, baut nur den Rueckstau auf, der spaeter
  seinen eigenen Loop blockiert. Stattdessen genau EIN Hinweis an den
  Architekten — ein Session-Neustart ist eine menschliche Entscheidung.
- Das ephemere SSE-Reemit bleibt in beiden Zweigen: es kostet nichts und
  erreicht womoeglich einen Agenten, der gerade neu verbindet.
- Fuer erreichbare Agenten waechst der Abstand exponentiell (Basis x 2^n,
  gedeckelt bei 8x) statt konstant zu bleiben.
- Der Zaehler wird zurueckgesetzt, sobald der Task beansprucht wird, damit
  ein spaeteres Reopen nicht in einem halb stummgeschalteten Zustand
  startet.

Der bestehende Test "does not spam" pruefte, dass nach erneutem Ablauf der
BASIS-Schwelle eine zweite Erinnerung kommt — also genau das Verhalten,
das die Flut erzeugt hat. Er ist auf den Backoff angepasst; seine Absicht
(Anti-Spam) gilt jetzt ueber die Lebensdauer eines Tasks statt nur ueber
ein Cooldown-Fenster.

316 Tests gruen, tsc --noEmit sauber.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-09 12:29:09 +02:00
2026-06-24 23:24:57 +02:00
2026-06-24 23:24:57 +02:00

AgentHub

Local coordination layer for AI coding agents.

Install

AgentHub is not yet published to npm. Clone the repository, build it, and link it globally:

git clone https://git.rebreak.org/chahine/agenthub.git
cd agenthub
pnpm install
pnpm build
npm link

After npm link, the agenthub command is available everywhere.

Quick Start

agenthub init
agenthub task create --title "Implement DNS cache" --role implementer
agenthub handoff create --fromRole architect --toRole implementer
agenthub status --update

Supported Agents

  • Claude Code
  • Codex CLI
  • Kimi Code CLI

Network Mode

AgentHub can expose a project to other machines on the same network. Discovery is automatic: as soon as the host broadcasts, a client can find it without knowing the IP address.

On the host machine (e.g. Mac):

cd my-project
agenthub init
agenthub server start --host 0.0.0.0 --port 3377

On another machine (e.g. Windows) run init and accept the discovered server:

cd my-project
agenthub init          # asks to connect to the LAN server it found
agenthub task create --title "Windows task" --role implementer
agenthub status

For non-interactive setup, let init discover the server automatically:

agenthub init --server auto

After init, every command automatically talks to the configured server. You can still override it per command with --server http://<ip>:3377 or via the AGENTHUB_SERVER environment variable.

The init --server step only stores the server URL locally; it does not create a second project. The host machine keeps the single source of truth.

License

MIT

Description
No description provided
Readme 1.7 MiB
Languages
TypeScript 99%
PowerShell 1%