kxh4892636
pi-deepseek-anchor
pi extension: DeepSeek V4 Pro Minimal-anchored bootstrap, then full Standard tools (port of dsh-anchored-standard)
- Stars
- 4
- Language
- TypeScript
- Created
- Aug 15, 2026
- Updated
- Aug 15, 2026
Introduction
pi-deepseek-anchor
中文说明:README.zh-CN.md
pi-deepseek-anchor enables the full-powered DeepSeek V4 Pro to run at full strength in pi, with significantly improved results (Project2: 91–92 → 98–99).
Cause DeepSeek V4 Pro selects its trajectory based on the API-visible tool catalog. With the default full catalog, the first response typically starts with "Let me..." and follows the Standard trajectory (Project2: 91–92). With the official Minimal pair (bash + str_replace_editor), the first response starts with "We need..." and produces zero let me (Project2: 98–99). Staying on Minimal permanently loses the full toolset. This extension applies Minimal only to request #1 and restores the full catalog from request #2, so both are retained in one session.
Install
pi install npm:pi-deepseek-anchor
Or from GitHub:
pi install git:github.com/kxh4892636/pi-deepseek-anchor@v1.0.0
Then /reload or restart pi. Works with the full-powered DeepSeek V4 Pro official release.
Manual fallback: copy index.ts to ~/.pi/agent/extensions/anchored-standard/index.ts (global) or <project>/.pi/extensions/anchored-standard/index.ts (project-local).
Behavior
| Request #1 (bootstrap) | Request #2+ (promoted) | |
|---|---|---|
| Tools | bash + str_replace_editor, byte-identical to the official Minimal preset | full pi tool catalog |
| System prompt | You are a helpful software engineer assistant. (46 chars) | persona remains; stripped pi context returns as a user message |
| Output budget | adapter default (no cap; bootstrapMaxTokens is opt-in) | adapter default |
Promotion fires on the first durable signal: the first assistant message or the first tool call, whichever comes first (promoteOn: "either" default). State is durable, so /resume and reload preserve the phase.
pi adaptation
| Upstream (dsh preset) | pi port |
|---|---|
| Minimal tool rows | pi.registerTool overrides: bash uses the byte-identical Minimal description and delegates to pi's built-in createBashTool; str_replace_editor implements the official schema and upstream filesystem semantics (view / create / str_replace / insert, 16000-char truncation, exact error messages) |
tool-bootstrap pre-step filter | before_agent_start + before_provider_request: request #1 is Minimal-exact; late appends (e.g. pi-memory) are dropped on request #1 and moved to a user message after promotion |
Persona row (complete: true) | minimalPersona + personaScope: "always" (default): persona remains the system prompt for the whole session; stripped context is re-delivered as a user message from request #2 |
| Durable event scan | phase derived from pi's durable session branch plus a dsh-anchored-state custom entry |
| Zero-Anchored Standard mode | zeroAnchor: true in PI_DSH_ANCHOR_CONFIG |
Verification
End-to-end with official deepseek-v4-pro, reasoningEffort=max, --mode rpc:
REQ#1: tools=[bash, str_replace_editor]
system='You are a helpful software engineer assistant.' (46 chars)
first thinking: "We need answer briefly about repository. Need inspect. Use tools."
REQ#2: full tool catalog + normal pi context (delivered as a user message)
Configuration
Edit DEFAULT_CONFIG in index.ts, or override at runtime:
{"promoteOn": "tool-call", "bootstrapMaxTokens": 1024, "personaScope": "always"}
Keys: bootstrapTools (default ["bash","str_replace_editor"]), promoteOn (either | tool-call | assistant-message), bootstrapMaxTokens (optional; unset = no cap), minimalPersona (default true), personaScope (always | bootstrap, default always), personaText, stripContext, zeroAnchor (default false), zeroAnchorText, editorMaxOutputChars (default 16000).
Verify & debug
/dsh-anchorprints the phase;/dsh-anchor promotepromotes now;/dsh-anchor on|offre-arms/disables the bootstrap for the session.- The TUI footer shows
bootstrap: bash/str_replace_editoruntil promotion. PI_DSH_ANCHOR_DEBUG=1dumps assembled payloads toPI_DSH_ANCHOR_DEBUG_FILE(default/tmp/dsh-anchor-debug.jsonl).
Type check
npx tsc -p tsconfig.check.json
Adjust the three paths entries in tsconfig.check.json to the installed pi type-definition locations.
Files
package.json— pi package manifestindex.ts— pi extension (single file, zero runtime deps)README.zh-CN.md— Chinese documentationtsconfig.check.json— type-check configLICENSE— MIT, including upstream copyright noticesNOTICE— upstream derivation notice
License
MIT. index.ts is a port of the MIT-licensed upstream preset; original copyright notices are retained.
Upstream
This project is a pi port of xiaobright/dsh-anchored-standard. The upstream README and methodology are the basis for this port:
- Repository: https://github.com/xiaobright/dsh-anchored-standard
- README: English · 中文