adapter.py importiert aus gateway.* — das ist der Hermes Agent, nicht dieses
Repo. Ohne dessen Quellcode auf dem PYTHONPATH bricht schon das Einsammeln der
Tests mit ModuleNotFoundError: No module named 'gateway' ab. Also den Hermes
Agent selbst herunterladen und bereitlegen, bevor du Tests ausführst:
git clone https://github.com/NousResearch/hermes-agent.git /tmp/hermes
PYTHONPATH=/tmp/hermes uv run --with pyyaml pytest -q
pyyaml wird von gateway.config gebraucht und steckt nicht in unseren
Dev-Dependencies. Liegt der Checkout schon irgendwo, den Pfad einfach
wiederverwenden statt neu zu klonen.
Erweiterst du die Fähigkeiten des Adapters, pflege das Startup-Banner mit.
Beim Registrieren loggt _capabilities() (in adapter.py), was das Plugin kann
— damit man beim Start sieht, was zur Verfügung steht, statt es aus dem Code
lesen zu müssen. Ob eine Fähigkeit als vorhanden gilt, wird aus echten Overrides
abgeleitet: sie zählt nur, wenn ChattoAdapter die Methode von
BasePlatformAdapter ersetzt. Das Label dazu steht aber in _CAPABILITY_LABELS
und wird nicht automatisch gefunden.
Beim Hinzufügen einer überschriebenen BasePlatformAdapter-Methode also:
_CAPABILITY_LABELS ergänzen (Methodenname → Bezeichnung, die für
jemanden ohne Codekenntnis Sinn ergibt). Ohne diesen Schritt kann das Plugin
die Sache zwar, sagt es aber nirgends.platform_hint in register() sie erwähnen muss. Der Hint
geht in den System-Prompt und ist das Einzige, woraus das Modell erfährt, was
der Kanal kann — fehlt der Hinweis, behilft sich der Agent mit der Shell.TestRegistration ergänzen, falls die Fähigkeit nutzerseitig sichtbar
ist.Umgekehrt gilt dasselbe: fällt eine Methode weg, verschwindet ihre Zeile von
selbst aus dem Log — der Eintrag in _CAPABILITY_LABELS sollte dann trotzdem
mit raus.
Always run shellcheck after editing any shell scripts.
shellcheck path/to/script.sh
Or validate all shell scripts in the project:
find . -name "*.sh" -exec shellcheck {} \;
Project-specific shellcheck rules are defined in .shellcheckrc. Default severity is error to catch all issues.
Consider adding a pre-commit hook for automatic validation:
# .pre-commit-config.yaml
repos:
- repo: https://github.com/koalaman/shellcheck-precommit
rev: v0.9.0
hooks:
- id: shellcheck
args: [--severity=error]