sandbase-harness
sandbaseai
Local-first, self-hosted AI agent runtime and MCP bridge with sandboxed sessions, memory, credentials, audit/replay, and a local Console.
PROJECT TOPICS
PROJECT README
A DeepSeek Harness (dsh) plugin — part of the
dsh-plugin-* family — that surfaces token throughput telemetry from real harness data, in
three layers:
conversation.chat.turnTail) — under each completed turn, a compact
row: thinking / output tokens, throughput tok/s, wall time, a mini dual-line sparkline, and a
"明细" toggle that expands a per-step table (step · think · out · duration · tok/s · tool ·
state).conversation.view tab "Token 遥测") — full thinking-vs-output TPS curve,
settlement cards (decode TPS, mean TTFT, total tokens), and a cross-turn overview table.sessionStats/tokenUsage projections only tick at
step/end).All figures come from the harness's own durable surfaces — no simulated data:
| Panel field | Source |
|---|---|
| decode TPS / model TPS / TTFT / turns / steps / toolMs | sessionStats projection (@deepseek-ai/dsh-session-stats) |
| total / output / cache-read tokens | tokenUsage projection (@deepseek-ai/dsh-token-meter) |
| live TPS curve | SessionBinding.eventSource → settled assistant/message stream (timed AssistantStreamRecords) + transient assistant/live-chunk deltas |
The curve reconstructs from the durable timed stream carried on each settled
assistant/message event, so it renders correctly even after a turn completes (not only
mid-stream).
dsh is "everything is a plugin" on Cordis. A plugin is
one package with two halves:
exports["."] → apply(ctx) (Node). This plugin has no host-side behavior
(it only surfaces data the host already computes), so apply is a no-op that makes the row
appear in the composed profile.exports["./client"] → lib/client.js, a browser module registered via
window.__ModuleLoader__.load(...). It declares inject = ["slots", "sessions"] and in
apply(ctx) mounts a React component into the conversation.view slot.The client bundle is hand-authored in the exact shape the loader expects (React is an external
resolved by require("react")), so no bundler is required to build it.
Make the package resolvable from the profile (here: ~/.dsh/profiles/web, boot dir's
node_modules), e.g. copy it to node_modules/dsh-token-telemetry.
Add one insert row to the profile's cordis.patch.yml:
- insert:
- id: token-telemetry
name: dsh-token-telemetry
Restart dsh web. The "Token 遥测" tab appears in a session's conversation view.
Tested against a clean dsh web instance (@deepseek-ai/dsh@0.1.7-alpha.1) with real
StepFun step-5-preview turns:
eventSource subscription, and the shared aggregation is
verified via the aggregate view; the turnTail rendering itself still needs a visual pass.estTokens); durable settlement uses
the provider-reported sessionStats/tokenUsage values.main + sidebar.panellist panel reading useSessions.dsh is in developer preview; plugin surfaces can change.MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: observability、token-telemetry。