{"_id":"@asyncx/agent-peek","_rev":"3-29df9bf1d31cd46223f2cb58b4d6a916","name":"@asyncx/agent-peek","dist-tags":{"latest":"0.5.1"},"versions":{"0.4.1":{"name":"@asyncx/agent-peek","version":"0.4.1","keywords":["pi-package","pi-extension","agent","progress","claude-code","codex"],"author":{"name":"A5yncX"},"license":"MIT","_id":"@asyncx/agent-peek@0.4.1","maintainers":[{"name":"asyncx","email":"asyncx0806@gmail.com"}],"homepage":"https://github.com/A5yncX/agent-peek#readme","bugs":{"url":"https://github.com/A5yncX/agent-peek/issues"},"pi":{"extensions":["./index.ts"]},"bin":{"agent-peek":"bin/agent-peek.mjs"},"dist":{"shasum":"90eab7c423c191f5e7d8a8f2d9747d6b5eca384f","tarball":"https://registry.npmjs.org/@asyncx/agent-peek/-/agent-peek-0.4.1.tgz","fileCount":21,"integrity":"sha512-Pa4VYYd5Iplsgg5sV8e8dQOrfvHorkbuwIe8ZMOE3a509/DBOhN+v6+BOa4te76HZllay/3CazKTFmAgn01s7A==","signatures":[{"sig":"MEQCIFn2LlMsaQa9KE+1wnqrofNBEj1TeCpF72mbeKLAQtixAiAPZpKk5tdZWWApvG14X4EBA2T8bdT+du3JVGk/xKxiqA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66298},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"8101e8cf2b222869d503daaa39850045fc9490cb","scripts":{"test":"node --test test/*.test.mjs","check":"npm test && npm pack --dry-run"},"_npmUser":{"name":"asyncx","email":"asyncx0806@gmail.com"},"repository":{"url":"git+https://github.com/A5yncX/agent-peek.git","type":"git"},"_npmVersion":"11.17.0","description":"Read-only progress snapshots for Pi, Claude Code, and Codex CLI sessions","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/agent-peek_0.4.1_1789016535630_0.8932926555568188","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@asyncx/agent-peek","version":"0.5.0","keywords":["pi-package","pi-extension","agent","progress","claude-code","codex"],"author":{"name":"A5yncX"},"license":"MIT","_id":"@asyncx/agent-peek@0.5.0","maintainers":[{"name":"asyncx","email":"asyncx0806@gmail.com"}],"homepage":"https://github.com/A5yncX/agent-peek#readme","bugs":{"url":"https://github.com/A5yncX/agent-peek/issues"},"pi":{"extensions":["./index.ts"]},"bin":{"agent-peek":"bin/agent-peek.mjs"},"dist":{"shasum":"481da6ce5d4925ff07de6e65a9bdaa4b7ff2362d","tarball":"https://registry.npmjs.org/@asyncx/agent-peek/-/agent-peek-0.5.0.tgz","fileCount":22,"integrity":"sha512-CZduq9TUxYbm3JwNnj8riOCz+gmZBlYC/ZvbE1G5+IeNFP7iuLOlrdKOc3HdtE+UdHR7bCgK3JKYxJcycQzb8g==","signatures":[{"sig":"MEQCIEFgppYFDv7JW5ZiWFpMPtYCHUvfWf6ba0jDS9c6l6oaAiANzRrP3bwS5D42UJnSoD3muDCgxeB4746LT/qGpnaxZw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":100192},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"7340c4c5b225acc8e7d152919d2cfcdcf31720ba","scripts":{"test":"node --test test/*.test.mjs","check":"npm test && npm pack --dry-run"},"_npmUser":{"name":"asyncx","email":"asyncx0806@gmail.com"},"repository":{"url":"git+https://github.com/A5yncX/agent-peek.git","type":"git"},"_npmVersion":"11.17.0","description":"Read-only progress snapshots for Pi, Claude Code, and Codex CLI sessions","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/agent-peek_0.5.0_1789024668613_0.21162841227562068","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@asyncx/agent-peek","version":"0.5.1","description":"Read-only progress snapshots for Pi, Claude Code, and Codex CLI sessions","type":"module","license":"MIT","author":{"name":"A5yncX"},"repository":{"type":"git","url":"git+https://github.com/A5yncX/agent-peek.git"},"homepage":"https://github.com/A5yncX/agent-peek#readme","bugs":{"url":"https://github.com/A5yncX/agent-peek/issues"},"publishConfig":{"access":"public"},"keywords":["pi-package","pi-extension","agent","progress","claude-code","codex"],"engines":{"node":">=22.19.0"},"bin":{"agent-peek":"bin/agent-peek.mjs"},"scripts":{"test":"node --test test/*.test.mjs","check":"npm test && npm pack --dry-run"},"peerDependencies":{"@earendil-works/pi-coding-agent":"*","@earendil-works/pi-tui":"*"},"pi":{"extensions":["./index.ts"]},"gitHead":"0ccea88b025eb40b02fbcd3fe14fd1b8106fd057","_id":"@asyncx/agent-peek@0.5.1","_nodeVersion":"24.18.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-YPOxBBZRtu4o2KEhU5NNFushET0HzYP4GwnyOfoHDIBJucBoqBoPYokrLApOSNBmkDEcxCqXEJV2RCYvParsCg==","shasum":"67ea6ac1bf5eacd5d12448c7661b7095bafaf0af","tarball":"https://registry.npmjs.org/@asyncx/agent-peek/-/agent-peek-0.5.1.tgz","fileCount":22,"unpackedSize":102980,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDcKMdPyLtGn/HL28Howdw3RQWFJhnQOVo/2Wb2IuJh3AiAYVWCVXXrpto/r0/XKiYm6Dv/jOvmaRbtOJAf8H2UkDg=="}]},"_npmUser":{"name":"asyncx","email":"asyncx0806@gmail.com"},"directories":{},"maintainers":[{"name":"asyncx","email":"asyncx0806@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agent-peek_0.5.1_1789026325581_0.269930980993242"},"_hasShrinkwrap":false}},"time":{"created":"2026-09-10T05:02:15.467Z","modified":"2026-09-10T07:45:25.913Z","0.4.1":"2026-09-10T05:02:15.791Z","0.5.0":"2026-09-10T07:17:48.757Z","0.5.1":"2026-09-10T07:45:25.737Z"},"bugs":{"url":"https://github.com/A5yncX/agent-peek/issues"},"author":{"name":"A5yncX"},"license":"MIT","homepage":"https://github.com/A5yncX/agent-peek#readme","keywords":["pi-package","pi-extension","agent","progress","claude-code","codex"],"repository":{"type":"git","url":"git+https://github.com/A5yncX/agent-peek.git"},"description":"Read-only progress snapshots for Pi, Claude Code, and Codex CLI sessions","maintainers":[{"name":"asyncx","email":"asyncx0806@gmail.com"}],"readme":"<div align=\"center\">\n\n# Agent Peek\n\n**轻轻一瞥，知道 Agent 忙到哪了。**\n\nPi · Claude Code · Codex CLI\n\n同一目录，只读概况，不必来回切换会话。\n\n</div>\n\n[English (default)](README.md) · [更新记录](CHANGELOG.md) · [兼容性调研](docs/compatibility.md)\n\n[![CI](https://github.com/A5yncX/agent-peek/actions/workflows/test.yml/badge.svg)](https://github.com/A5yncX/agent-peek/actions/workflows/test.yml)\n[![npm 版本](https://img.shields.io/npm/v/@asyncx/agent-peek?logo=npm)](https://www.npmjs.com/package/@asyncx/agent-peek)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![Node.js 22+](https://img.shields.io/badge/Node.js-22%2B-339933.svg)](https://nodejs.org/)\n\n## 一眼了解\n\n```text\n╭ Agent Peek ──────────────────────────────────────────────╮\n│ 其他会话 · ● 运行中 · codex · 10:20:30 快照               │\n│                                                          │\n│ 目标      比较四组提取模型                               │\n│ 当前阶段  模型评测阶段：四组中正在测试第三组              │\n│ 已完成    两组模型组合                                   │\n│ 下一步    测试第四组，然后汇总比较结果                    │\n│                                                          │\n│ 进度      ██████░░░░ 60% · 模型估算 · 中置信度            │\n│ 预计剩余  ~15 分钟–35 分钟                               │\n│ 估算依据  已记录 2/4；第三阶段运行中；已耗时 28 分钟       │\n│ 最近·本地  bash · 已记录结果 · # pass 12 · # fail 0        │\n│ Enter / Esc / q：关闭                                    │\n╰──────────────────────────────────────────────────────────╯\n```\n\n*以上为示例数据，不是真实会话；面板与 pi-mcp-adapter 一样继承终端背景。*\n\n| 看见工作 | 理解进度 | 保持控制 |\n| --- | --- | --- |\n| 当前在做什么、已完成什么 | 区分记录计数与模型估算 | 只读访问；默认上传前确认 |\n\n[安装](#原生入口) · [配置](#pi-选项) · [选择逻辑](#自动选择) · [隐私](#隐私与限制)\n\n## 快速开始 · Pi\n\n```sh\npi install npm:@asyncx/agent-peek\n```\n\n在每个 Pi 窗口执行 `/reload`，再用 `/peek` 查看进度。只想查看本地记录、不调用 AI 时，使用 `/peek local`。\n\n## 原生入口\n\n| 工具 | 安装 | 使用 |\n| --- | --- | --- |\n| Pi | `pi install npm:@asyncx/agent-peek`，每个 Pi 窗口执行 `/reload` | `/peek` |\n| Claude Code | `/plugin marketplace add A5yncX/agent-peek`，再执行 `/plugin install agent-peek@agent-peek-local` | `/agent-peek:peek` |\n| Codex CLI 0.153+ | `codex plugin marketplace add A5yncX/agent-peek`，再执行 `codex plugin add agent-peek@agent-peek-local` | `$agent-peek:peek` |\n| 普通终端 | `npm install -g @asyncx/agent-peek` | `agent-peek` |\n\n也支持从 GitHub 安装：`pi install git:github.com/A5yncX/agent-peek`。\n\nClaude Code/Codex 安装后需要重启，让生命周期 Hook 开始登记状态。宿主可能要求信任本地 Hook；插件拥有当前用户权限，请先检查源码。\n\nClaude 插件命令带命名空间；Codex 的插件提供 Agent Skill，不能注册任意裸斜杠命令。因此它们最接近的原生入口分别是 `/agent-peek:peek` 和 `$agent-peek:peek`，不是裸 `/peek`。只有 Pi 能在当前 Agent 运行时异步执行 `/peek`；详见[宿主限制](docs/compatibility.md#host-limitations)。\n\n## 双语\n\n默认英文，选择写入 `~/.agent-peek/config.json`，三个工具共享：\n\n- Pi：`/peek language` 弹出选择；也支持 `/peek language en|zh`\n- Claude Code：`/agent-peek:peek language [en|zh]`\n- Codex：`$agent-peek:peek language [en|zh]`\n- 终端：`agent-peek language [en|zh]`；不带语言时切换\n\n## 摘要模型\n\nPi 的可选 AI 摘要可以使用独立模型，不会切换当前会话模型。编辑 `~/.agent-peek/config.json`：\n\n```json\n{\n  \"language\": \"zh\",\n  \"model\": \"my-provider/fast-model\",\n  \"confirmBeforeSummary\": true,\n  \"resultDisplay\": \"window\"\n}\n```\n\n模型格式为 `provider/model-id`。修改后下一次 `/peek` 立即生效，无需 `/reload`；删除 `model` 字段则跟随 Pi 当前模型。模型不存在或不可用时，插件输出本地概况，不静默改用其他模型。Claude Code、Codex 和终端入口使用本地确定性提取，不调用此模型。\n\n## Pi 选项\n\n输入 `/peek options` 打开交互设置，也可以直接执行：\n\n```text\n/peek options confirm on\n/peek options confirm off\n/peek options display window\n/peek options display conversation\n```\n\n| 配置 | 默认值 | 行为 |\n| --- | --- | --- |\n| `confirmBeforeSummary` | `true` | 每次向模型发送过滤文本前确认。通过命令关闭时必须额外进行一次安全确认。 |\n| `resultDisplay` | `\"window\"` | 用中央可关闭窗口展示；设为 `\"conversation\"` 时写入持久的 TUI 自定义对话条目。 |\n\n长字段自动换行，不再在窗口边缘直接丢失。终端高度不足时，可用 ↑/↓、Page Up/Page Down 或 Home/End 滚动，底部显示当前可见范围。结果窗口可用 Enter、Escape 或 `q` 关闭。RPC 不支持 Overlay 时自动退回对话输出。窗口模式不会把结果写入会话；对话模式的自定义条目也不会进入模型上下文。\n\n### v0.5.0 优化\n\n- 新增 `/peek options` 设置菜单和直接参数。\n- 关闭后续摘要确认前增加明确的二次确认。\n- 新增带证据引用的模型进度、置信度、ETA、已完成工作和估算依据。\n- Pi 默认结果从对话条目改为参考 `pi-mcp-adapter` 的中央 Overlay 窗口。\n- 保留对话模式，用于持久结果和 RPC 降级。\n- 查询期间继续在输入框下显示动态 `👀`，打开结果前自动移除。\n\n## 自动选择\n\n1. Pi 当前会话 working 时优先查看自己。\n2. 否则，同目录只有一个 working 会话就直接查看。\n3. 多个 working 会话：Pi 弹出选择；其他入口列出 ID，再用前缀执行一次。\n4. 自动选择排除等待输入、等待确认、过期、死进程和历史会话。\n\n各工具通过 Hook 在 `~/.agent-peek/` 写小型心跳，只含来源、会话 ID、cwd、会话文件路径、PID 和状态，**不含对话正文**。Prompt/工具事件标记 working，权限请求标记 waiting，Stop 标记 idle，SessionEnd 标记结束。宿主 PID 存活时，每 5 秒更新；超过 20 秒的记录不使用。\n\n## 输出\n\n窗口和对话卡片优先展示整体目标、当前阶段、已完成里程碑、下一步计划，以及进度和预计剩余时间。未返回的工具调用不再覆盖 AI 的阶段说明；工具活动和最多两条最近的本地结果移到底部作为补充。无法可靠估算百分比或 ETA 时会明确说明证据不足；没有依据的完成项、下一步和阻塞不编造。工具结果已记录不代表任务完成，最近报错也不自动等于尚未解决的阻塞。只强调标题和当前工作，其他内容保持常规字重。CLI 在交互终端中对齐标签；重定向或管道输出仍是无装饰的纯文本。\n\nAI 摘要可以基于至少两类有效信号估算：明确完成数/总数、任务清单、阶段顺序、带时间戳的进度变化和当前任务耗时。ETA 必须有已观察速度或可比较的完成单元。仅有进程存活、耗时、普通分数、F1 或 token 使用量时不能估算。每个估算都显示置信度和简短依据；证据不足时明确说明暂不能可靠估算，而不是编造百分比。\n\n`/peek local` 不调用模型，展示本地工具信息和明确记录的计数，没有依据的估算会标明暂不可用，当前阶段优先使用已记录的任务说明。记录计数和模型估算都不是独立验证的运行事实。\n\nPi 查询期间在输入框下方动态显示 `👀`、本地化查询文案和 `/peek cancel` 取消提示，结束后消失；`TERM=dumb` 时不播放动画。结果根据配置显示在窗口或对话中。Claude/Codex 使用各自命令或 Skill 的工作提示，并返回共享 CLI 的本地结果。\n\nPi 还支持：`/peek self|local|refresh|preview|options|cancel|clear|<id前缀>`。\n\n## 隐私与限制\n\n- 目标会话只读；不会恢复、修复、迁移、控制目标 Agent，也不会给它发送消息。\n- 运行状态和偏好只保存在仓库外的 `~/.agent-peek/`。发布包不包含会话文件、本机配置、凭据或生成的摘要。\n- Pi 可选 AI 摘要默认逐次确认；关闭确认需要明确二次确认，之后可能在不再次提示的情况下计费。上传前删除 reasoning、图片、工具参数和工具结果正文；普通文本仍可能含秘密。本地提取的路径和诊断片段单独展示，不进入模型请求或 `/peek preview`。提取仅检查有界的输出尾部，并非完整日志分析，未知工具格式可能无法识别。对话模式会将这些本地信息保存在所选 Pi 会话中。Claude/Codex/终端使用确定性的本地提取，不额外调用模型上传会话。\n- 读取前核对 cwd 和会话 ID；限制 64 MiB/文件、8 MiB/行、100,000 条规范记录。支持 Pi v2/v3、Claude Code JSONL 和 Codex rollout JSONL。\n- 外部格式可能随版本变化；未知记录跳过，损坏分支会禁用记录型百分比。模型估算使用受限且带引用的证据，但仍可能判断错误。PID 存活只证明宿主进程存在，不证明任务未卡住。\n- 面板不再填充 Pi 的 `customMessageBg`，背景和正文直接继承终端配色。弹窗通过 Pi 的 OSC 11 接口读取实际背景（150 ms 超时），仅使用通过 4.5:1 对比度检查的主题强调色。不支持查询的终端和对话卡片保留终端默认颜色；主题失效重绘时重新查询。`NO_COLOR` 禁用强调色及查询；字重、间距、符号和文字保证不依赖颜色也能辨认信息。\n\n安全问题请按 [`SECURITY.md`](SECURITY.md) 报告；不要在公开 Issue 附加真实会话或凭据。\n\n## 调研依据\n\n采用同类项目常见的“共享核心 + 薄适配器”：Agent Deck、CCManager、Claude Squad、Vibe Kanban 和 AI Session Manager。评估了开放的 [Agent Plugins 1.0](https://github.com/agentplugins/agent-plugins-spec)，但 Codex 0.153 不为该格式加载普通生命周期 Hook，因此 v0.4 使用 Claude/Codex 各自的薄清单以保留 working 检测。来源与取舍见 [`docs/compatibility.md`](docs/compatibility.md)。\n\n## 读取与等待时间\n\n有可用模型且获准上传时，仍默认使用 AI 摘要。证据选择保留任务请求、已记录的计划和最新阶段说明，不再让近期工具记录挤掉整体目标。对明确的“继续”“开始”等简短确认，沿用前一个任务的目标和起始时间；新的实质请求开启新的任务范围。证据 JSON 上限从 16,000 字符缩减为 10,000 字符。模型请求使用紧凑 JSON，预览仍保留缩进。会话文件继续完整、有界地读取，以保留分支与身份检查；不使用可能过期的快照缓存，也不直接截取文件尾部。\n\n运行 `node test/bench-read.mjs` 可测试合成的 16 MiB 会话读取耗时。该测试仅测本地解析，不包含模型响应时间。\n\n## 验证\n\n```powershell\ngit clone https://github.com/A5yncX/agent-peek.git\ncd agent-peek\nnpm install\nnpm run check\n```\n\n测试只用合成会话，不需要 API key，也不上传真实记录。设置 `PI_PEEK_LOADER` 后会额外执行 Pi 同进程热重载测试。本机 Codex 0.153 的 marketplace/install 冒烟测试已通过；开发环境未安装 Claude CLI，因此 Claude manifest/Hook 目前为结构与 fixture 验证，发布前仍需真实 Claude Code 手测。\n","readmeFilename":"README.zh-CN.md"}