pi-anchored-standard
DeepSeek Harness 'Anchored Standard' as a pi package: Minimal-exact first request (persona + persistent bash + str_replace_editor), then on-demand tool unlock. Port of xiaobright/dsh-anchored-standard.
Package details
Install pi-anchored-standard from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:pi-anchored-standard- Package
pi-anchored-standard- Version
0.1.0- Published
- Aug 16, 2026
- Downloads
- 150/mo · 16/wk
- Author
- shirolegacy
- License
- MIT
- Types
- extension
- Size
- 64 KB
- Dependencies
- 0 dependencies · 2 peers
Pi manifest JSON
{
"extensions": [
"./extensions/index.ts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-anchored-standard
DeepSeek Harness "Anchored Standard" as a pi package.
The DSH community finding: DeepSeek-V4-Pro's agent trajectory is decided by what the model sees on the first request — the Minimal preset's system prompt + its exact two-tool schema. Anchored Standard reproduces that first request, then widens the catalog after the first tool call. This package does the same thing inside pi, so you can run V4 Pro through pi (with pi's extensions, skills, subagents, web access…) without giving up the anchor.
Not affiliated with DeepSeek or with the upstream author. Experimental.
What it does
| Request | System prompt | Tool catalog |
|---|---|---|
| #1 (bootstrap) | You are a helpful software engineer assistant. |
bash (persistent) + str_replace_editor — byte-identical to DSH Minimal (name, description, JSON schema, key order; verified against a captured DSH request/header) |
| after first tool call / reply (promoted) | same | bootstrap pair + dev_tool_search, skill_search, skill_load + whatever the model unlocked |
| after a compaction (controlled) | same | bootstrap pair + compactionTools (default read write edit grep find ls) until a new promotion signal |
Also, while engaged:
- no AGENTS.md digest, no skill catalog, no tool guidance, no pi identity in
the system prompt — ever (DSH
persona.complete: true); - after promotion, ONE short user-role hint says which instruction files exist
(AGENTS.md etc.) so the model reads them itself (DSH
instruction-hint); - every other installed pi tool (built-ins, web access, subagents, ask-user…)
is discoverable/unlockable via
dev_tool_search; unlocks persist for the session and survive resume/reload/compaction; max_tokensis pinned to 256000 (DSH's official adapter default — the measured anchor condition; pi would send 384000) andstrictis stripped from the serialized function tools (DSH sends none);- the phase is derived from the session branch, so
/resume,/fork, reload and compaction keep it.
bash is a real persistent shell (cwd/env/functions survive across calls,
stderr merged, 300 s timeout → partial output + reset, [exit code: N] marker,
16000-char clip with DSH's <response clipped> note). str_replace_editor is
a straight port of DSH's editor (view / create / str_replace / insert,
absolute paths, same messages).
Install
pi install npm:pi-anchored-standard # recommended
pi install git:github.com/Shiro-Legacy/pi-anchored-standard # GitHub
pi install /absolute/path/to/pi-anchored-standard # local checkout
Then run pi on DeepSeek:
pi --provider deepseek --model deepseek-v4-pro --thinking high
Auth: DEEPSEEK_API_KEY in the environment, or /login inside pi.
Provider gate
By default the anchor engages only when the session's provider is
deepseek; on any other provider the extension stays passive (pi's normal
prompt and tools), so one global install does not hijack your GPT/Claude/Grok
sessions. Override with --anchored (force on for this session) or
"providers": ["*"] in the config.
Note: activation registers a bash tool that overrides pi's built-in bash
for the rest of that process; if you switch models mid-session to a
non-listed provider the extension goes passive but the persistent shell stays.
Start a fresh pi for other providers.
Configure
Optional JSON, later wins: ~/.pi/agent/anchored-standard.json,
<cwd>/.pi/anchored-standard.json, env PI_ANCHORED_STANDARD='{...}'.
{
"providers": ["deepseek"], // "*" = all
"persona": "You are a helpful software engineer assistant.",
"bootstrapTools": ["bash", "str_replace_editor"],
"residentTools": ["dev_tool_search", "skill_search", "skill_load"],
"compactionTools": ["read", "write", "edit", "grep", "find", "ls"],
"promoteOn": "either", // "tool-call" | "assistant-message" | "either"
"appendSystemPrompt": "message", // what to do with --append-system-prompt:
// "message" = user-role message after the first prompt (default)
// "system" = append to persona (breaks the byte-identical anchor)
// "drop"
"maxTokens": 256000, // null = leave pi's value
"stripStrictFromTools": true,
"instructionHint": true,
"shellTimeoutMs": 300000,
"maxOutputChars": 16000,
"bashPath": "bash",
"notify": true // TUI notices on phase changes
}
/anchored inside pi prints the current phase, catalog, unlocks and config.
Verify
PI_ANCHORED_TRACE=/path/trace.jsonl pi … appends one JSON line per provider
request (system prompt, tool names, max_tokens, full tool schemas) — the pi
analogue of DSH's request/header events. For request #1 you should see:
{"seq":1,"phase":"bootstrap","model":"deepseek-v4-pro","max_tokens":256000,
"system":"You are a helpful software engineer assistant.",
"tools":["bash","str_replace_editor"],"messageCount":2, ...}
and from #2 on "phase":"promoted" with the resident set. npm test runs the
unit tests, including a byte-for-byte comparison of the two tool schemas
against the captured DSH header (test/fixtures-dsh-minimal-header.json).
Differences from the DSH preset
- DSH's
bashrides a PTY; this one drivesbashover pipes with the same marker protocol (exec 2>&1, per-command stdin/dev/null,set +H). Interactive/TTY-dependent programs behave differently. The model-facing schema and description are identical. - DSH strips two specific injected messages on request #1; pi builds those into the system prompt instead, so replacing the system prompt achieves the same "only the user message + persona" first request.
skill_loadreturns the skill body as the tool result rather than injecting it into the next request.- Post-promotion tools come from whatever is installed in your pi, so the
dev_tool_searchindex text is generic; an empty query lists the catalog. - No Windows
custom-bash; needs abashon PATH.
Layout
extensions/
index.ts package entry point
anchored-standard/
index.ts extension: gate, tools, phase wiring, provider hooks, /anchored
schemas.ts byte-identical persona + tool descriptions/schemas
persistent-shell.ts persistent bash over pipes
editor.ts str_replace_editor port
phase.ts bootstrap → promoted → (compaction) → controlled machine
config.ts config layers + validation
test/ node --test (Node ≥ 22.18, type-stripping)
Credits
Mechanism, measurements and the original DSH preset: xiaobright/dsh-anchored-standard and xiaobright/modeltest. MIT.