Pi Agent Paketverwaltung
Pi-Pakete ermöglichen es dir, Erweiterungen, Skills, Prompt-Vorlagen und Themes zu bündeln und sie über npm oder git zu verteilen und zu installieren.
Paketverwaltungsbefehle
Alle Paketoperationen werden über den pi-Befehl ausgeführt; settings.json muss nicht manuell bearbeitet werden.
| Befehl | Funktion | Beispiel |
|---|---|---|
| pi install <source> | Ein Paket installieren; -l installiert es auf Projektebene | pi install npm:@example/pi-todo-kit |
| pi remove <source> | Ein Paket entfernen | pi remove npm:@example/pi-todo-kit |
| pi uninstall <source> | Entspricht remove | pi uninstall npm:@example/pi-todo-kit |
| pi list | Installierte Pakete auflisten | pi list |
| pi update --all | Pi Agent und alle Pakete aktualisieren | pi update --all |
| pi update --extensions | Nur installierte Pakete aktualisieren (Pi Agent selbst ausgenommen) | pi update --extensions |
| pi update <source> | Ein bestimmtes Paket aktualisieren | pi update npm:@example/pi-todo-kit |
Anwendungsbeispiel:
# 安装 npm 包 $ pi install npm:@example/[email protected] # 安装 git 包 $ pi install git:github.com/example/pi-todo-kit@v1 # 安装本地包 $ pi install ./packages/pi-todo-kit $ pi install ~/projects/pi-share-kit # 安装为项目级(写入 .pi/settings.json) $ pi install -l npm:@example/pi-todo-kit # 临时试用包(不安装到配置中) $ pi -e npm:@example/pi-todo-kit $ pi -e git:github.com/example/pi-todo-kit
Die Installationsausgabe sieht ungefähr wie folgt aus (illustrativ), wobei die Anzahl der Erweiterungen und Skills vom pi-Feld des Pakets abhängt:
$ pi install npm:@example/pi-todo-kit Resolving @example/[email protected] Downloading @example/pi-todo-kit (12.4 kB) Running npm install in ~/.pi/agent/npm/@example/pi-todo-kit Installed @example/[email protected] extensions: 2 skills: 1 prompts: 3 Saved to ~/.pi/agent/settings.json
Die oben genannten Paketnamen und Versionen sind beispielhafte Werte; ersetzen Sie sie durch das Paket, das Sie tatsächlich installieren möchten.
Paketquellen
Pi Agent unterstützt drei Paketquellen, jeweils mit unterschiedlichem Installationsverhalten und unterschiedlichen Cache-Speicherorten.
npm-Pakete
npm ist die empfohlene Paketverteilungsmethode:
pi install npm:@scope/[email protected] pi install npm:pkg
npm-Pakete mit einer Versionsnummer sind gesperrt, und pi update wird sie nicht automatisch aktualisieren.
Paketinstallationsort: globale Pakete befinden sich in~/.pi/agent/npm/, Pakete auf Projektebene befinden sich in.pi/npm/。
Git-Pakete
Unterstützt HTTPS- und SSH-Protokolle:
# HTTPS pi install https://github.com/user/repo@v1 # SSH(git@host:path 需要 git: 前缀) pi install git:[email protected]:user/repo@v1 # SSH 协议 pi install ssh://[email protected]/user/repo@v1
Der Ref eines Git-Pakets ist gesperrt, und pi update wechselt nicht automatisch zu einem neuen Ref.
Clone-Speicherort: globale Pakete befinden sich in~/.pi/agent/git/, Pakete auf Projektebene befinden sich in.pi/git/。
Lokale Pfade
Verweist auf einen lokalen Dateisystempfad; Dateien werden nicht kopiert:
pi install /Users/example/.pi/agent/packages/my-kit pi install ./packages/my-kit
Pi-Pakete erstellen
Fügen Sie daspiFeld zu package.json hinzu:
Beispiel
"name": "@example/pi-todo-kit",
"keywords": ["pi-package"],
"pi": {
"extensions": ["./extensions"],
"skills": ["./skills"],
"prompts": ["./prompts"],
"themes": ["./themes"],
"video": "https://example.com/demo.mp4",
"image": "https://example.com/screenshot.png"
}
}
Wenn es keinpi-Feld gibt, wird Pi Agent automatisch Ressourcen aus den konventionellen Verzeichnissen entdecken:
| Konventionelles Verzeichnis | Geladener Inhalt |
|---|---|
| extensions/ | Lade die .ts- und .js-Dateien darin |
| skills/ | Ordner, die SKILL.md enthalten, rekursiv finden und außerdem .md-Dateien auf oberster Ebene als eigenständige Skills laden |
| prompts/ | Lade die .md-Vorlagendateien darin |
| themes/ | Lade die .json-Theme-Dateien darin |
Durch Hinzufügen vonpi-package-Schlüsselwörtern kann Ihr Paket imPi Agent Package Gallery erscheinen.
Die Video- und Bildfelder werden verwendet, um Vorschauen in der Galerie anzuzeigen.
Paketfilterung
Beim Installieren eines Pakets können Sie genau steuern, welche Ressourcen geladen werden, und so vermeiden, dass alles auf einmal geladen wird.
Das folgende packages-Array wird in~/.pi/agent/settings.json(gilt global) oder.pi/settings.json(gilt nur für das aktuelle Projekt) geschrieben.
Mit pi install -l installierte Pakete werden in die .pi/settings.json des Projekts geschrieben; beide Methoden landen letztlich in derselben Konfiguration.
Array-Einträge unterstützen zwei Formen: Die String-Form lädt alle Ressourcen des Pakets, während die Objekt-Form Element für Element nach Ressourcentyp filtert.
Beispiel
"packages": [
"npm:simple-pkg",
{
"source": "npm:@example/pi-todo-kit",
"extensions": ["extensions/*.ts", "!extensions/legacy.ts"],
"skills": ["skills/brave-search"],
"prompts": [],
"themes": ["+themes/legacy.json"]
}
]
}
In der offiziellen Dokumentation verwendet die skills-Filterung sowohl paketinterne Pfadnotation als auch Skill-Namensnotation; in der Praxis sollte man die Dokumentation des installierten Pakets konsultieren.
Die Filterregeln lauten wie folgt:
| Syntax | Bedeutung | Beispiel |
|---|---|---|
| Einen Schlüssel weglassen | Alle Ressourcen dieses Typs laden | Den Schlüssel skills nicht angeben = alle Skills laden |
| Auf [] setzen | Keine Ressourcen dieses Typs laden | "prompts": [] |
| !pattern | Passende Ressourcen ausschließen | "!extensions/legacy.ts" |
| +path | Angegebenen Pfad zwangsweise einschließen | "+themes/legacy.json" |
| -path | Angegebenen Pfad zwangsweise ausschließen | "-skills/internal" |
Abhängigkeitsverwaltung
Pi Agent führtnpm installfür jedes installierte npm/git-Paket aus und installiert dabei automatisch Abhängigkeiten.
Lokale, mit dem Paket verteilte Abhängigkeiten können alsbundledDependenciesgebündelt werden.
Die folgenden Kernpakete werden von Pi Agent selbst bereitgestellt und sollten alspeerDependenciesaufgeführt werden; bündeln Sie sie nicht erneut in Ihrem Paket:
| Paketname | Beschreibung |
|---|---|
| @earendil-works/pi-ai | KI-Tools und -Typen |
| @earendil-works/pi-agent-core | Agent-Kern |
| @earendil-works/pi-coding-agent | Pi Agent Hauptpaket |
| @earendil-works/pi-tui | TUI-Komponenten |
| typebox | Parameter-Schema-Definitionen |
Ressourcen verwalten mit pi config
Verwendepi config, um Erweiterungen, Skills, Vorlagen und Themes installierter Pakete interaktiv zu aktivieren oder zu deaktivieren:
# 编辑全局配置 $ pi config # 编辑项目配置 $ pi config -l
Die Tab-Taste wechselt zwischen globalen und Projektmodi.
Geltungsbereich und Deduplizierung
Dasselbe Paket kann sowohl in globalen als auch in Projektkonfigurationen vorkommen.
Wenn ein Projekteintrag existiert, hat er Vorrang vor dem globalen Eintrag.
Die Ausnahme ist, wenn ein Projekteintragautoload: falsesetzt; in diesem Fall überschreibt er nicht mehr vollständig, sondern wird inkrementell zusätzlich zum globalen Eintrag hinzugefügt.
Die Identität eines Pakets wird auf folgende Weise bestimmt, und Pi Agent verwendet dies, um festzustellen, ob zwei Konfigurationen auf dasselbe Paket verweisen:
| Source | Identität |
|---|---|
| npm-Paket | Paketname (z. B. @example/pi-todo-kit) |
| Git-Paket | Repository-URL (ohne ref) |
| Lokaler Pfad | Aufgelöster absoluter Pfad |