{"_id":"@agent-context/pi-sift","_rev":"2-cde1ee9173ac73cfc4f952737aedc74b","name":"@agent-context/pi-sift","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"@agent-context/pi-sift","version":"0.0.1","keywords":["pi-package","sift","context-compression"],"license":"Apache-2.0","_id":"@agent-context/pi-sift@0.0.1","maintainers":[{"name":"liangshuai","email":"509856256@qq.com"}],"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"1508d82e68a92b94f6492d71fd716bd103d9d8cd","tarball":"https://registry.npmjs.org/@agent-context/pi-sift/-/pi-sift-0.0.1.tgz","fileCount":13,"integrity":"sha512-KIfwbWexpl5pORB5a+XMIF9JOuQlLD44tlebjP890VDQtLrJTL4dzWd0ywZ9BlTtRtG/dpEKjTm5bs30LzjKEw==","signatures":[{"sig":"MEQCIGM514inDW3BPS+OMo6Fj2vsMxPi3youAqgSbC95vzLwAiBNfwWfDZbsKIXHkpA+lXCP3dmNsBJ6Jt2VoKMP871YoQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37103},"type":"module","gitHead":"ac87dcf68c96f2a922d6ffc15e7e5b88122bb84b","scripts":{"test":"node --test --experimental-strip-types test/*.test.ts"},"_npmUser":{"name":"liangshuai","email":"509856256@qq.com"},"_npmVersion":"11.19.0","description":"Pi coding-agent extension that compresses tool results with @agent-context/sift","directories":{},"_nodeVersion":"26.7.0","dependencies":{"@agent-context/sift":"0.0.1-alpha.7"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"1.3.7","@types/node":"^22.15.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-sift_0.0.1_1788416529656_0.4452495312150797","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"pi":{"extensions":["./index.ts"]},"_id":"@agent-context/pi-sift@0.0.2","dist":{"shasum":"d20f274ec1fdee383b35ca95a3915a9efcc0fb12","tarball":"https://registry.npmjs.org/@agent-context/pi-sift/-/pi-sift-0.0.2.tgz","fileCount":13,"integrity":"sha512-aHjY7r605F1nyciHa7R1PmGLaqyL01/Dr8SU6DrCB29fXioQWahq0XAgGSGLGlghzf1BPpHljyhbIWswp5Uulw==","signatures":[{"sig":"MEUCIGwjSF+tJfS8Q114BjYMFAK0S6JQaqg1ERnMS0Ho6ObqAiEAlxiJJE832WwK6kauh1R8r6Bc78DrIhapSC3NbMYQ5fg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD9dWMStf4xndDIi84W4tJ53/sPacqYCgKdXvJM2hJpIQIhAOB8a4dRorc+5Kb8Yh2UjDb65aHrWwg7GLxrD4mEqKQT"}],"unpackedSize":36216},"name":"@agent-context/pi-sift","type":"module","gitHead":"f82b93145ade36bff689c8c51d516c968b614e19","license":"Apache-2.0","scripts":{"test":"node --test --experimental-strip-types test/*.test.ts"},"version":"0.0.2","_npmUser":{"name":"liangshuai","email":"509856256@qq.com"},"keywords":["pi-package","sift","context-compression"],"_npmVersion":"11.3.0","description":"Pi coding-agent extension that compresses tool results with @agent-context/sift","directories":{},"maintainers":[{"name":"liangshuai","email":"509856256@qq.com"}],"_nodeVersion":"24.0.2","dependencies":{"@agent-context/sift":"0.0.1"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"1.3.7","@types/node":"^22.15.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-sift_0.0.2_1788702080992_0.7583451028839117"}}},"time":{"created":"2026-09-03T06:22:09.466Z","modified":"2026-09-06T13:41:21.282Z","0.0.1":"2026-09-03T06:22:09.852Z","0.0.2":"2026-09-06T13:41:21.093Z"},"license":"Apache-2.0","keywords":["pi-package","sift","context-compression"],"description":"Pi coding-agent extension that compresses tool results with @agent-context/sift","maintainers":[{"name":"liangshuai","email":"509856256@qq.com"}],"readme":"# `@agent-context/pi-sift`\n\nPi coding-agent **扩展**：在工具结果进入模型前用 [`@agent-context/sift`](https://www.npmjs.com/package/@agent-context/sift) 压缩，并注册 `sift_retrieve` 供模型取回原文。\n\n这不是检索、记忆或 MCP，也不会改写整包模型请求；它只处理工具输出。\n\n## 安装\n\n```bash\n# 用户级\npi install npm:@agent-context/pi-sift\n\n# 项目级\npi install -l npm:@agent-context/pi-sift\n```\n\n`pi install` 会把包装到 `~/.pi/agent/npm/`（用户级）或 `.pi/npm/`（项目级），并写入 `settings.json`。\n\n## 配置\n\n优先级：CLI flag > 环境变量 > 默认值。\n\n| 项 | Flag | 环境变量 | 默认 |\n| --- | --- | --- | --- |\n| 启用 | `--sift` / `--no-sift` | `SIFT_ENABLED=0` | 启用 |\n| 最小 UTF-8 字节数 | `--sift-min-length 400` | `SIFT_MIN_LENGTH` | `200` |\n| 额外跳过列表 | `--sift-exclude bash,grep` | `SIFT_EXCLUDED_TOOLS` | 始终排除 `sift_retrieve` |\n\n`SIFT_ENABLED=0` 在扩展加载时生效；`--no-sift` 在会话启动时生效。\n\nSift 不会压缩低于 512 字节的文本。\n\n## 压缩规则\n\n1. 只处理纯文本；图文混合的结果整段跳过。\n2. 错误、已被 Pi 截断、过短、排除列表中的工具，以及已含合法 `<<stash:24-hex>>` 标记的文本保持原样。\n3. 压缩后若没有节省 token，原文不动。\n\n## `sift_retrieve`\n\n当压缩输出含 `<<stash:KEY>>` 且需要原文时调用。\n\n- 参数：`stashKey` — 24 位十六进制，或完整 `<<stash:KEY>>` 标记。\n- 成功：原文纯文本。\n- 失败：返回错误原因和建议操作，不会中断会话。\n\n如果内容已过期或来自其他 session，请重新运行原工具，不要反复调用 `sift_retrieve`。\n\n`sift_retrieve` 自带使用说明，Agent 无需额外提示就知道如何调用。\n\n## Stash\n\n| | |\n| --- | --- |\n| 位置 | `${PI_CODING_AGENT_DIR or ~/.pi/agent}/sift/{sessionId}/` |\n| 隔离 | 按 Pi `sessionId` |\n| TTL | 1800 秒；过期内容在启动、会话结束和定期扫描时清理 |\n| 重启 | 新进程仍可从同一 session 目录取回 |\n| 项目文件 | stash 不会写入当前项目目录 |\n\n原文以**明文**写入用户私有目录（`0700`）。不要压缩你不愿落盘的密钥。\n\n若 Pi 已经先行截断工具结果，`sift_retrieve` 只能恢复截断后的部分。\n\n## 故障排查\n\n| 现象 | 检查 |\n| --- | --- |\n| 完全不压缩 | 输出短于 `minLength` / 512 字节；错误结果；图文混合 |\n| 找不到原生模块 | 卸载后重新安装扩展，并确认 npm 没有禁用 optional dependencies |\n| 30 分钟后 retrieve 失败 | stash TTL；重跑原工具 |\n| 新 session retrieve 失败 | key 按 session 隔离 |\n| 项目目录出现 stash 文件 | stash 应位于 Pi 数据目录；请检查 `PI_CODING_AGENT_DIR` 配置 |\n","readmeFilename":"README.md"}