Claude Code orchestrace bez API – shrnutí konverzace
Datum: 2026-05-10 21:08
Téma: Jak využít Claude subscription bez Anthropic API a použít Claude Code jako externího agenta řízeného Hermesem.
1. Výchozí otázka
Zico řešil, jak využít Claude subscription bez použití API.
Závěr:
- Claude Pro/Max subscription není totéž co Anthropic API kredit.
- Hermes nemá používat Claude jako běžný API model provider.
- Praktická cesta je používat Claude Code CLI jako externího agenta.
- Hermes zůstává orchestrátor:
- připraví zadání,
- spustí Claude Code,
- přečte výsledek,
- ověří soubory,
- publikuje markdown výstupy.
2. Dohodnuté pravidlo
Zico výslovně nastavil pravidlo:
Nesmí se používat Claude / Anthropic API. Claude se má používat výhradně přes Claude Code přes subscription/OAuth. Hermes ho pouze orchestruje.
Toto bylo uloženo do paměti asistenta.
Prakticky to znamená:
env -u ANTHROPIC_API_KEY claude ...
Tím se zajistí, že i když je v prostředí nastavený ANTHROPIC_API_KEY, Claude Code ho v tomto orchestrace workflow nepoužije.
3. Ověření Claude Code setupu
Na VM bylo ověřeno:
claude --version
Výsledek:
2.1.136 (Claude Code)
Ověřeno také přihlášení:
claude auth status --text
Výsledek ukázal:
Login method: Claude Max account
Organization: zdenek.suchacek@gmail.com's Organization
Email: zdenek.suchacek@gmail.com
Tím bylo potvrzeno, že Claude Code běží přes Claude Max subscription/OAuth.
4. Vytvořený helper pro orchestrace
Byl vytvořen helper skript:
/home/vmubuntu/bin/claude-task
Použití:
claude-task /cesta/k/projektu "Zadání pro Claude Code" 10
Skript:
- přejde do zadaného pracovního adresáře,
- spustí Claude Code v print módu,
- vrací JSON výstup,
- omezuje počet turnů,
- explicitně odpojuje
ANTHROPIC_API_KEY, aby se nepoužilo API účtování.
Klíčová část:
exec env -u ANTHROPIC_API_KEY claude -p "$PROMPT" \
--output-format json \
--max-turns "$MAX_TURNS" \
--allowedTools "Read,Edit,Write,Bash(git *),Bash(npm *),Bash(python *),Bash(python3 *),Bash(pytest *),Bash(pip *),Bash(ls *),Bash(find *),Bash(grep *),Bash(cat *),Bash(make *)"
5. Test orchestrace
Proběhl test:
/home/vmubuntu/bin/claude-task /tmp/claude-sub-test 'Přečti input.txt a vytvoř result.txt ...' 5
Claude Code vytvořil soubor s větou:
Claude Code běží přes subscription orchestrace.
Tím bylo ověřeno workflow:
Hermes → Claude Code CLI → Claude Max subscription/OAuth → Hermes ověří výsledek
6. První praktický úkol: base class pro D365 pluginy
Zico zadal:
Orchestruj Claude Code vytvořit base class for D365 plugin implementation, výsledek jako markdown.
Claude Code vytvořil:
src/PluginBase.cssrc/ExampleAccountPlugin.csD365_PLUGIN_BASE_RESULT.md
Výsledek byl publikován:
Base class pro D365 / Dataverse plugin implementaci
Co base class obsahuje
PluginBase : IPluginLocalPluginContext- přístup k:
IPluginExecutionContext,IOrganizationServiceFactory,- user/admin
IOrganizationService, ITracingService- bezpečný tracing,
- validaci input parametrů,
- práci s Target entity/reference,
- práci s pre/post image,
- centrální exception handling přes
InvalidPluginExecutionException, - ukázkový plugin pro entitu
account.
Na základě připomínky byl markdown opraven tak, aby obsahoval vložený zdrojový kód přímo v markdownu, nejen odkazy na .cs soubory.
7. Druhý praktický úkol: AccountNumber required plugin
Zico zadal:
Plugin, který při post update account zkontroluje, zda-li je vyplněn accountnumber a pokud ne vyhodí výjimku
AccountNumber je povinný!
Claude Code vytvořil plugin:
AccountNumberRequiredPostUpdatePlugin.cs
Publikovaný markdown:
D365 plugin: AccountNumber povinný při Post Update account
Požadované chování
Plugin:
- běží na
Updateentityaccount, - doporučeně ve stage
PostOperation/40, synchronně, - kontroluje pole
accountnumber, - pokud hodnota chybí, je prázdná nebo obsahuje jen mezery, vyhodí:
AccountNumber je povinný!
Robustní čtení hodnoty
Protože v Post Update nemusí Target obsahovat nezměněný atribut accountnumber, plugin hledá hodnotu v pořadí:
Target, pokud přišel atribut v update payloadu,PostImage, pokud je registrovaný,Retrieveaktuálního account záznamu jako fallback.
Doporučená registrace
| Vlastnost | Hodnota |
|---|---|
| Message | Update |
| Primary Entity | account |
| Stage | PostOperation (40) |
| Execution Mode | Synchronous |
| Run in User Context | Calling User |
| Filtering Attributes | nechat prázdné, pokud má validace proběhnout při každém update accountu |
Doporučená Post Image:
| Vlastnost | Hodnota |
|---|---|
| Image Type | Post Image |
| Alias | PostImage |
| Attributes | accountnumber |
8. Důležité rozhodnutí při kontrole kódu
Claude původně přidal pojistku:
if (context.Depth > 1)
{
return;
}
Hermes ji při ověření odstranil, protože tento plugin nic neupdatuje, takže se sám nemůže zacyklit. Naopak by Depth > 1 stopka mohla chybně obejít validaci v situaci, kdy Account aktualizuje jiný plugin nebo workflow.
Finální rozhodnutí:
- žádná
Depth > 1stopka, - plugin pouze validuje,
- žádné write operace,
- validace má proběhnout i při aktualizaci vyvolané jinou automatizací.
9. Výsledný pracovní vzor
Dohodnutý opakovatelný workflow:
1. Zico zadá úkol v Discordu.
2. Hermes vytvoří přesné zadání pro Claude Code.
3. Hermes spustí /home/vmubuntu/bin/claude-task.
4. claude-task vynutí subscription/OAuth režim přes env -u ANTHROPIC_API_KEY.
5. Claude Code vytvoří soubory.
6. Hermes přečte a zkontroluje výstupy.
7. Hermes případně opraví zjevné problémy.
8. Hermes publikuje markdown na Hermes WWW.
9. Hermes vrátí veřejný odkaz.
10. Publikované výstupy z konverzace
- Base class pro D365 / Dataverse plugin implementaci
- D365 plugin: AccountNumber povinný při Post Update account
11. Shrnutí
Konverzace ověřila, že lze prakticky využívat Claude subscription bez přímého Anthropic API:
- Claude Code běží přes Claude Max subscription/OAuth.
- Hermes nepoužívá Claude API.
- Hermes funguje jako orchestrátor a kontrolor.
- Výstupy jsou publikované jako čitelné markdown dokumenty.
- Workflow je vhodné pro další D365 / Dataverse plugin implementace.