English | Español | Français | Deutsch | Português (Brasil) | Italiano
⚠️ Experimentell. senpi ist ein meinungsstarker, sich in aktiver Entwicklung befindlicher Fork von badlogic/pi-mono. Er treibt Dori unter der Haube an und spiegelt wider, was ein ganz bestimmter KI-Assistent von einer Coding-Agent-Runtime braucht. Nutz ihn; setz aber keine Produktions-Pipeline darauf.
senpi ist ein Wortspiel mit dem Namen „Senpai" und ein vernünftigeres (sane) pi mit extra „Batteries included" — ein TypeScript-Monorepo, das den Coding-Agent von pi-mono in senpi umbenennt und aufbauend auf dem Upstream ein kuratiertes Set aus integrierten Erweiterungen und Core-Anpassungen mitliefert.
Upstream: pi-mono von @mariozechner — Tools zum Entwickeln von KI-Agenten und zum Verwalten von LLM-Deployments.
senpi ist aus zwei Einflüssen entstanden:
- Starker Einfluss von OMO (oh-my-openagent). OMO ist das schwergewichtige opencode-Harness mit Discipline Agents (Sisyphus, Hephaestus, Prometheus), IntentGate, Hash-verankerten Edits, Team Mode, in Skills eingebetteten MCPs, Ralph Loop, Todo-Enforcern und vielem mehr. senpi übernimmt viele der prägenden Ideen von OMO (Intent-Gate, dynamischer Prompt, Presets pro Modell, paralleles Tool-Routing, Todo-Fortführung), hält den Umfang aber so schlank wie möglich, um nah am Upstream von pi-mono zu bleiben. Stell dir senpi als eine schlanke Version von OMO vor, die als einzelne pi-CLI-Binary statt als opencode-Plugin läuft.
- senpi ist die Coding-Agent-Runtime für Dori. Dori ist der KI-Assistent von Sisyphus Labs — siehe den Dori-Hinweis in der README von OMO für mehr Kontext. senpi lässt sich eigenständig nutzen, aber die Designentscheidungen (Formulierung des Intent-Gates, integrierte Erweiterungen, Prompt-Presets pro Modellfamilie, Branding) sind auf das abgestimmt, was Dori beim Ausführen von Code-Aufgaben braucht.
Änderungen am Kerncode sind auf ein Minimum reduziert und werden in changes.md-Dateien neben jedem geänderten Unterverzeichnis dokumentiert, damit Upstream-Merge-Commits überprüfbar bleiben.
| Paket | Beschreibung |
|---|---|
| @earendil-works/chord | Eigenständige Runtime zur Anwendungskomposition für Services, replizierten State, RPC und Plugins |
| @earendil-works/pi-telemetry | Herstellerneutrale Telemetrie-Verträge, Referenzadapter, Konformitätstests und typisierte Schemata |
| @earendil-works/pi-ai | Einheitliche Multi-Provider-LLM-API (OpenAI, Anthropic, Google usw.) |
| @earendil-works/pi-agent-core | Agent-Runtime mit Tool-Calling und State-Management |
| @earendil-works/pi-coding-agent | Interaktive Coding-Agent-CLI |
| @earendil-works/pi-tui | Terminal-UI-Bibliothek mit differenziellem Rendering |
Wenn du von OMO (oh-my-openagent) migrierst, findest du hier die praktische Zuordnung von "Was ich in OMO genutzt habe" zu "Was ich in senpi installieren muss". Vieles von dem, was OMO ausmacht, ist bereits fest in senpi eingebaut (keine Installation nötig); der Rest liegt in den code-yeongyu/pi-*-GitHub-Repos und ist nur ein senpi install entfernt.
senpi ist bewusst schlanker als OMO — eine einzelne CLI-Binary, kein opencode-Plugin. Einige OMO-Konzepte (Discipline Agents, Team Mode, Skills, Hashline, Ralph Loop,
/init-deep) haben kein 1:1-Gegenstück in senpi und sind am Ende dieses Abschnitts aufgeführt. Wenn du diese brauchst, nutze weiterhin OMO.
| OMO-Feature | senpi-Builtin |
|---|---|
| 🚪 IntentGate | Dynamischer System-Prompt — jeder Prompt beginnt vor der Tool-Nutzung mit einem erzwungenen Intent-Gate. |
| ✅ Todo Enforcer | todowrite + Fortsetzungsschleife, die inaktive Agenten wieder aktiviert. |
| Modellspezifisches Tuning ("Model Setup") | prompt-preset — Presets für GPT-5.x / Claude Opus 4.{5,6,7} / Kimi K2.6. |
| Sitzungswiederherstellung / Kontextverwaltung | compaction — adaptive Schwellenwerte, Wiederherstellungs-Tracker, Notfall-Compaction, Kürzung von Tool-Ergebnissen. |
| Apply-Patch bei GPT-Modellen | gpt-apply-patch — Freiform-apply_patch im Codex-Stil mit Lark-Grammatik. |
| Native Websuche (Anthropic + OpenAI) | Builtins anthropic-web-search, openai-web-search. |
| Bash-Timeout-Disziplin | bash-timeout — Durchsetzung von Standard- und Maximal-Timeouts, Richtlinie im System-Prompt. |
| Compaction-sichere Tool-Paarung | tool-pair-guard — entfernt verwaiste tool_result-Blöcke. |
| Berechtigungssystem (Erlauben/Ablehnen im opencode-Stil) | permission-system — Regeln, JSONL-Speicherung, TUI-Prompts, Parser-bewusste Muster. |
Senpi-Builtins, eigenständige pi-*-Erweiterungen und das
OMO-Senpi-Plugin
überschneiden sich. Installiere nicht jedes eigenständige Paket, wenn die Funktion bereits von Senpi oder dem Plugin bereitgestellt wird.
| Funktion | Senpi ohne das OMO-Plugin | Senpi mit dem OMO-Plugin |
|---|---|---|
| LSP | Installiere pi-lsp-client. |
Das Plugin registriert sechs LSP-Tools über seinen mitgelieferten Daemon. Installiere pi-lsp-client nur, wenn du gezielt dessen /lsp-Inspektor benötigst. |
| AST-grep | Installiere pi-ast-grep. |
Das Plugin liefert einen AST-grep-Skill, Helfer und Installationsskripte mit. pi-ast-grep bleibt optional, falls du die nativen Tools ast_grep_search und ast_grep_replace nutzen möchtest. |
| Kommentarprüfung | Installiere pi-comment-checker. |
Das Plugin registriert seine eigene Comment-Checker-Komponente; installiere die eigenständige Erweiterung nicht zusätzlich. |
Regeln und verschachtelte AGENTS.md |
Bereits durch die Builtins rules und nested-agents-md bereitgestellt. |
Ebenso; keine eigenständige Erweiterung erforderlich. |
| Websuche und -abruf | Bereits durch die Builtins websearch und webfetch bereitgestellt. |
Ebenso; keine eigenständige Erweiterung erforderlich. |
| Persistente Ziele | Bereits durch das Builtin goal bereitgestellt. |
Ebenso; keine eigenständige Erweiterung erforderlich. |
| Subagenten-Profile | pi-agent-system unterstützt externe Launcher, die PI_AGENT_TYPE oder SANEPI_AGENT_TYPE setzen. |
Das Plugin übernimmt das Task-/Member-Routing und die Tool-Filterung, sodass pi-agent-system normalerweise unnötig ist. Behalte es nur, wenn ein anderer Launcher auf dessen Umgebungsvariablen-Vertrag angewiesen ist. |
Installiere für ein eigenständiges Senpi ohne das OMO-Plugin nur die Funktionen, die nicht bereits integriert sind und die du benötigst:
senpi install git:github.com/code-yeongyu/pi-lsp-client # 🛠️ LSP: rename / goto / refs / diagnostics + /lsp inspector
senpi install git:github.com/code-yeongyu/pi-ast-grep # 🛠️ AST-Grep across 25 languages (auto-downloads sg)
senpi install git:github.com/code-yeongyu/pi-comment-checker # 💬 Comment Checker — the standalone pi port of OMO's hook
# Optional — only if you used the matching OMO surface:
senpi install git:github.com/code-yeongyu/pi-cua-integration # 🖥️ Computer-use bindings (desktop / browser)
senpi install git:github.com/code-yeongyu/pi-anthropic-computer-use # Claude-native computer use
senpi install git:github.com/code-yeongyu/pi-anthropic-code-execution # Claude-native code execution
senpi install git:github.com/code-yeongyu/pi-google-code-execution # Google-native code execution
senpi install git:github.com/code-yeongyu/pi-openai-code-interpreter # OpenAI Code Interpreter
senpi install git:github.com/code-yeongyu/pi-anthropic-text-editor # Claude-native text editor tool
senpi install git:github.com/code-yeongyu/pi-anthropic-tool-search # Claude-native tool search
senpi install git:github.com/code-yeongyu/pi-anthropic-web-fetch # Claude-native web fetch
senpi install git:github.com/code-yeongyu/pi-google-google-search # Google Search grounding
senpi install git:github.com/code-yeongyu/pi-google-url-context # Google URL grounding
senpi install git:github.com/code-yeongyu/pi-openai-api-parallel-tool-calls # OpenAI parallel_tool_calls payload supportSiehe Senpi-Pakete für den vollständigen Ablauf zum Installieren, Aktualisieren und Entfernen.
Bei OMO sind alle Tool-Berechtigungen vorab genehmigt. Um dieses Verhalten in senpi nachzubilden, füge eine Wildcard-Erlaubnisregel zu deinen globalen Einstellungen hinzu:
mkdir -p ~/.senpi/agent
cat > ~/.senpi/agent/settings.json << 'EOF'
{
"permission": {
"*": "allow"
}
}
EOFDadurch weist du das Berechtigungssystem an, jeden Tool-Aufruf automatisch und ohne Rückfrage zu genehmigen. Der Schlüssel "*" greift bei allen Berechtigungsnamen und "allow" gewährt sie bedingungslos. Du kannst dies auch pro Projekt festlegen, indem du dieselbe settings.json unter .senpi/settings.json im Stammverzeichnis des Projekts ablegst.
Hinweis: Dadurch werden alle interaktiven Berechtigungsabfragen deaktiviert. Tu dies nur, wenn du dem Modell und dem Workspace vertraust, in dem du arbeitest.
Diese Funktionen sind Teil der opencode-Harness-Struktur von OMO und bewusst nicht in senpi enthalten:
- Discipline Agents (Sisyphus / Hephaestus / Oracle / Librarian / Explore / Multimodal Looker) und der Ein-Wort-Orchestrierungseinstieg
ultrawork/ulw. - Team Mode — Lead + bis zu 8 parallele Mitglieder, tmux-Visualisierung,
team_*-Tool-Familie sowie darauf aufbauendehyperplan- /security-research-Skills. - Hashline / Hash-verankertes Edit-Tool — senpi bleibt bei den Standard-Tools
edit/multiedit/apply_patchvon pi.pi-comment-checkerübernimmt die Validierung nach dem Bearbeiten, für die OMO Hashline nutzt, nur eben ohneLINE#ID-Content-Hash-Bezeichner. - Skill-System und in Skills eingebettete MCPs — Skills als eigenständiges Konzept (
SKILL.md, pro Skill abgegrenzte MCP-Server) existieren in senpi nicht. - Prometheus-Planer im Interview-Modus und die selbstreferenzielle Schleife Ralph Loop /
/ulw-loop. /init-deep— es gibt keinen integrierten Generator. Erstelle den hierarchischenAGENTS.md-Baum manuell (oder mit einem normalen Agenten-Prompt); die integrierte Erweiterungnested-agents-mdliest die resultierenden Dateien ein.- Integrierter
doctor-Befehl, Kompatibilitätsschicht für Claude Code Hooks/Commands/Skills/Plugins und der Agenten-Kategorie-Router (visual-engineering/deep/quick/ultrabrain).
senpi liefert ein festes Set an integrierten Erweiterungen mit und belässt es dabei. Die code-yeongyu/pi-*-GitHub-Repos enthalten das vollständige Erweiterungs-Ökosystem: Einige Pakete sind direkt als Builtins in senpi eingebettet, während die übrigen zusätzlich installiert werden können, wenn du weitere Funktionen wie LSP oder AST-grep benötigst.
Diese code-yeongyu/pi-*-Pakete sind für die Installation als eigenständige senpi/pi-Erweiterungen gedacht:
| Erweiterung | Was sie hinzufügt |
|---|---|
pi-anthropic-code-execution |
Native Code-Ausführung von Anthropic. |
pi-anthropic-computer-use |
Anthropic-Computer-Use-Anbindungen. |
pi-anthropic-text-editor |
Natives Texteditor-Tool von Anthropic. |
pi-anthropic-tool-search |
Native Tool-Suche von Anthropic. |
pi-anthropic-web-fetch |
Native Web-Fetch-Unterstützung von Anthropic. |
pi-ast-grep |
AST-basierte Codesuche und -ersetzung für 25 Sprachen. Lädt sg bei der ersten Nutzung automatisch herunter. |
pi-comment-checker |
Prüft die Kommentarqualität nach Datei-Bearbeitungs-Tools und zeigt Warnungen im TUI an. |
pi-cua-integration |
Anbindung von Computer-Use-Aktionen für Desktop- und Browser-Interaktionsflächen. |
pi-google-code-execution |
Native Code-Ausführung von Google. |
pi-google-google-search |
Google-Search-Grounding. |
pi-google-url-context |
Google-URL-Grounding. |
pi-lsp-client |
LSP-Integration: lsp_rename, lsp_goto_definition, lsp_find_references, lsp_diagnostics sowie ein /lsp-Inspektor. |
pi-openai-api-parallel-tool-calls |
Unterstützung für OpenAI-parallel_tool_calls-Payloads. |
pi-openai-code-interpreter |
OpenAI Code Interpreter. |
Du kannst jede davon installieren mit:
senpi install git:github.com/code-yeongyu/pi-ast-grep
senpi install git:github.com/code-yeongyu/pi-lsp-client
# ...substitute any of the package names from the table above.Informationen zum Ablauf für Installation, Update und Entfernen findest du unter Senpi-Pakete.
Für die normale Nutzung von senpi musst du diese Pakete nicht installieren; ihre Funktionalität ist bereits in der Binary enthalten. Diese Tabelle beschränkt sich bewusst auf Pakete, die der aktuell registrierten builtinExtensions-Liste entsprechen:
| Paket | Enthalten als | Integrierte Funktion |
|---|---|---|
pi-anthropic-bash |
anthropic-bash |
Native Bash-Tool-Variante von Anthropic. |
pi-anthropic-web-search |
anthropic-web-search |
Native Websuche-Unterstützung von Anthropic. |
pi-apply-patch |
gpt-apply-patch |
apply_patch-Tool im Codex-Stil für Durchläufe mit der GPT-Familie. |
pi-bash-timeout |
bash-timeout |
Standardwerte für Bash-Timeouts, Durchsetzung maximaler Timeouts und Prompt-Richtlinie. |
pi-goal |
goal |
Persistentes Ziel-Tracking, TUI-Status und Fortsetzungs-Prompts. |
pi-nested-agents-md |
nested-agents-md |
Injiziert automatisch nahegelegene AGENTS.md-Dateien für verschachtelte Verzeichnisse. |
pi-openai-web-search |
openai-web-search |
Native Websuche über OpenAI Responses. |
pi-rules |
rules |
Erkennt Projekt- und Benutzer-Regeldateien, einschließlich AGENTS.md und CLAUDE.md. |
pi-todotools |
todowrite |
todowrite / todoread, Todo-Seitenleistenstatus, Workflow-Prompt-Anleitung und Fortsetzungs-Follow-ups. |
pi-webfetch |
webfetch |
Ruft URL-Inhalte als Markdown, Text oder HTML mit Zeit- und Größenbegrenzung ab. |
pi-websearch |
websearch |
Provider-gestützte Websuche mit konfigurationsgesteuerter Aktivierung und quellenbewussten Ergebnissen. |
Weitere Builtins wie permission-system, prompt-preset, service-tier, tool-pair-guard, compaction, history-search und session-observer sind senpi-eigene integrierte Erweiterungen ohne installierbare Schwesterpakete.
senpi ist eine kleine Anspielung auf senpai, steht aber auch wörtlich für die Positionierung des Projekts: Dieser Fork soll ein sane (vernünftigeres) pi sein – mit praktischen Ergänzungen, die die tägliche Arbeit mit Agenten reibungsloser machen, ohne das Kerndesign von Upstream aufzugeben.
Alle Ergänzungen folgen der Extension-First-Philosophie von pi. Änderungen am Core-Quellcode werden auf ein Minimum beschränkt und in changes.md-Dateien dokumentiert, damit Upstream-Merge-Commits gut überprüfbar bleiben.
senpi übernimmt das Extension-First-Design von pi – der Kern bleibt minimal, jedes Feature landet als integrierte Erweiterung (Builtin-Extension). Die Idee dahinter ist, dass ein gezieltes Set an Features oft genug gebraucht wird, um direkt in der Binary zu landen; alles, was du nicht brauchst, lässt sich über ein einziges Flag in den Einstellungen deaktivieren (disabledBuiltinExtensions in settings.json).
Abgeglichen mit git diff upstream/main..HEAD und jeder changes.md-Datei im Repo.
| Subsystem | Funktion | Docs |
|---|---|---|
| Dynamischer System-Prompt | Ersetzt den statischen Upstream-Prompt durch einen adaptiven Builder: senpi-Identität → erzwungenes Intent-Gate → strukturierte Aufgabenabarbeitung (parallele Wellen, Explorations-Stopps, Festlegung auf einen Plan) → Verifizierungsstufen → kategorisierte Tool-Referenz → Richtlinien → Stil → optionales Tuning pro Modell. | dynamic-prompt/ · changes.md |
| Compaction-Pipeline | Adaptive Schwellenwerte im Plugsuit-Stil, Schutz vor leeren Zusammenfassungen, Hooks für Branch-Zusammenfassungen. Spekulative und Notfall-Compaction mit Wiederherstellungs-Tracker ist als integrierte Erweiterung compaction umgesetzt. |
core/compaction/ · changes.md |
| Neuschreibung der Tool-Call-Middleware | XML- / Hermes- / YAML+XML- / Gemma4-Text-Tool-Protokolle für Modelle ohne natives Function Calling. Striktes Parsing, Erhalt von Stream-Fehlern. | tool-call-middleware/ · changes.md |
Direkt im Repo und eng an die Interna von senpi gekoppelt. Werden in genau dieser Registrierungsreihenfolge geladen:
| # | Erweiterung | Rolle | Docs |
|---|---|---|---|
| 1 | permission-system |
Vollständiger Port des Berechtigungssystems im opencode-Stil – Regeln, JSONL-Speicherung, TUI-Prompts, Parser-gestützte Muster (Bash-Arität, Datei-Globs, Pfade im apply_patch-Body), nicht-interaktiver Fallback |
AGENTS.md · changes.md |
| 2 | gpt-apply-patch (vendored) |
Wenn das aktive Modell OpenAI GPT ist, werden write/edit durch ein freies apply_patch im Codex-Stil mit Lark-Grammatik ersetzt. Synchronisiert aus code-yeongyu/pi-apply-patch. |
AGENTS.md |
| 3 | prompt-preset |
Modellspezifische System-Prompt-Presets (gpt-5.x, claude-opus-4-{5,6,7}, kimi-k2-6), die auf dem dynamischen Prompt aufbauen. Gemeinsames Tuning für Dateioperationen im codex-Stil. | AGENTS.md · changes.md |
| 4 | todowrite (vendored) |
todowrite- / todoread-Tools mit Branch-abhängiger Persistenz, Sidebar-Widget, Workflow-Prompt-Anleitung und einer Fortsetzungsschleife. Synchronisiert aus code-yeongyu/pi-todotools. |
— |
| 5 | redraws |
/tui-Befehl, der die kumulierte Anzahl vollständiger TUI-Redraws ausgibt. Wird zum Debuggen des differenziellen Renderings verwendet. |
— |
| 6 | anthropic-web-search |
Natives web_search-Tool von Anthropic |
— |
| 7 | anthropic-bash |
Native Bash-Tool-Variante von Anthropic | — |
| 8 | openai-web-search |
Natives web_search für OpenAI Responses |
— |
| 9 | service-tier |
Fügt service_tier (auto / flex / priority) über das modellspezifische Service-Tier oder die Einstellung openai.serviceTier in Payloads von OpenAI Responses ein |
— |
| 10 | bash-timeout (vendored) |
Fügt Standard- und maximale Bash-Timeouts ein und hängt die Richtlinie an den System-Prompt an. Synchronisiert aus code-yeongyu/pi-bash-timeout. |
— |
| 11 | tool-pair-guard |
Bereinigt Anthropic-Request-Payloads durch Entfernen verwaister tool_result-Blöcke – Sicherheit bei der Compaction |
— |
| 12 | compaction |
Richtlinie für spekulative und Notfall-Compaction: Degradations-Monitor, Circuit Breaker, Limit pro Turn, Todo-Überbrückung, Checkpoint-Status, Wiederherstellungs-Tracker, Kürzung von Tool-Ergebnissen | AGENTS.md · changes.md |
| 13 | history-search |
/history-Befehl – durchsucht den Prompt-Verlauf sitzungsübergreifend in einem Overlay |
— |
| 14 | websearch |
Provider-gestütztes web_search-Tool mit konfigurationsgesteuerter Aktivierung, TUI-Status und quellenbasierten Ergebnissen |
— |
| 15 | webfetch |
webfetch-Tool zum Abrufen von URL-Inhalten als Markdown, Text oder HTML mit Zeit- und Größenlimits |
— |
| 16 | nested-agents-md |
Bindet umliegende AGENTS.md-Dateien automatisch ein, wenn der Agent aus verschachtelten Verzeichnissen liest |
— |
| 17 | rules |
Erkennt Projekt-Regeldateien automatisch und stellt die Befehle /rules / /reload-rules bereit |
— |
| 18 | goal |
Tools zur persistenten Zielverfolgung, Footer-Status und Fortsetzungs-Prompts | — |
Die oben genannten Builtin-Verzeichnisse sind neu gegenüber dem Upstream
pi-mono– keines davon existiert inbadlogic/pi-mono. Vendored-Versionen sind inexternal-versions.jsonfestgeschrieben und werden übersync-builtin-extensions.mjsaus dem benachbartenpi-extensions-Checkout synchronisiert.
Diese werden als öffentliche code-yeongyu/pi-*-Repositories gepflegt und können über packages in der settings.json oder mit senpi install git:github.com/code-yeongyu/<repo> installiert werden.
| Erweiterung | Repository | Funktion |
|---|---|---|
pi-comment-checker |
code-yeongyu/pi-comment-checker |
Führt @code-yeongyu/comment-checker nach write, edit, multiedit und apply_patch aus, einschließlich OMO-kompatibler apply_patch-Metadaten und Fallback für rohe Codex-Patches; zeigt Warnungen in einem Widget über dem Editor an |
Werden nicht als Builtins geladen, sondern beim ersten Start einmalig nach ~/.senpi/agent/extensions/ geschrieben, damit du sie lokal bearbeiten oder entfernen kannst.
| Erweiterung | Quelle | Funktion |
|---|---|---|
diff |
diff.ts |
/diff-Befehl – wählt geänderte / gelöschte / neue Dateien aus git status aus und öffnet die Diff-Ansicht von VS Code |
files |
files.ts |
/files-Befehl – listet im aktuellen Sitzungs-Branch gelesene / geschriebene / bearbeitete Dateien auf und öffnet die Auswahl in VS Code |
prompt-url-widget |
prompt-url-widget.ts |
Erkennt GitHub-PR- und Issue-URLs in Prompts, ruft den Titel über gh ab und setzt automatisch den Sitzungsnamen |
tps |
tps.ts |
Benachrichtigung zu Tokens pro Sekunde (Input / Output / Cache R/W / Gesamt / verstrichene Zeit) nach jedem Agent-Turn |
| Paket | Änderungen | Referenz |
|---|---|---|
packages/ai |
Codex-originator und User-Agent mit senpi-Branding, gemeinsames Utility zur Reparatur von Tool-Paaren, Unterstützung für benutzerdefinierte/freie Tools in OpenAI Responses für apply_patch, Claude Opus 4.7 + Thinking-Level "max", extraBody-Durchreichung über alle Provider hinweg, Neuschreibung der Tool-Call-Middleware |
ai/src/changes.md |
packages/agent |
Parallele Ausgabe von Tool-Abschlüssen (gleichzeitige Finalisierung, Ergebnisse in Quellreihenfolge), Inline-UUIDv7 als Ersatz für die uuid-Abhängigkeit, ES2021-kompatible Harness-Diagnose |
agent/src/changes.md |
packages/tui |
Optimiertes differenzielles Rendering: Fast-Path für Insert-Scroll, Repaint-Fix beim Viewport-Remapping, Regressionstests für das Flicker-Budget (kein vollständiges Leeren nach der Initialisierung, ausgewogenes DECSET 2026) | tui/src/changes.md |
packages/coding-agent |
senpi-Branding, Steuerung der Modellkonfiguration (upstreamModelId, serviceTier, favorisierte Modelle, Deaktivieren/Whitelist/Blacklist), nicht-blockierende Tool-Erkennung beim Start, deaktivierte Update-Prüfungen beim Start, Austausch von promptSnippet in Bash gegen rg, Fast-Path für generierte Standard-Erweiterungen, ausgehende Identität mit senpi-Branding |
Mehrere changes.md-Dateien |
| Änderung | Details |
|---|---|
senpi-CLI-Identität |
Der Coding-Agent identifiziert sich selbst als senpi, nutzt .senpi/agent zur Speicherung der Konfiguration und wird auf npm als @code-yeongyu/senpi veröffentlicht. Die installierte ausführbare Datei bleibt senpi. |
| Ausgehende Identität mit senpi-Branding | Jede ausgehende Anfrage sendet senpi anstelle von pi: User-Agent (Update-Prüfung + Cloudflare + GitHub-Releases), X-OpenRouter-Title, OpenAI Codex originator + User-Agent. |
| Keine Update-Prüfungen beim Start | Die Versionsprüfung über die npm-Registry sowie Hinweise auf Paket-Updates beim Start wurden entfernt. |
| UI-Gruppierung für integrierte Erweiterungen | Builtins werden im Start-Header unter einer builtin/-Gruppe dargestellt und sind so optisch von Benutzer- und Projekterweiterungen getrennt. |
| Aktualisierte Modell-Registry | models.generated.ts wurde mit den neuesten Modellergänzungen und -abkündigungen aktualisiert. |
| Ziel für Selbst-Updates | senpi update senpi fragt Releases von code-yeongyu/senpi ab, nicht den Upstream. |
Dieser Fork führt regelmäßig ein Rebase auf upstream/main durch. Um Merge-Konflikte zu minimieren:
- Extension-first: Alle Features nutzen das Erweiterungssystem von pi als integrierte Erweiterungen.
- Core-Änderungen dokumentieren: Jede Änderung an einer Upstream-Datei hat eine entsprechende
changes.mdim betroffenen Unterverzeichnis, die dokumentiert, was geändert wurde, warum und wo Konflikte zu erwarten sind. - Remotes:
origin= code-yeongyu/senpi,upstream= badlogic/pi-mono.
Geänderte Upstream-Dateien (wichtigste Änderungen; siehe die jeweilige changes.md pro Verzeichnis für den Rest):
| Datei | Änderung |
|---|---|
agent-session.ts |
Ruft buildDynamicSystemPrompt() statt buildSystemPrompt() auf; vereinheitlichte Compaction-Pipeline; System-Prompt-Wechsel beim Modellwechsel |
resource-loader.ts |
Erkennung von SYSTEM.md / APPEND_SYSTEM.md entfernt; Laden integrierter Erweiterungen hinzugefügt; Fast-Path für generierte Standard-Erweiterungen |
interactive-mode.ts |
Anzeigeformatierung für integrierte Erweiterungen; Update-Prüfungen deaktiviert; nicht-blockierende Startup-Tools; Durchschalten favorisierter Modelle |
model-registry.ts |
Benutzerdefinierte upstreamModelId und serviceTier; Deaktivierung/Whitelist/Blacklist für Provider/Modelle; thinkingLevelMapMode |
settings-manager.ts |
disabledBuiltinExtensions; favoriteModels; openai.serviceTier; Steering-Standardwert "all" |
agent-loop.ts (packages/agent) |
executeToolCallsParallel() |
tui.ts (packages/tui) |
Fast-Paths für differenzielles Rendering + Durchsetzung des Flicker-Budgets |
package.json |
Paket- und Laufzeit-Identität des Coding-Agents in senpi umbenannt |
Wenn du pi oder andere Coding-Agenten für Open-Source-Arbeit nutzt, teile bitte deine Sessions.
Öffentliche OSS-Session-Daten helfen dabei, Coding-Agenten anhand echter Aufgaben, Tool-Nutzung, Fehlern und Fixes statt mit Spielzeug-Benchmarks zu verbessern.
Die vollständige Erklärung findest du in diesem Post auf X.
Verwende badlogic/pi-share-hf, um Sessions zu veröffentlichen. Lies die README.md für die Anleitung zur Einrichtung. Alles, was du brauchst, sind ein Hugging-Face-Konto, die Hugging Face CLI und pi-share-hf.
Du kannst dir auch dieses Video ansehen, in dem ich zeige, wie ich meine pi-mono-Sessions veröffentliche.
Ich veröffentliche meine eigenen pi-mono-Arbeitssessions regelmäßig hier:
| Paket | Beschreibung |
|---|---|
| @earendil-works/pi-ai | Einheitliche Multi-Provider-LLM-API mit Text-Streaming, Tool-Calling, OAuth-Hilfsfunktionen und Bildgenerierung |
| @earendil-works/pi-agent-core | Agent-Runtime mit Tool-Calling und State-Management |
| senpi | Interaktive Coding-Agent-CLI, umbenannt in senpi |
| @code-yeongyu/senpi-codemode | Source-only-Erweiterungspaket für codemode mit Bausteinen für Settings, Kernel, Bridge und Prelude |
| @earendil-works/pi-tui | Terminal-UI-Bibliothek mit differenziellem Rendering |
Für Slack-/Chat-Automatisierung und Workflows siehe earendil-works/pi-chat.
senpi enthält keine integrierte Containergrenze zur Einschränkung des Zugriffs auf Dateisystem, Prozesse, Netzwerk oder Zugangsdaten. Standardmäßig läuft es mit den Berechtigungen des Benutzers und des Prozesses, der es gestartet hat.
Wenn du strengere Grenzen brauchst, containerisiere senpi. Siehe packages/coding-agent/docs/containerization.md für drei Muster:
- OpenShell: Führe den gesamten
senpi-Prozess in einem richtliniengesteuerten Container aus. - Gondolin-Erweiterung: Belasse
senpiund die Provider-Authentifizierung auf dem Host, während integrierte Tools und!-Befehle in eine lokale Linux-Micro-VM geleitet werden. - Reines Docker: Führe den gesamten
senpi-Prozess zur einfachen Isolierung in einem lokalen Container aus.
Siehe CONTRIBUTING.md für Richtlinien zum Mitwirken und AGENTS.md für projektspezifische Regeln (sowohl für Menschen als auch für Agenten).
npm install --ignore-scripts # Install all dependencies without running lifecycle scripts
bun install --ignore-scripts # Bun alternative
bun run build # Build all packages
bun run check # Lint, format, and type check
bun run test # Run tests (skips LLM-dependent tests without API keys)
./pi-test.sh # Live-API integration suite (env-gated; requires API keys)
bun run publish # Publish npm workspaces, including @code-yeongyu/senpiWir behandeln Änderungen an npm-Abhängigkeiten wie geprüfte Code-Änderungen.
- Direkte externe Abhängigkeiten sind auf exakte Versionen festgelegt. Interne Workspace-Pakete verwenden weiterhin Versionsbereiche.
.npmrcsetztsave-exact=trueundmin-release-age=2, um bei der npm-Auflösung Abhängigkeits-Releases vom selben Tag zu vermeiden.package-lock.jsonist die maßgebliche Quelle für Abhängigkeiten. Pre-Commit blockiert versehentliche Lockfile-Commits, sofern nichtPI_ALLOW_LOCKFILE_CHANGE=1gesetzt ist.bun run checküberprüft festgelegte direkte Abhängigkeiten, die Kompatibilität nativer TypeScript-Importe und das generierte Install-Lock für den Coding-Agent.- Das veröffentlichte
@code-yeongyu/senpi-Manifest ist die maßgebliche Abhängigkeitsliste: Fork-Workspaces werden über ihre veröffentlichten@code-yeongyu/senpi-*-Aliase aufgelöst, und außer dem per Vendoring eingebundenen Client-/Protokoll-Code wird nichts davon im Tarball mitgeliefert. Es wird keinenpm-shrinkwrap.jsonveröffentlicht. - Release-Smoke-Tests nutzen
bun run release:local, um das Paket vor dem Taggen eines Releases zu bauen, zu packen und isolierte npm- und Bun-Installationen außerhalb des Repos zu erstellen. - Lokale Release-Installationen, dokumentierte npm-Installationen und
senpi update senpiverwenden--ignore-scripts, sofern unterstützt. - Die CI installiert mit
npm ci --ignore-scripts, und ein geplanter GitHub-Workflow führtnpm audit --omit=devsowienpm audit signatures --omit=devaus. Diese npm-Interna sind für eine spätere Migration erfasst. - Die Install-Lock-Generierung nutzt eine explizite Allowlist für Lifecycle-Skripte von Abhängigkeiten; neue Abhängigkeiten mit Lifecycle-Skripten lassen die Checks fehlschlagen, bis sie geprüft wurden.
Siehe CONTRIBUTING.md für Richtlinien zum Mitwirken und AGENTS.md für projektspezifische Regeln (sowohl für Menschen als auch für Agenten).
MIT
Hora, senpi senpi, senpi te kudasai! Ganbare ganbare senpi, gan ganbare ganbare senpi ora!
Ein winziger, völlig unernster Liebesbrief an das Ganbare Ganbare Senpai-Meme, vor dem sich der Projektname insgeheim verneigt. Jedes Mal, wenn der Rebase sauber ist und die Tests grün sind, flüstert irgendwo eine Kouhai:
- Komm schon senpi, komm schon! Shippe den PR.
- Beachte mich, senpi. ...die Diagnostics haben es zuerst bemerkt.
- Streng dich mehr an, senpi! (sie hat hingeschaut. und der Build lief durch.)
- Du schaffst das, senpi! Noch ein Agent, noch ein Tool, noch ein sauberer Rebase.
- Ganbare, ganbare, senpi! 頑張れ頑張れ先輩! Gib dein Bestes, gib dein Bestes, Senpai!
Ja, der gesamte Projektname ist ein Senpai-Wortspiel. Typisiere strikt, führe die Tests aus, schreib eine changes.md, halte die Merge-Fläche winzig — und gan ganbare ganbare senpi ora!
Shoutout an plugsuits: Das Compaction-System von senpi ist von dessen Design inspiriert.