Moduuli 07

Kun agentti tekee työtä samaan aikaan kuin nukut

Ajastettu agentti tuntuu ensimmäisen kerran oikealta organisaatiolta. Se tekee pienen työn silloin, kun et itse istu koneella. Siksi sitä ei pidä rakentaa kiireessä. Ensin tehtävä ajetaan käsin, sitten sille annetaan rytmi, sitten opetellaan pysäytys.

Tarkat komennot ja tekninen selostus ovat moduulin lopussa.

Aloita tylsästä tehtävästä

Ensimmäinen ajastettu tehtävä ei kutsu kielimallia. Se kirjoittaa aamuraportin rungon tiedostoon. Tämä kuulostaa liian helpolta, mutta se opettaa tärkeimmän asian: käynnistyikö tehtävä oikeaan aikaan ja näkyykö siitä jälki?

Kun tylsä runko toimii, siihen voi myöhemmin lisätä agentin tekemän priorisoinnin. Jos aloitat suoraan raskaasta ajosta, et tiedä onko ongelma ajastuksessa, mallipolussa, tiedostoissa vai ohjeessa.

Rytmi ennen älykkyyttä

Hyvä agenttiorganisaatio ei metelöi koko ajan. Se tekee työn oikeaan aikaan. Aamulla voi syntyä päivän lista. Iltapäivällä voi syntyä kooste. Sunnuntaina voi syntyä viikkosynteesi. TAYLOR voi katsoa kulut kerran viikossa. WENDY voi nostaa muistutukset aamulla. CASE voi tarkistaa riskit ennen käyttöönottoa.

Kahvilaketjun tilaushelppari ei tarvitse uutta ajoa minuutin välein. Kotitalouden viikko-ostoslistaaja ei tarvitse yöherätystä. Golf-seuran kilpailukalenteri-apulainen voi riittää kerran päivässä tapahtumakauden aikana.

Mitä ajastettu agentti ei tee

Ajastettu agentti ei saa alussa:

  • lähettää viestejä ihmisille
  • muuttaa alkuperäisiä lähteitä
  • lukea uusia kansioita omin päin
  • vaihtaa mallipolkua
  • jatkaa loputtomasti virheen jälkeen
  • tehdä päätöstä, joka kuuluu ihmiselle

Se saa valmistella. Se saa kirjata. Se saa pyytää huomiota myöhemmin, kun hälytyskanava on rajattu. Mutta se ei saa muuttua yövuoroksi, joka improvisoi.

Virheiden pitää näkyä

Automaatio on turvallinen vasta, kun myös virhe näkyy. Jos tehtävä epäonnistuu hiljaa, se on huonompi kuin käsin tehty työ. Siksi jokaisella toistuvalla tehtävällä pitää olla kolme jälkeä:

  1. toimintaloki, jossa näkyy että ajo alkoi
  2. tulostiedosto tai muistio, jossa näkyy mitä syntyi
  3. virheloki, jossa näkyy miksi ajo pysähtyi

CASE pitäisi tästä kohdasta. Se on tylsä. Se on myös se kohta, joka säästää päivän, kun jokin ei käynnisty.

Lukko estää päällekkäisyyden

Jos tehtävä kestää pidempään kuin odotit, seuraava ajo ei saa aloittaa samaa työtä päälle. Yksi rauhallinen ajo on parempi kuin kolme päällekkäistä. Siksi pidempiin tehtäviin lisätään lukko: jos edellinen ajo on kesken, uusi ajo poistuu siististi ja kirjaa asian.

Tämä on erityisen tärkeää, kun myöhemmin lisäät kielimallin. Malli voi hidastua, verkko voi pätkiä ja lähde voi kasvaa. Lukko tekee virheestä näkyvän eikä kaoottista.

Ensimmäinen viikko ajastusten kanssa

Pidä ensimmäinen viikko yksinkertaisena. Tarkista joka päivä:

  • syntyikö aamuraportti
  • syntyikö iltakooste
  • näkyykö lokissa onnistuminen
  • näkyykö virhelokissa jotain
  • oliko tehtävä aidosti hyödyllinen

Jos tehtävä ei ole hyödyllinen käsin luettuna, se ei muutu hyödylliseksi ajastettuna. Ajastus vahvistaa hyvän työnkulun. Se ei pelasta huonoa.

Pysäytysharjoitus

