Konfiguration
Kontotjänsten tillhör OHarness Cloud. Klienten känner bara till dess publika origin, inte Supabase-projektet eller Composio-projektets API-nyckel.
| Plats | Ansvar |
|---|---|
~/.oharness/config.json | Allmänna körtidsinställningar: modeller, behörigheter, loggning, synkronisering |
~/.oharness/cloud.json | Valfri publik Cloud-adress: { "siteUrl": "https://oharness.ai" } |
~/.oharness/plugins.json | { "runtimePlugins": [...] }; valfritt plugins för deklarativa paket |
~/.oharness/mcp.json | { "mcpServers": { ... } }; ändringar av kopplingar i webbgränssnittet skrivs hit |
| Miljö/hemligheter för Cloud-driftsättningen | Supabase-konfiguration och tjänstenycklar som plattformen äger |
| Lagring för inloggningsuppgifter | Användarens inloggningsuppgifter; inte någon av konfigurationsfilerna ovan |
OHARNESS_HOME omdirigerar alla fyra klientfilerna. Den officiella Cloud-origin är standard; egenhostade och utvecklingsöverstyrningar använder OHARNESS_SITE_URL, sedan cloud.json, sedan den paketerade publika origin. HTTP tillåts bara för utveckling via loopback. Konfiguration i ett repository kan inte välja Cloud-origin eller läsa in kod för runtime-plugins. Programmatiskt Harness.create({ config, runtimePlugins }) stöder fortfarande uttryckligen angivna konfigurationer.
Minne
Beständiga anteckningar konfigureras under memory i config.json (eller i ett projekts oharness.config.json): gränser, återkallning per meddelande och automatisk extrahering. Projektanteckningar ligger som Markdown under <project>/MEMORY/; användaranteckningar som gäller alla projekt ligger under ~/.oharness/memory/user/. Samtycke till synkronisering och datorlokala index ligger kvar i användarkatalogen. En projektkonfiguration kan finjustera återkallning eller stänga av extrahering, men bara användarens egen konfiguration kan slå på extrahering, eftersom den förbrukar användarens modellkrediter. Minne listar varje inställning.
Artefakter
En session i ett registrerat projekt sparar varje artefakt under <project>/ARTIFACTS/: den senaste revisionen som en vanlig fil (ARTIFACTS/blue-field.html), och de revisioner den ersatte under ARTIFACTS/.versions/<name>/v<N>.<ext>. En session kan skapa flera artefakter, var och en i en egen fil; samma namn från en annan session får ett suffix (blue-field-2.html). Redigerar du den översta filen i en editor ändras det som panelen visar. ~/.oharness/storage/artifact/<session>.jsonl förblir indexet — vilken session som skapade vad, och varje revisions version och synkfält — utan innehållet. Tar du bort en session tas indexet bort och filerna lämnas kvar i projektet. Sessioner utanför ett registrerat projekt, och rasterbilder, behåller sitt innehåll i indexet som tidigare. Innehåll som tidigare sparats inline flyttas in i projektet nästa gång sessionen öppnas.
Synkronisering
Den egenhostade destinationen och sessionens inloggningsuppgift hör bara hemma i användarens config.json:
{
"sync": {
"url": "https://sync.example.com",
"token": "opaque-session-token",
"enabled": true
}
}
Nuvarande prioritetsordning är användarens sync.url, sedan OHARNESS_SYNC_URL, sedan den inbyggda officiella destinationen. Konfiguration i ett repository kan inte ange URL, token eller team, eftersom ett klonat repository då skulle kunna omdirigera transkript; den får bara stänga av synkroniseringen eller lägga till undantag. Starta om OHarness efter att du har ändrat destinationen. Se Kör din egen synkserver för att driftsätta den medföljande tjänsten och Synkprotokoll för att implementera en kompatibel.
Kompatibel migrering
Befintliga avsnitt i config.json läses bara som reserv så länge deras separata fil saknas. En befintlig separat fil har företräde, även en tom pluginlista eller en tom MCP-mappning. Äldre account.siteUrl accepteras; äldre Supabase-fält används inte längre av klienten.
npm run config:migrate # Preview filenames only; no secrets printed
npm run config:migrate -- --apply # Back up, split, then clean the old sections
Migreringen bevarar orelaterade inställningar och skriver inte över befintliga uppdelade filer. Den sparar en privat säkerhetskopia, config.before-split.<id>.json, och skriver den allmänna konfigurationen sist. Filer ersätts atomärt med läge 0600. Redigera inte konfigurationen samtidigt som migreringen körs, och kör inte flera migreringsprocesser. Säkerhetskopian kan innehålla gamla inloggningsuppgifter: håll den privat och ta bort den själv efter kontroll. Migreringen ändrar aldrig inloggningsuppgifter och auktoriserar aldrig appar.
Kontotransport
Inloggning i webbläsaren använder fortfarande Cloud /auth/desktop och /api/desktop/exchange. Förnyelse och OTP-reserv i terminalen använder nu /api/desktop/auth/refresh, /otp och /verify. Uppdatera Cloud innan du startar om en uppdaterad klient. En äldre Cloud returnerar ett uttryckligt fel; klienten faller inte tillbaka på direkta Supabase-anrop.
Cloud använder sitt konfigurerade autentiseringsprojekt, validerar indata, begränsar förfrågningar och svarsstorlekar, och returnerar bara sessionsfält. Tokens loggas aldrig och tas aldrig med i fel. Förfrågningar görs inte om automatiskt; svaren är no-store. Nyligen hämtade inloggningsuppgifter registrerar sin Cloud-origin; ändras den måste du logga in igen innan förnyelse. Äldre inloggningsuppgifter får denna origin vid den första lyckade förnyelsen mot den nuvarande betrodda Cloud-adressen.
Anropsgränsen för Cloud-endpointen gäller per process. Produktionsmiljöer bör dessutom tillämpa en gemensam anropsgräns i edge-lagret. Webbplatsens Supabase-inställningar ligger kvar i Cloud-projektet; inga ändringar i databasschemat krävs för den här migreringen.
Den hostade molnkopplingen behåller Composio-nyckeln och listan över tillåtna appar i Cloud. Dess inbyggda runtime-plugin connector-cloud visar auktoriseringskort i webbchatten och återupptar det väntande verktyget efter verifierad koppling. plugins.json styr pluginreglaget; den innehåller inga plattformsuppgifter.