返回 DeepSeek-Reasonix
HARNESS_CHAT_PORT.md
根目录 / docs / HARNESS_CHAT_PORT.md
1 # Harness chat presentation port
2
3 Reference: DeepSeek Harness `c291e7961a515f6d7af9304e7fd1d257929aef26`.
4 The source inventory and license are in
5 [`harness-chat/README.md`](../desktop/frontend/src/components/harness-chat/README.md).
6
7 ## Delivered behavior
8
9 - One natural-flow conversation surface, with compact process rows and a
10 standalone final answer. Completed processes show call/message counts and
11 retain a failed-call count when recovery succeeded. Interrupted or terminally
12 failed turns remain visible.
13 - Tools expand inline into the Harness terminal, diff, source-list or generic
14 input/output presentation. An inspection action opens the existing isolated
15 detail drawer. Long content loads on request; malformed results preserve a
16 retryable preview instead of enabling copy of an incomplete result.
17 - Thinking uses the first nonempty line after completion and the latest line
18 while running. Expanded thinking does not duplicate its text in the header.
19 - System and permission receipts are compact disclosures. Uninformative empty
20 completion summaries are omitted. Markdown headings, tables and spacing use
21 the adapted Harness styles; Reasonix's parsing and security remain in place.
22 - Copy, conversation fork, usage breakdown, duration and timestamps remain.
23 Voting controls are omitted. Missing historical usage is not fabricated.
24 - Settings no longer expose Standard/Deep conversation presentation. New
25 sessions default to Workspace write. Persisted legacy fields are retained only
26 for compatibility and do not select a second chat implementation.
27
28 The port retains Reasonix theme/font settings, composer, approvals, host-safe
29 links, Markdown workers, history APIs and backend ownership. It does not import
30 Cordis or the Harness server. Tool result shapes that cannot be mapped reliably
31 use the generic card. This is not a claim that the entire Harness application
32 or every plugin-specific renderer is embedded in Reasonix.
33
34 ## Verification on macOS arm64
35
36 Frontend build passed hooks lint, typecheck, CSS/theme checks, the single scroll
37 writer contract and unchanged bundle budgets (render-blocking CSS 3.8 KiB against
38 4.0 KiB). Transcript, settings, stream, app lifecycle, remote and composer suites
39 passed. The full-content race test also covers invalid results and retry.
40
41 Production-path fixture replay results:
42
43 | Runtime | 240 turns input P95 | 1,000 turns input P95 | Max long task at 1,000 | Switch P95 |
44 | --- | ---: | ---: | ---: | ---: |
45 | Chromium 153 | 56.3 ms | 120.7 ms | 138 ms | 32.8 ms |
46 | WebKit 26.6 | 46 ms | 103 ms | Unavailable | 40 ms |
47 | Electron 44.2.0 | 58.4 ms | 43.4 ms | 142 ms | 20.3 ms |
48
49 All three exercised 60 consecutive streaming size changes, manual upward
50 scrolling, prepend, process disclosure, drawer focus restoration and queue
51 convergence. Stream anchor drift was 0 px; prepend drift was 0.094 px. Chromium
52 released heap growth across 20 switches was 125,396 bytes. The weather fixture
53 verifies 24 px tool rows, collapsed permission bodies and no mounted tool
54 subtrees in a folded process. WebKit does not expose the Long Tasks API.
55
56 Raw results and screenshots: [`evidence/harness-chat-port`](evidence/harness-chat-port).
57 Fixtures contain synthetic weather data. Native verification additionally
58 opened the user's existing weather turn and the settings screen in the final
59 packaged app. Package identity and native smoke details are in
60 [`design-qa.md`](../design-qa.md).
61
62 The test build is installed at `~/Applications/Reasonix-Canary/Reasonix.app`
63 with the isolated `Reasonix-Test-ChatRefactor` profile. Native WebView hosts on
64 other platforms, exposed native scrollbar dragging, extended native IME soak
65 and fully expanded 1,000-turn stress were not rerun for this presentation pass.
66 No release was published or PR merged.
67 - The right-side turn rail replaces the top dropdown. Harness fixed-pitch
68 marks, active state, hover/focus previews and independent overflow scrolling
69 are adapted to the existing ChatScrollController. Pointer/keyboard activation
70 enters reading mode; return-to-latest restores follow. Only loaded turns are
71 listed and prepend extends the rail. Preview subscribes only to its user and
72 answer nodes. Navigation stays available in narrow workbenches.
73
73 lines MARKDOWN