enhance pi configuration and skills
This commit is contained in:
parent
623512cbf5
commit
ab0a86a707
18 changed files with 2000 additions and 159 deletions
81
pi/extensions/openai-server-compaction/README.md
Normal file
81
pi/extensions/openai-server-compaction/README.md
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
# OpenAI server compaction
|
||||
|
||||
A vendored Pi extension that uses OpenAI's Responses compaction protocol for GPT
|
||||
models while preserving Pi's session, tree, and fallback behavior.
|
||||
|
||||
This fork is based on
|
||||
[`algal/pi-openai-server-compaction`](https://github.com/algal/pi-openai-server-compaction)
|
||||
and retains its MIT license. It is adapted for this dotfiles repository and Pi
|
||||
0.82.
|
||||
|
||||
## Scope
|
||||
|
||||
Remote compaction is intentionally limited to GPT models on these native Pi
|
||||
providers:
|
||||
|
||||
- `openai/*` using `openai-responses`
|
||||
- `openai-codex/*` using `openai-codex-responses`
|
||||
|
||||
Other models and providers are untouched and continue using Pi's default
|
||||
compaction.
|
||||
|
||||
## Compaction behavior
|
||||
|
||||
Pi remains responsible for deciding when to compact, selecting the cut point,
|
||||
and writing the compaction entry. On `session_before_compact`, this extension:
|
||||
|
||||
1. asks OpenAI for an opaque `compaction` item through the Responses API;
|
||||
2. generates a portable text summary in parallel;
|
||||
3. stores the opaque replacement history in
|
||||
`CompactionEntry.details.remoteCompaction`; and
|
||||
4. replays that history on later requests to the exact same provider/API/model.
|
||||
|
||||
If remote compaction fails but the portable summary succeeds, Pi uses that text
|
||||
summary. If neither extension path succeeds, the handler returns control to
|
||||
Pi's default compactor.
|
||||
|
||||
The opaque artifact is model-specific. Switching models uses Pi's portable text
|
||||
summary; switching back reconstructs the matching artifact from session JSONL.
|
||||
|
||||
## Pi 0.82 adaptation
|
||||
|
||||
Unlike upstream, this fork does not override Pi's OpenAI provider or install a
|
||||
custom WebSocket transport. It uses Pi 0.82's native HTTP Responses transport.
|
||||
This avoids the upstream WebSocket partial-rendering issue and removes the
|
||||
runtime `ws` dependency.
|
||||
|
||||
Because Pi's full replay payload is not safe to combine with
|
||||
`previous_response_id`, this fork disables that optimization. It also leaves
|
||||
normal pre-compaction requests unchanged instead of enabling OpenAI's automatic
|
||||
`context_management`, whose compaction stream events Pi 0.82 does not natively
|
||||
persist. Pi triggers compaction normally; post-compaction requests replay the
|
||||
opaque artifact explicitly.
|
||||
|
||||
## Data handling
|
||||
|
||||
Conversation context is sent to OpenAI during compaction with `store: false`,
|
||||
and returned encrypted artifacts are stored in Pi's local session JSONL. The
|
||||
artifacts are not human-readable. OpenAI's normal API data-handling and abuse
|
||||
monitoring policies still apply.
|
||||
|
||||
## Configuration
|
||||
|
||||
Configuration is read from:
|
||||
|
||||
- `~/.pi/agent/openai-server-compaction.json`
|
||||
- `.pi/openai-server-compaction.json` (takes precedence)
|
||||
|
||||
```json
|
||||
{
|
||||
"enabled": true,
|
||||
"notify": false
|
||||
}
|
||||
```
|
||||
|
||||
Environment overrides:
|
||||
|
||||
- `PI_OPENAI_SERVER_COMPACTION_ENABLED`
|
||||
- `PI_OPENAI_SERVER_COMPACTION_NOTIFY`
|
||||
|
||||
Set `PI_OPENAI_SERVER_COMPACTION_ENABLED=0` for a quick rollback, or start Pi
|
||||
with `--no-extensions` to bypass all extensions.
|
||||
Loading…
Add table
Add a link
Reference in a new issue