Tee kerran pysäytysharjoitus. Käynnistä ajastus, varmista että se näkyy, pura se ja varmista ettei se enää näy. Tämä ei ole vain tekninen temppu. Se rakentaa luottamusta. Automaatio, jonka osaat pysäyttää, ei tunnu hallitsemattomalta.

Kirjoita muistiin mikä tehtävä ajetaan, mihin se kirjoittaa, mistä näet onnistumisen, mistä näet virheen, miten pysäytät sen ja milloin ihminen tarkistaa tuloksen.

Tarkat komennot ja vaiheet (valinnainen)

Luo aamuraportti:

cat > ~/Agentit/bin/aamuraportti.sh <<'EOF'
#!/usr/bin/env bash
set -euo pipefail

today="$(date '+%Y-%m-%d')"
out="$HOME/Agentit/wiki/$today-aamuraportti.md"

{
  echo "# Aamuraportti $today"
  echo
  echo "## Kolme tärkeintä"
  echo "- "
  echo
  echo "## Odottaa ihmistä"
  echo "- "
} > "$out"

printf '%s aamuraportti kirjoitettu %s\n' "$(date '+%Y-%m-%d %H:%M')" "$out" >> "$HOME/Agentit/logs/activity.log"
EOF

chmod 700 ~/Agentit/bin/aamuraportti.sh
~/Agentit/bin/aamuraportti.sh

Luo macOS:n launchd-plist:

nano ~/Library/LaunchAgents/com.arkiopas.aamuraportti.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
 "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>com.arkiopas.aamuraportti</string>
  <key>ProgramArguments</key>
  <array>
    <string>/bin/zsh</string>
    <string>-lc</string>
    <string>/bin/bash "$HOME/Agentit/bin/aamuraportti.sh"</string>
  </array>
  <key>StartCalendarInterval</key>
  <dict>
    <key>Hour</key>
    <integer>7</integer>
    <key>Minute</key>
    <integer>0</integer>
  </dict>
  <key>StandardOutPath</key>
  <string>/Users/REPLACE_ME/Agentit/logs/aamuraportti.out.log</string>
  <key>StandardErrorPath</key>
  <string>/Users/REPLACE_ME/Agentit/logs/aamuraportti.err.log</string>
</dict>
</plist>

Vaihda REPLACE_ME omaksi käyttäjänimeksi. Tarkista ja lataa:

plutil -lint ~/Library/LaunchAgents/com.arkiopas.aamuraportti.plist
launchctl load ~/Library/LaunchAgents/com.arkiopas.aamuraportti.plist
launchctl list | grep arkiopas

Pura ja lataa uudelleen muutosten jälkeen:

launchctl unload ~/Library/LaunchAgents/com.arkiopas.aamuraportti.plist
launchctl load ~/Library/LaunchAgents/com.arkiopas.aamuraportti.plist

Lisää malliajo vasta, kun perusajo toimii:

today="$(date '+%Y-%m-%d')"
report="$HOME/Agentit/wiki/$today-aamuraportti.md"
summary="$HOME/Agentit/wiki/$today-prioriteetit.md"

codex exec "Lue tämä aamuraportin alku ja ehdota kolme prioriteettia: $(sed -n '1,80p' "$report")" > "$summary"
printf '\nPrioriteetit: %s\n' "$summary" >> "$report"

Cron-vaihtoehto Linuxiin tai kokeneelle käyttäjälle:

crontab -e
0 7 * * * /bin/bash /Users/oma-kayttaja/Agentit/bin/aamuraportti.sh >> /Users/oma-kayttaja/Agentit/logs/aamuraportti.out.log 2>> /Users/oma-kayttaja/Agentit/logs/aamuraportti.err.log

Lukko pitkille ajoille:

lock="$HOME/Agentit/tmp/aamuraportti.lock"
if ! mkdir "$lock" 2>/dev/null; then
  printf '%s ajo jo käynnissä\n' "$(date '+%Y-%m-%d %H:%M')" >> "$HOME/Agentit/logs/activity.log"
  exit 0
fi
trap 'rmdir "$lock"' EXIT

Tiivistelmä

  • Ajastus aloitetaan tylsästä tehtävästä, ei raskaasta malliajosta.
  • Rytmi, lokit ja pysäytys ovat tärkeämpiä kuin näyttävyys.
  • Virheen pitää näkyä erillisessä virhelokissa.
  • Pidempään ajoon lisätään lukko.
  • Ajastus vahvistaa hyvän työnkulun, se ei tee huonosta hyvää.