All plugins

DSH / BUNDLE / CLIENT-UI

agent-clinic

v0.2.01687210989 / agent-clinice88d6ec63d

InstallableBundlesUI & client pluginsCommunity · Topic auto-analysisWeb UI

Overview

agent-clinic

Agent 体检诊所 —— 用可复核证据诊断 Agent 使用体验问题,并开出可执行处方

README / EN

Package documentation

Registry summary

Agent 体检诊所 —— 用可复核证据诊断 Agent 使用体验问题,并开出可执行处方

dsh.pub verifies the pinned bundle contract, runtime facts, and distribution semantics. The complete README remains in the source repository.

Read the full README on GitHub

LIMITATIONS

Known limitations

- **只支持 DSH v4 会话格式**;v3 / 无压缩格式兼容待验证 - 需要 Node ≥ 22.15(低版本会明确报错,不会静默跳过数据);node 不在 PATH 上也没关系,会自动定位 - **22 项诊断指标全部已实现**,0 项排期、0 项尚未实现(K1/K2 于 2026-10-15 按决策 D4 实现;A1 同日接入本地 MCP 服务器后实现) - 处方里的「随附默认值」是一份**抄录表**(出处 `@deepseek-ai/dsh-base` 的 `cordis.patch.yml`), 升级 DSH 后若随附默认值变了,需要同步这份表;用户 profile 的真实覆盖值一律现读,不靠猜 - 配置层只解析 `cordis.patch.yml` 里用到的那个 YAML 子集(顶层 `- id/name/config` + 标量与列表), 更深的嵌套结构会被忽略并在 `warnings` 里说明 - 需要 `~/.agents/skills/` 目录存在(`install.sh` 会自动创建) - 版本以 git tag 为准;`install.sh` 现在会在装完后打印版本与安装位置(此前不打印) - **C3 已接线 compaction**:只数"最后一次压缩之后仍活着"的消息 —— 被压缩遮蔽的历史不再占用上下文,所以"靠 `/compact` 续命的长会话"不会被误报疲劳 ### 已知缺陷 这张表**只列当前仍未修**的缺陷。修掉的移入下面"已关闭",并且自检里有一条守护断言 (把已修条目重新写回"未修"会直接红)—— 文档漂移和代码 bug 一样,都要有东西拦着。 **已关闭**(每条都有断言或测试守着;决策号见 [docs/plan-2026-10-15.md](docs/plan-2026-10-15.md)): | 曾经的问题 | 现状 | |---|---| | 配置旋钮未接线 | ✅ 第三轮验收修掉:`maxSessions` / `minRepeatCount` / `contextLines` 在插件四条路径 + CLI 都真的生效 | | 定位符解析有两份 | ✅ 第五轮 D7 合并为一份:`src/evidence/index.mjs` 的 `parseRange` 只是 `src/adapters/base.mjs` `parseLocator` 的转发,后者已支持 `#L<a>-L<b>` | | `show` 区间展开有 200 行硬上限 | ✅ 第五轮 D8 改为显式分页 `--offset/--limit`(上限 5000),截断提示直接给**可复制**的下一条命令 | | A3 通用工具清单硬编码 | ✅ 第五轮 D5 改为"基础集(硬编码保底)+ 会话广度自动学习",判据写进报告,`opts` 可覆盖 | | `plugin/client.js` 面板与角标缺浏览器端测试 | ✅ 第五轮 D9 新增 `scripts/plugin-dom.test.mjs`(零依赖 DOM 桩;**条数以"使用"节那句为准,由测试自己核对**) | | 面板错误态点「联网现搜」无可见反馈 | ✅ 第六轮修掉(`liveErr` 未在错误分支渲染);同轮修掉会让界面卡死的通知自激 | | 发布脚本把 HTTP 202 当失败 | ✅ 首次真实发布时修掉:`classifyPublishResponse()` + 2 条断言(202 = registry 已接受/分阶段发布) | | CI 连续全红 / 徽章无守护 | ✅ 第四轮修掉根因,徽章核对内建进 smoke(不一致即退出码 1) | **仍未修**: | 缺陷 | 影响 | 现状 | |---|---|---| | **WorkBuddy 会话解析未实现** | `install.sh` 在 `~/.workbuddy` 存在时会把 skill 部署过去,但当前**只有 DSH 适配器** —— 装了也扫不到会话 | 安装节已如实标注;适配器本身未排期 | | **v3 会话格式未验证** | `session.v3` 可能是单帧或无压缩,未实测(无压缩 `.jsonl` 已支持) | 见 [docs/data-formats.md](docs/data-formats.md) | | **配置层只解析 `cordis.patch.yml` 的 YAML 子集**;处方里的"随附默认值"是抄录表 | DSH 升级后随附默认值会漂移,需要同步;更深嵌套结构会被忽略(在 `warnings` 里说明) | 设计取舍,非缺陷 | | **CLI 行为缺少断言** | 参数校验之外的 CLI 端到端行为只在 CI 步骤里跑(只看退出码),smoke 里没有断言 | 本轮补了参数校验断言,见下"测试空白" | ### 测试空白(明确列出,不吹全覆盖) > 面板测试(`scripts/plugin-dom.test.mjs`,106 条)**自己核对**文档里写的条数: > 数字对不上就以退出码 1 结束(与 smoke 的徽章守护同一套做法), > 全绿后可 `--write-badge` 回写。 - **面板 —— 已覆盖**:面板/角标渲染、问题卡与处方卡的折叠与合并、交互(关闭、刷新、 联网现搜的成功与失败路径)、`liveBusy` 中间态(含失败后按钮恢复,不会永久卡死)、 **watch 签名变化 → 面板内容级自动刷新**(新报告文本出现、旧文本消失,不只是"请求 +1")、 异常响应形状(HTTP 500 + HTML、200 + 标量、200 + `null`、`/report` 非 JSON、`/watch` 非 JSON)。 - **面板 —— 仍未覆盖**:**真实计时**(6 秒轮询节奏、复制按钮 1.4 秒复位 —— 桩只记录 `setInterval`/`setTimeout` 的注册与间隔,不真的等)、CSS/布局(`var(--x, fallback)` 不解析, 无 `getComputedStyle`/`offsetWidth`,看不出错位与遮挡)、真实 React 语义(StrictMode 双调用、 依赖数组漏写、并发渲染、错误边界)、真实事件系统(capture/once/passive、键盘与 focus、 Escape 关闭 —— `client.js` 本身没有键盘处理)、网络细节(AbortSignal/CORS/流式、 **watch tick 与在飞 `/report` 的竞态**、连点「刷新」)、`CatalogRow` 其余展开分支、 处方 kind 的其它类型(command/plugin/setting)、多面板实例共存、localStorage/history/无障碍树。 - **CLI 端到端**:`report` / `catalog` / `fingerprints` 的真实执行由 CI 步骤覆盖(只看退出码); `show` 的参数解析与 help 文案现在有断言(`parseShowOptions` / `buildHelpText`)。 - **证据层与适配层部分 helper**:`stableStringify`、`makeEvent` 等没有直接断言 (它们的稳定性由 E1/E5 的哈希断言间接覆盖)。 - **一处测试保真度隐患(已修)**:面板测试的 fixture 曾长期硬编码宿主版本 `'14'`, 而 `plugin/client.js` 的 `CLIENT_VERSION` 已升到 `'15'` —— 于是**所有渲染断言都跑在 "宿主版本落后"的横幅分支上**。现已改成从源码读版本号,并断言非落后分支。 ### ⚠️ 关于 DSH 数据格式 DSH 会话文件是**多帧 zstd 拼接**(单个文件实测含 60~233 个帧)。 `zlib.zstdDecompressSync()` 和流式 API **都只能解出第一帧**。 本项目的 `src/adapters/zstd-frames.mjs` 按 magic number 手工切帧,已在真实数据上验证 463/463 帧成功。详见 [docs/data-formats.md](docs/data-formats.md)。 ---