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.

BefehlFunktionBeispiel
pi install <source>Ein Paket installieren; -l installiert es auf Projektebenepi install npm:@example/pi-todo-kit
pi remove <source>Ein Paket entfernenpi remove npm:@example/pi-todo-kit
pi uninstall <source>Entspricht removepi uninstall npm:@example/pi-todo-kit
pi listInstallierte Pakete auflistenpi list
pi update --allPi Agent und alle Pakete aktualisierenpi update --all
pi update --extensionsNur installierte Pakete aktualisieren (Pi Agent selbst ausgenommen)pi update --extensions
pi update <source>Ein bestimmtes Paket aktualisierenpi 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.

Pi 包从 npm、git、本地路径三种来源安装到本地目录并自动发现资源的流程

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 VerzeichnisGeladener 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:

SyntaxBedeutungBeispiel
Einen Schlüssel weglassenAlle Ressourcen dieses Typs ladenDen Schlüssel skills nicht angeben = alle Skills laden
Auf [] setzenKeine Ressourcen dieses Typs laden"prompts": []
!patternPassende Ressourcen ausschließen"!extensions/legacy.ts"
+pathAngegebenen Pfad zwangsweise einschließen"+themes/legacy.json"
-pathAngegebenen 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:

PaketnameBeschreibung
@earendil-works/pi-aiKI-Tools und -Typen
@earendil-works/pi-agent-coreAgent-Kern
@earendil-works/pi-coding-agentPi Agent Hauptpaket
@earendil-works/pi-tuiTUI-Komponenten
typeboxParameter-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:

SourceIdentität
npm-PaketPaketname (z. B. @example/pi-todo-kit)
Git-PaketRepository-URL (ohne ref)
Lokaler PfadAufgelöster absoluter Pfad
Weitere Erweiterungen