{"_id":"@agent-context/claude-code-sift","_rev":"2-b5ca99d624f532c3c3a0e1f5b81d9a5b","name":"@agent-context/claude-code-sift","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"@agent-context/claude-code-sift","version":"0.0.1","keywords":["claude-code","claude-code-plugin","sift","context-compression"],"license":"Apache-2.0","_id":"@agent-context/claude-code-sift@0.0.1","maintainers":[{"name":"liangshuai","email":"509856256@qq.com"}],"dist":{"shasum":"0dbe9b081852af56385775613a796e6d6265f93a","tarball":"https://registry.npmjs.org/@agent-context/claude-code-sift/-/claude-code-sift-0.0.1.tgz","fileCount":20,"integrity":"sha512-HxDL0PMjaMyq3d9YFgEI4fvGJ4MJ3EtB5Doc7rlkhDFgl7NAkVBg/Rhgb0fnCn0VszHlCQ9o+nO9/Z7gxO7gAA==","signatures":[{"sig":"MEUCIQDGbkeFfEsYXudv3Ok6Jxj52ucVJfXlQbZVNpuY7RqH+gIgTEGO/70HfXiBUS24myUzIYYn7d2dZEES/9t+9/zSDfY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50623},"type":"module","engines":{"node":">=18"},"gitHead":"c19497da06666bd56bd0bcce79176edb08a34754","scripts":{"test":"node --test --experimental-strip-types test/*.test.ts","build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.test.json"},"_npmUser":{"name":"liangshuai","email":"509856256@qq.com"},"_npmVersion":"10.9.2","description":"Claude Code plugin that compresses tool results with @agent-context/sift","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@agent-context/sift":"0.0.1-alpha.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.0","@types/node":"^22.15.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-code-sift_0.0.1_1788604555068_0.06988751854594333","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@agent-context/claude-code-sift","version":"0.0.2","description":"Claude Code plugin that compresses tool results with @agent-context/sift","license":"Apache-2.0","type":"module","keywords":["claude-code","claude-code-plugin","sift","context-compression"],"publishConfig":{"access":"public"},"scripts":{"build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.test.json","test":"node --test --experimental-strip-types test/*.test.ts"},"dependencies":{"@agent-context/sift":"0.0.1"},"devDependencies":{"@types/node":"^22.15.0","typescript":"^5.8.0"},"engines":{"node":">=18"},"_id":"@agent-context/claude-code-sift@0.0.2","gitHead":"f82b93145ade36bff689c8c51d516c968b614e19","_nodeVersion":"24.0.2","_npmVersion":"11.3.0","dist":{"integrity":"sha512-30UW2GZ7mjBR+klUDIiJHFLaLqHXh8YQVTeQMQkdYtRbkeiPHfqYRf610LqsHtSbSZJMvdP4Q4YIA2qGmM9RUA==","shasum":"9558c6f6efb5eec777a8d1a2fe35fc5718cb1bf1","tarball":"https://registry.npmjs.org/@agent-context/claude-code-sift/-/claude-code-sift-0.0.2.tgz","fileCount":20,"unpackedSize":49091,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAzUe93v/VLKBfPvdEEKZvNrP+CTdX5Tgt3tJ2azdNBZAiAQcNuVW/7+DB+LM5lAx8+k5YptjuEn+eNdyETwmNEgCg=="}]},"_npmUser":{"name":"liangshuai","email":"509856256@qq.com"},"directories":{},"maintainers":[{"name":"liangshuai","email":"509856256@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/claude-code-sift_0.0.2_1788702006389_0.39622393177772586"},"_hasShrinkwrap":false}},"time":{"created":"2026-09-05T10:35:54.757Z","modified":"2026-09-06T13:40:06.667Z","0.0.1":"2026-09-05T10:35:55.230Z","0.0.2":"2026-09-06T13:40:06.520Z"},"license":"Apache-2.0","keywords":["claude-code","claude-code-plugin","sift","context-compression"],"description":"Claude Code plugin that compresses tool results with @agent-context/sift","maintainers":[{"name":"liangshuai","email":"509856256@qq.com"}],"readme":"# `@agent-context/claude-code-sift`\n\nClaude Code **插件**：用 [`@agent-context/sift`](https://www.npmjs.com/package/@agent-context/sift) 自动压缩工具输出，并提供 `sift_retrieve` 供 Claude Code 按需取回原文。\n\n本插件是社区项目，并非 Claude Code 或 Anthropic 官方项目，也未获得其官方背书。\n\n这不是检索或记忆工具，也不会改写历史消息；它只处理新产生的工具输出。\n\n要求：Claude Code ≥ 2.1，本机 `node` ≥ 18。\n\n## 安装\n\n通过本仓库的 marketplace：\n\n```\n/plugin marketplace add agents-sdk/sift-plugins\n/plugin install claude-code-sift@agent-context\n```\n\n也可以在任何 marketplace 里用 npm source 引用本包：\n\n```json\n{ \"source\": \"npm\", \"package\": \"@agent-context/claude-code-sift\" }\n```\n\n## 工作机制\n\n插件会在工具输出进入上下文前自动压缩其中的文本内容，不改变 Bash、Read、Grep 等工具结果的原有结构。无需手动触发压缩。\n\n发生有损压缩时，完整原文会暂存在本机，并在输出中留下 `<<stash:KEY>>` 标记。Claude Code 可按需调用内置的 `sift_retrieve` 取回原文；过期内容会自动清理。\n\n## 配置（环境变量）\n\n写入 `settings.json` 的 `env` 块或 shell 环境：\n\n| 变量 | 默认 | 说明 |\n| --- | --- | --- |\n| `SIFT_ENABLED` | `1` | `0` / `false` / `off` / `no` 停用 |\n| `SIFT_MIN_LENGTH` | `200` | 最小 UTF-8 字节门槛；非法值回退 200 |\n| `SIFT_EXCLUDED_TOOLS` | — | 逗号分隔的工具名；`sift_retrieve` 永远被排除 |\n\n## 压缩规则\n\n以下情况跳过压缩，原文原样保留：\n\n- 工具在排除列表中（含任何名字里带 `sift_retrieve` 的工具，避免取回结果被再次压缩）\n- 工具执行失败\n- 输出已被 Claude Code 截断\n- 文本短于 `minLength`，或已含合法 `<<stash:24-hex>>` 标记\n- 压缩没有收益\n\n用户主动读取文件的一部分时，符合条件的输出仍会正常压缩。\n\n## `sift_retrieve`\n\n参数为输出中的 `stashKey`，可以传入裸 key 或完整的 `<<stash:KEY>>` 标记。成功时返回原文，失败时返回原因和建议操作。\n\n非法 key（长度不对、非十六进制、路径穿越）会被直接拒绝。stash TTL（1800 秒）过期后重跑原工具，不要对 retrieve 死循环。\n\n## Stash\n\n| | |\n| --- | --- |\n| 位置 | `${CLAUDE_PLUGIN_DATA:-~/.claude}/stash/{sessionId}/` |\n| 隔离 | 按 Claude Code session 保存；同一内容可跨 session 取回 |\n| 权限 | `0700` |\n| 清理 | TTL 1800 秒；启动 session 时以及运行期间定期清理 |\n\n原文以**明文**落盘。把 stash 目录当作敏感数据。\n\nClaude Code 自身截断过的输出（如超长 Grep 命中）不会被恢复：这类结果直接跳过压缩，`sift_retrieve` 也无法还原已被 Claude Code 丢掉的内容。\n\n## 故障排查\n\n| 现象 | 检查 |\n| --- | --- |\n| 插件未加载 | `/plugin` 查看安装状态；Claude Code ≥ 2.1；`node` ≥ 18 且在 PATH |\n| 没有压缩 | 检查 `SIFT_ENABLED` 和 `minLength`；内容可能无法进一步压缩，或输出已被 Claude Code 截断 |\n| `sift_retrieve` 不可见 | 用 `/mcp` 确认 `sift` server 已启动；仍不可见时重新安装插件 |\n| 取回失败 | 原文超过 30 分钟 TTL；重跑原工具 |\n","readmeFilename":"README.md"}