概览
agent-clinic
README / ZH
插件文档
目录摘要
dsh.pub 核对固定版本的组合包契约、运行时事实与分发语义;完整 README 请查看源仓库。
在 GitHub 阅读完整 READMELIMITATIONS
已知限制
- **只支持 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)。 ---
