Nota Platform
Tingkah laku, keperluan, dan keistimewaan khusus platform.
macOS
Pengurus perkhidmatan: launchd
Triggerfish mendaftar sebagai ejen launchd di:
~/Library/LaunchAgents/dev.triggerfish.agent.plistPlist ditetapkan ke RunAtLoad: true dan KeepAlive: true, jadi daemon bermula semasa log masuk dan dimulakan semula jika ia terhempas.
Tangkapan PATH
Plist launchd menangkap PATH shell anda semasa pemasangan. Ini kritikal kerana launchd tidak menjanan profil shell anda. Jika anda memasang kebergantungan pelayan MCP (seperti npx, python) selepas memasang daemon, binari tersebut tidak akan berada dalam PATH daemon.
Pembetulan: Pasang semula daemon untuk mengemas kini PATH yang ditangkap:
bash
triggerfish stop
triggerfish dive --install-daemonKuarantin
macOS menerapkan bendera kuarantin kepada binari yang dimuat turun. Pemasang membersihkan ini dengan xattr -cr, tetapi jika anda memuat turun binari secara manual:
bash
xattr -cr /usr/local/bin/triggerfishKeychain
Rahsia disimpan dalam keychain log masuk macOS melalui CLI security. Jika Keychain Access dikunci, operasi rahsia akan gagal sehingga anda membukanya (biasanya dengan log masuk).
Homebrew Deno
Jika anda membina dari sumber dan Deno dipasang melalui Homebrew, pastikan direktori bin Homebrew berada dalam PATH anda sebelum menjalankan skrip pemasangan.
Linux
Pengurus perkhidmatan: systemd (mod pengguna)
Daemon berjalan sebagai perkhidmatan pengguna systemd:
~/.config/systemd/user/triggerfish.serviceLinger
Secara lalai, perkhidmatan pengguna systemd berhenti apabila pengguna log keluar. Triggerfish mengaktifkan linger semasa pemasangan:
bash
loginctl enable-linger $USERJika ini gagal (contoh, pentadbir sistem anda melumpuhkannya), daemon hanya berjalan semasa anda log masuk. Pada pelayan di mana anda mahu daemon berterusan, minta pentadbir anda mengaktifkan linger untuk akaun anda.
PATH dan persekitaran
Unit systemd menangkap PATH anda dan menetapkan DENO_DIR=~/.cache/deno. Seperti macOS, perubahan ke PATH selepas pemasangan memerlukan pemasangan semula daemon.
Unit juga menetapkan Environment=PATH=... secara eksplisit. Jika daemon tidak boleh mencari binari pelayan MCP, ini adalah punca paling mungkin.
Fedora Atomic / Silverblue / Bazzite
Desktop Fedora Atomic mempunyai /home yang dihubungkan dengan simbol ke /var/home. Triggerfish mengendalikan ini secara automatik apabila menyelesaikan direktori rumah, mengikuti symlink untuk mencari laluan sebenar.
Pelayar yang dipasang Flatpak dikesan dan dilancarkan melalui skrip pembungkus yang memanggil flatpak run.
Pelayan tanpa kepala
Pada pelayan tanpa persekitaran desktop, daemon GNOME Keyring / Secret Service mungkin tidak berjalan. Lihat Penyelesaian Masalah Rahsia untuk arahan persediaan.
SQLite FFI
Backend storan SQLite menggunakan @db/sqlite, yang memuatkan perpustakaan natif melalui FFI. Ini memerlukan kebenaran Deno --allow-ffi (termasuk dalam binari yang dikompil). Pada sesetengah pengedaran Linux minimal, perpustakaan C kongsi atau kebergantungan berkaitan mungkin tiada. Pasang perpustakaan pembangunan asas jika anda melihat ralat berkaitan FFI.
Windows
Pengurus perkhidmatan: Windows Service
Triggerfish dipasang sebagai Perkhidmatan Windows bernama "Triggerfish". Perkhidmatan ini dilaksanakan oleh pembungkus C# yang dikompil semasa pemasangan menggunakan csc.exe dari .NET Framework 4.x.
Keperluan:
- .NET Framework 4.x (dipasang pada kebanyakan sistem Windows 10/11)
- Keistimewaan pentadbir untuk pemasangan perkhidmatan
csc.exeboleh diakses dalam direktori .NET Framework
Penggantian binari semasa kemas kini
Windows tidak membenarkan penimpaan eksekutif yang sedang berjalan. Pengemas kini:
- Menamakan semula binari yang sedang berjalan ke
triggerfish.exe.old - Menyalin binari baru ke laluan asal
- Memulakan semula perkhidmatan
- Membersihkan fail
.oldsemasa permulaan seterusnya
Jika penggantian nama atau salinan gagal, hentikan perkhidmatan secara manual sebelum mengemas kini.
Sokongan warna ANSI
Triggerfish mengaktifkan Pemprosesan Terminal Maya untuk output konsol berwarna. Ini berfungsi dalam PowerShell moden dan Windows Terminal. Tetingkap cmd.exe yang lebih lama mungkin tidak memaparkan warna dengan betul.
Penguncian fail eksklusif
Windows menggunakan kunci fail eksklusif. Jika daemon sedang berjalan dan anda cuba memulakan tika lain, kunci fail log menghalangnya:
Triggerfish sedang berjalan. Hentikan tika sedia ada dahulu, atau gunakan 'triggerfish status' untuk menyemak.Pengesanan ini adalah khusus untuk Windows dan berdasarkan EBUSY / "os error 32" apabila membuka fail log.
Storan rahsia
Windows menggunakan storan fail yang disulitkan (AES-256-GCM) di ~/.triggerfish/secrets.json. Tiada integrasi Windows Credential Manager. Perlakukan fail secrets.key sebagai sensitif.
Nota pemasang PowerShell
Pemasang PowerShell (install.ps1):
- Mengesan seni bina pemproses (x64/arm64)
- Memasang ke
%LOCALAPPDATA%\Triggerfish - Menambah direktori pemasangan ke PATH pengguna melalui pendaftaran
- Mengkompil pembungkus perkhidmatan C#
- Mendaftar dan memulakan Perkhidmatan Windows
Jika pemasang gagal pada langkah kompilasi perkhidmatan, anda masih boleh menjalankan Triggerfish secara manual:
powershell
triggerfish run # Mod latar depanDocker
Runtime bekas
Pelancaran Docker menyokong Docker dan Podman. Pengesanan adalah automatik, atau tetapkan secara eksplisit:
bash
TRIGGERFISH_CONTAINER_RUNTIME=podmanPerincian imej
- Asas:
gcr.io/distroless/cc-debian12(minimal, tanpa shell) - Varian debug:
distroless:debug(termasuk shell untuk penyelesaian masalah) - Berjalan sebagai UID 65534 (nonroot)
- Init:
true(penerusan isyarat PID 1 melaluitini) - Dasar mulakan semula:
unless-stopped
Kegigihan data
Semua data berterusan berada dalam direktori /data di dalam bekas, disandarkan oleh volum bernama Docker:
/data/
triggerfish.yaml # Konfigurasi
secrets.json # Rahsia yang disulitkan
secrets.key # Kunci enkripsi
SPINE.md # Identiti ejen
TRIGGER.md # Tingkah laku trigger
data/triggerfish.db # Pangkalan data SQLite
logs/ # Fail log
skills/ # Kemahiran yang dipasang
workspace/ # Ruang kerja ejen
.deno/ # Cache plugin Deno FFIPemboleh ubah persekitaran
| Pemboleh ubah | Lalai | Tujuan |
|---|---|---|
TRIGGERFISH_DATA_DIR | /data | Direktori data asas |
TRIGGERFISH_CONFIG | /data/triggerfish.yaml | Laluan fail konfigurasi |
TRIGGERFISH_DOCKER | true | Mengaktifkan tingkah laku khusus Docker |
DENO_DIR | /data/.deno | Cache Deno (plugin FFI) |
HOME | /data | Direktori rumah untuk pengguna nonroot |
Rahsia dalam Docker
Bekas Docker tidak boleh mengakses keychain OS hos. Storan fail yang disulitkan digunakan secara automatik. Kunci enkripsi (secrets.key) dan data yang disulitkan (secrets.json) disimpan dalam volum /data.
Nota keselamatan: Sesiapa yang mempunyai akses ke volum Docker boleh membaca kunci enkripsi. Selamatkan volum dengan sewajarnya. Dalam pengeluaran, pertimbangkan menggunakan rahsia Docker atau pengurus rahsia untuk menyuntik kunci semasa runtime.
Port
Fail compose memetakan:
18789- Gateway WebSocket18790- Tidepool A2UI
Port tambahan (WebChat pada 8765, webhook WhatsApp pada 8443) perlu ditambah ke fail compose jika anda mengaktifkan saluran tersebut.
Menjalankan wizard persediaan dalam Docker
bash
# Jika bekas sedang berjalan
docker exec -it triggerfish triggerfish dive
# Jika bekas tidak berjalan (sekali-guna)
docker run -it -v triggerfish-data:/data ghcr.io/greghavens/triggerfish:latest diveMengemas kini
bash
# Menggunakan skrip pembungkus
triggerfish update
# Secara manual
docker compose pull
docker compose up -dPenyahpepijatan
Gunakan varian debug imej untuk penyelesaian masalah:
yaml
# Dalam docker-compose.yml
image: ghcr.io/greghavens/triggerfish:debugIni merangkumi shell supaya anda boleh exec ke dalam bekas:
bash
docker exec -it triggerfish /busybox/shFlatpak (Pelayar Sahaja)
Triggerfish sendiri tidak berjalan sebagai Flatpak, tetapi ia boleh menggunakan pelayar yang dipasang Flatpak untuk automasi pelayar.
Pelayar Flatpak yang dikesan
com.google.Chromeorg.chromium.Chromiumcom.brave.Browser
Cara ia berfungsi
Triggerfish mencipta skrip pembungkus sementara yang memanggil flatpak run dengan bendera mod tanpa kepala, kemudian melancarkan Chrome melalui skrip tersebut. Pembungkus ditulis ke direktori sementara.
Isu biasa
- Flatpak tidak dipasang. Binari mesti berada di
/usr/bin/flatpakatau/usr/local/bin/flatpak. - Direktori sementara tidak boleh ditulis. Skrip pembungkus perlu ditulis ke cakera sebelum pelaksanaan.
- Konflik sandbox Flatpak. Sesetengah binaan Chrome Flatpak menyekat
--remote-debugging-port. Jika sambungan CDP gagal, cuba pemasangan Chrome bukan-Flatpak.
