Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,9 @@ Rule of thumb: if you build and operate your own agent in production, use a trac

## Features

- **Automatic session health** — Opens with factual failure, repetition, follow-up and last-recorded call-state summaries. Missing/running/unknown results have evidence links; no human labels or model calls required. Manual notes and transfers are opt-in and never hide automatic facts. [Scope and offline checks](docs/diagnostics.md#automatic-session-health).
- **Modification/check chronology** — Distinguish checks before an edit, checks overlapping it and later outcomes. A passed earlier check or a successful output pipeline is not post-change validation; ambiguous command fragments remain unknown. [Recognition and coverage limits](docs/diagnostics.md#modification-and-verification-chronology).

- **Per-turn ledger** — In the session summary, from two user turns on: one row per user turn with wall-clock time, tokens (input + output + cache) and cost, bars scaled to the session maximum, tool-call counts inline (error counts in the row tooltip), click to jump. Answers "why did this take 40 minutes / cost $3" without reading the transcript.
- **Multi-platform** — Unified view across OpenClaw, Codex, Claude Code, Hermes, OMP, DeepSeek Harness and Gemini CLI sessions (dsh's multi-frame zstd session logs are decompressed transparently; Gemini CLI's `/rewind` checkpoints are folded so rewound history never renders twice)
- **Session browser** — Browse agents, filter/search sessions, view message history
Expand Down
3 changes: 3 additions & 0 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@ LangSmith、Langfuse 这类观测平台面向的是*你自己写的* agent:接

## 功能特性

- **自动会话体检** — 默认自动整理失败、重复操作、后续候选和调用最后记录状态;执行中、未知及未记录结果可追溯证据。不依赖人工标注或模型调用,笔记与迁移改为可选,不影响自动事实展示。[口径与离线验证](docs/diagnostics.md#自动体检无需人工标注)。
- **修改—检查时序** — 区分修改前成功的检查、与修改重叠的检查及后续最新结果;不把先前通过或管道整体成功当作修改后的验证。复杂命令片段执行状态保持未知。[识别边界](docs/diagnostics.md#修改与验证的先后顺序)。

- **有证据的失败事件(React UI)** — 将同一调用所在用户轮次、同工具、完整同参数的待复查失败分组,重复最多的操作优先展示;可跳转首末及每条原始证据。同参成功切断分组,缺少参数不合并。执行成功采用明确零退出码或 OMP 原生完成证据;事件不等于根因或任务失败。本地规则,无 LLM。[合成演示与判定边界](docs/diagnostics.md#中文使用指南)。
- **后续相关操作** — 展示仅 `i` 参数不同的调用,以及同轮次、明确同文件的后续修改;标明关系依据、五类结果状态并可跳转证据。候选不自动关闭事件、不代表原问题已修复。[匹配边界](docs/diagnostics.md#后续相关操作)。
- **本机复核队列** — 用必填依据标记“需跟进”“预期失败”“其他验证已通过”,仅存当前浏览器;新证据使旧标记失效,人工判断不改写自动结果。无需账号或复核后端。[使用方式与存储边界](docs/diagnostics.md#本机复核闭环)。
Expand Down
12 changes: 6 additions & 6 deletions claims.json
Original file line number Diff line number Diff line change
Expand Up @@ -102,16 +102,16 @@
},
{
"id": "test-count",
"claim": "255 tests pass on Node's built-in test runner, the count docs/ROADMAP.md records for `npm test`.",
"value": "255",
"metric": "passing node:test cases (# tests 255 / # pass 255 / # fail 0)",
"method": "npm test → node --test test/*.test.js, run in the claims job after npm ci, and the TAP summary is asserted. The roadmap sentence ('255 tests on Node's built-in runner (`npm test`, 2026-09-23)') is verified by the run, not read back from the prose.",
"claim": "290 tests pass on Node's built-in test runner, the count docs/ROADMAP.md records for `npm test`.",
"value": "290",
"metric": "passing node:test cases (# tests 290 / # pass 290 / # fail 0)",
"method": "npm test → node --test test/*.test.js, run in the claims job after npm ci, and the TAP summary is asserted. The roadmap sentence ('290 tests on Node's built-in runner (`npm test`, 2026-09-23)') is verified by the run, not read back from the prose.",
"repro": "npm test 2>&1 | grep -E '^# (tests|pass|fail)'",
"evidence": "docs/ROADMAP.md",
"as_of": "2026-09-13",
"check": {
"cmd": "npm test 2>&1 | grep -E '^# (tests|pass|fail)'",
"expect": { "contains": ["# tests 255", "# pass 255", "# fail 0"] },
"expect": { "contains": ["# tests 290", "# pass 290", "# fail 0"] },
"timeout": 120
}
},
Expand Down Expand Up @@ -238,7 +238,7 @@
"check": {
"cmd": "node scripts/claims-receipts.mjs tests-node-only",
"expect": {
"equals": "18 files in test/ · 14 distinct requires: 11 node builtins, 3 relative, 0 third-party"
"equals": "20 files in test/ · 14 distinct requires: 11 node builtins, 3 relative, 0 third-party"
},
"timeout": 60
}
Expand Down
8 changes: 5 additions & 3 deletions docs/ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,20 @@
- **Session browser** with tool-call inspection, trace/waterfall view, spawn tracking and message timeline
- **Prompt tooling** — extraction (noise filtered), template clustering with outcome attribution, Claude-powered rewrites, and a prompt library that installs entries as native slash commands
- **Global search** across all platforms, insights dashboard, incremental session backup
- **React + Vite frontend** served by an Express backend; 255 tests on Node's built-in runner (`npm test`, 2026-09-23), CI on Node 22
- **React + Vite frontend** served by an Express backend; 290 tests on Node's built-in runner (`npm test`, 2026-09-23), CI on Node 22
- **Evidence-backed failure events and local review** with full-result invalidation, evidence navigation and narrow-screen session layout

## Current priorities

The product direction is **review the coding-agent sessions you already have, with evidence**. First prove that a useful review can be completed locally; then make it easy to try and share. Stars, downloads and screenshots alone do not establish usefulness. This order replaces the earlier feature-first ordering below.
The product direction is **local execution evidence for the coding agents you already use**: what actually ran, which results support a conclusion, and what the log cannot establish. Automatic facts come first; human labels are optional. Native agents increasingly include dashboards, usage metrics and workflow progress, so generic statistics are not the differentiator. Stars, downloads and screenshots alone do not establish usefulness.

External grounding: official guidance emphasizes [executable verification](https://code.claude.com/docs/en/best-practices#give-claude-a-way-to-verify-its-work), [background subagent workflows](https://code.claude.com/docs/en/workflows) and [coordination/resume limits](https://code.claude.com/docs/en/agent-teams). These are capabilities and engineering constraints, not market-size evidence. User issue reports and vendor-fixed bugs are research inputs, not proof of permanent product gaps.

| Priority | Outcome | Acceptance, not a promise |
| --- | --- | --- |
| P0 | Make the new workflow immediately testable | A demo-only entry opens a clearly synthetic case: 7 pending records in 2 events, all evidence accessible, local review does not rewrite automatic results. Preserve the existing default demo and samples. |
| P1 | Current-session review portability implemented | Preview-only import and explicit plaintext download; exact identity/evidence matching, no overwrites, bounded schema and partial-failure reporting. Validate with synthetic migration and publish after CI; whole-history backup and path remapping remain out of scope. |
| P2 | Explain what happened after a failure, then measure usefulness | Show only-i and same-turn/same-file follow-up candidates with explicit status and evidence, never automatic recovery. Validate unchanged diagnostic outcomes on frozen logs. Then measure owner review tasks using a fixed rubric; separate unknowns and stale labels, and do not infer precision or time saved from candidate counts. |
| P2 | Execution/verification evidence, not another statistics dashboard | Automatic health and modification/check chronology: distinguish before/overlap/after and latest outcomes, show unsupported command coverage, keep optional notes independent. Deterministic transformations and frozen-log regressions verify association rules, not file coverage, human time saved or universal accuracy. Next investigate explicit per-step check outcomes and task/child linkage before relaxing ambiguous shell assumptions. |
| P3 | Make releases reproducible for contributors | Keep clean-install tests, generated fixtures, documentation claims and release/package verification aligned. Add browser regression automation when it can run deterministically without personal logs. |

No launch dates or star-count targets are promised. Progress is gated on these observable outcomes. Physical-device/keyboard coverage and complex Trace/analytics layouts remain separate work, not implied by the session-screen checks.
Expand Down
23 changes: 23 additions & 0 deletions docs/diagnostics-verification.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,3 +95,26 @@ A fixed, previously inspected set of 15 real sessions (five each from OMP, Codex
Storage keys stayed stable. Only the three events with added candidates acquired new review fingerprints; no-candidate events retained their previous fingerprint contract. No real review labels were persisted. Raw logs, parameters and detailed sample identifiers remain private; the regression is not an independent benchmark, global accuracy estimate or time-saving measurement.

The hosted synthetic sample now includes one later successful edit of the same absolute file path with different arguments. It remains **2 events / 7 pending records / 1 recovered record**. Browser checks verified the relation caveat, source result, desktop/mobile rendering and zero static-demo API requests.

## Automatic health and chronology acceptance

The next increment makes automatic facts the default. Saved manual labels do not hide automatic events, and the review store is not read or hashed until **人工笔记与迁移(可选)** is opened. Existing notes and transfers remain available. Refresh or returning to automatic mode shows all events again.

The test suite now has **290 passing Node tests**. `test/session-health.test.js` contains 11 cases including **200 fixed transformations** over 20 synthetic bases; `test/verification-chronology.test.js` contains 24 cases including **120 temporal transformations** over 20 bases. All known outcomes, evidence partitions and call-state accounting invariants pass without a model judge or human labels. These counts are regression coverage, not measured real-world accuracy or user time saved.

Health pairs only unique, ordered call IDs; it summarizes the last recorded state and separates unknown/no-result/running from failure and cancellation. Reused or absent IDs do not supply success evidence. One candidate referenced by multiple events is counted once by result position. Tests verify source messages are not modified.

Chronology distinguishes successful modification-tool results, prior successful checks, overlapping checks and later attempts. A later failure stays visible even if an earlier attempt passed; simultaneously initiated checks do not get an invented uniquely latest order. Known-different explicit directories are excluded and missing directory context is explicit. Tool success does not prove bytes changed; conventional script names do not prove contents or test coverage.

The initial direct-command recognizer found **zero checks** in the frozen real-log set. A bounded lexer was added for explicit command segments instead of hiding that coverage gap. It recognizes **59 calls containing checks** (52 OMP, 7 Claude Code), all with **unknown check outcome** because the commands are compound; a pipeline's successful exit is not assigned to its test fragment. Substitutions, heredocs, control flow and quoted mentions are not interpreted as executed checks. The Codex subset had no recognized checks or explicit edit/write records under this scope, so no conclusion about its verification quality follows.

The same 15 frozen sessions / 2,024 tool results retained exactly the v1.20.0 diagnostic output: 142 failures, 141 pending records, 76 events and 1 recovery. Explicit modification tools returned successfully 240 times; 112 had later recognized check-call/fragment records and 128 did not. **These are temporal relations only**—none establish that the modified file was tested, and unclassified commands may contain validation. The dataset was previously inspected, includes old sessions and is not a blind benchmark. Raw data and detailed sample IDs remain private.

Browser checks used synthetic fixtures only:

- Automatic mode works with review-storage reads denied; zero review-key reads occur before opt-in. Optional manual filtering returns to the complete event set on exit, and notes persist without becoming mandatory.
- A no-result call gains a recorded result without a reload; gaps fall from 3 to 2 while unrelated failures remain unchanged.
- A check passes before a modification; a second check overlaps it and a third uses another directory. None is reported as post-change validation. Appending a failed later check then a successful one updates the latest result and retains both attempts.
- Call/result jumps resolve to actual source records without moving outer page navigation. At 390px the chronology panel has no horizontal overflow; static demo uses zero backend API requests.

Use `node scripts/demo-verification.cjs` to replay the temporal example and `node scripts/demo-follow-up.cjs` for missing-result updates. The public hosted demo exposes the earlier-test/later-edit example under automatic health. Physical-device keyboards and every complex view are not certified. Existing lint findings (91 warnings / 159 infos) and bundle-size warnings remain.
Loading
Loading