@8monkey/pi-context-history
v0.3.0
Published
Pi extension that manages conversation context: trims old history, strips stale tool calls, and keeps a rolling summary fed back into the system prompt. Each feature toggles independently.
Readme
pi-context-history
A Pi extension that keeps long-running conversations lean and focused.
In long sessions, the context window fills with old messages and tool output the model no longer needs. This extension removes what's stale and keeps a rolling summary so earlier context isn't lost.
Everything is on by default and works once installed. Each feature can be disabled independently.
Install
pi install npm:@8monkey/pi-context-historyFeatures
- Trim history. Drops messages older than
PI_HISTORY_DAYS(60 by default) on each context rebuild. - Strip tool history. Removes tool calls and results from turns before the current one, leaving the in-progress turn untouched.
- Compact. Keeps a rolling summary of each session in
~/.pi/agent/compact/<session-id>.mdand folds it into that session's system prompt, so the model continues with prior context. The summary regenerates during session start when you resume a session after it has gone stale. Run/compact-sessionto regenerate on demand. - Append message. Adds a user or assistant message to the end of the history with
/add-user-messageand/add-assistant-message.
Commands
| Command | What it does |
|---|---|
| /compact-session | Write a fresh summary of the current session now, ignoring the staleness window. |
| /add-user-message <text> | Add a message to the conversation as if you had typed it. |
| /add-assistant-message <text> | Add a message as if the assistant had said it. Requires a selected model. |
Appended messages are persisted immediately but only enter the live context on the next rebuild (resume or branch).
Configuration
All configuration is via environment variables, and all of it is optional.
Feature toggles
Each feature is on by default. Set its variable to false to disable it.
| Variable | Feature |
|---|---|
| PI_TRIM_HISTORY | Trim history |
| PI_STRIP_TOOL_HISTORY | Strip tool history |
| PI_COMPACT | Compact (generation and injection) |
| PI_APPEND_MESSAGE | The append-message commands |
Settings
| Variable | Default | Description |
|---|---|---|
| PI_HISTORY_DAYS | 60 | Maximum age, in days, of messages kept in context. |
| PI_COMPACT_STALENESS_DAYS | 3 | How old the summary may get before it's regenerated on resume. |
Compact prompt
Override the built-in prompt with a file at prompts/compact.md, read from the project .pi/ first, then ~/.pi/. It must contain the {conversation_history} placeholder.
Development
No runtime dependencies. Pi loads the TypeScript directly, so there's no build step, and it runs under Node or Bun.
node --test # run tests
npm run typecheckLicense
MIT
