Takaisin blogiin

Natiivi SSH Comman agenteille

AloitaLue ohjeet

Kotipalvelimesi ei enää saa öistä varmuuskopiotaan valmiiksi. Lokit ovat palvelimella, palvelin on reitittimesi takana, ja haluat, että Comma selvittää, mitä tapahtui, eikä anna sinulle listaa komentoja kopioitavaksi edestakaisin. Comman agentit voivat nyt työskennellä koneella SSH:n kautta, eikä sinun tarvitse asentaa sille toista tekoälyagenttia.

Agentti asuu hiekkalaatikon ulkopuolella

Useimmat pilviagentit toimivat hiekkalaatikkonsa sisällä: kontissa tai virtuaalikoneessa, jossa ovat mallin silmukka, työkalut ja tiedostot ja joka on päällä niin kauan kuin agentti. Comman taustalla toimiva hajautettu agenttikehys Salix erottaa nämä toisistaan. Agentin silmukka toimii agenttikehyksessä, minkään hiekkalaatikon ulkopuolella, yli 100 agenttia prosessoriydintä kohden. Pilvi-VM tai laite on paikka, jossa komennot ajetaan, ja sitä käytetään vain, kun työ tarvitsee tietokonetta.

Palvelimellasi työskennelläkseen agentti ei siis muuta sinne. Se kutsuu agenttikehyksestä natiiveja SSH-työkaluja:

  • ssh.open, ssh.write, ssh.read ja ssh.screen interaktiiviseen päätteeseen, myös koko näytön ohjelmiin;

  • ssh.exec yksittäiseen komentoon, jolloin stdout, stderr ja paluukoodi pysyvät erillään;

  • ssh.list_files, ssh.download ja ssh.upload tiedostoille SFTP:n kautta;

  • ssh.close ja ssh.list yhteyden elinkaareen.

Agentti tunnistautuu Group SSH key -avaimella: yksi avain Workspacea kohden, ja sen agentit jakavat sen. ssh.public_key palauttaa avaimen, ja sinä lisäät sen koneen tiedostoon ~/.ssh/authorized_keys kuten minkä tahansa muun SSH-asiakkaan avaimen.

Agenttikehys voi tavoittaa koneesi kolmella tavalla.

1. Julkinen osoite

Jos koneessa on jo tavoitettava SSH-palvelin, agentti yhdistää sen IP-osoitteeseen tai DNS-nimeen:

json
{ "tool": "ssh.open", "params": { "host": "203.0.113.10", "user": "deploy" } }

2. Tailcat koneelle, jolla ei ole julkista osoitetta

Läppärillä tai NAT:n takana olevalla kotipalvelimella ei usein ole osoitetta, johon agenttikehys voisi ottaa yhteyden. Tailcat yhdistää sen ilman saapuvaa porttia, VPN:ää tai tiliä. Se toimii koneella, avaa vain lähteviä yhteyksiä ja tulostaa osoitteen, joka alkaa merkeillä tc.

Tailcat voi toimia myös itse SSH-palvelimena. Käynnistä se Groupin julkisella avaimella:

sh
tailcat serve --ssh-authorized-keys='ssh-ed25519 AAAA...' ssh

Näin saat kirjautumiskuoren, komentojen suorituksen ja SFTP:n sillä tilillä, joka ajaa Tailcatia. Se ei tarvitse sshd eikä muuta SSH-asetuksiasi. Jos koneessa toimii jo OpenSSH, käytä sen sijaan komentoa tailcat serve 22, jolloin OpenSSH hoitaa kirjautumisen. Lähetä sitten osoite agentille:

json
{ "tool": "ssh.open", "params": { "tailcat": "tc...", "user": "deploy" } }

3. Oma Tailscale-verkkosi

Jos koneesi ovat jo tailnetissä, Workspace voi liittyä siihen. Yhdistä se Comma-sovelluksen asetuksissa tai pyydä agenttia tekemään se. Tailnetin ylläpitäjä avaa kirjautumislinkin ja hyväksyy solmun. Solmu käyttää oletuksena tagia tag:comma-agent, joten tailnetisi käytäntö määrää tarkalleen, mihin laitteisiin ja portteihin se pääsee, esimerkiksi vain kotipalvelimen porttiin 22.

Agentti listaa laitteet komennolla tailnet.peers ja yhdistää MagicDNS-nimellä tai Tailscale-osoitteella:

json
{
  "tool": "ssh.open",
  "params": { "host": "nas.tail1234.ts.net", "via_tailnet": true, "user": "deploy" }
}

Luottamus ja elinikä

Joka reitillä ensimmäinen yhteys isäntään tallentaa sen isäntäavaimen. Myöhempi yhteys, joka esittää eri avaimen, hylätään virheellä host_key_mismatch ja molemmilla sormenjäljillä, ja agentti kysyy sinulta ennen kuin poistaa vanhan avaimen komennolla ssh.known_hosts.remove.

SSH-yhteys kuuluu yhdelle agentin istunnolle. Se sulkeutuu 30 minuutin käyttämättömyyden jälkeen eikä säily agentin uudelleenkäynnistyksen tai alustan deployn yli, joten pitkä työ kuuluu etäkoneen tmux tai screen -istuntoon. Komennoilla on rajat: ssh.exec aikakatkaistaan oletuksena 60 sekunnin ja enintään 600 sekunnin jälkeen, ja aikakatkaisusta ilmoitetaan, eikä sitä koskaan yritetä automaattisesti uudelleen.

Varmuuskopion kohdalla voisit pyytää: ”Lue lokit ja tarkista levytila, mutta älä poista tiedostoja äläkä muuta asetuksia. Kerro ensin, mitä löydät.”

Try Comma, Now.

Aloita