Skip to content

DeepSeek Harness

DeepSeek Harness (dsh) saves local conversations as versioned event logs. Hansard imports those logs under the DeepSeek company and harness identity.

Source Use it for
deepseek-harness Local web, headless, and SDK deployments using the standard session persistence backend.

DeepSeek Harness normally saves logs beneath ~/.dsh/sessions, or $DSH_HOME/sessions when its home has been customized. Each project has a directory containing session directories. Logs are named session.jsonl or session.vN.jsonl, with a .zstd suffix for compressed storage. Hansard reads formats zero through four, selects the highest generation, and preserves older generations as raw evidence. The conversation keeps the same archive identity when DeepSeek migrates its format or adds another turn. An unsupported newest generation produces an import error instead of silently loading an older copy.

The compressed default requires Node.js with Zstandard support or the zstd command on PATH. Set HANSARD_DSH_HOME to override the harness home, or set HANSARD_DSH_SESSION_ROOTS to a path-separated list of custom persistence directories. A deployment can replace the persistence backend entirely; those custom backends require their own export path. Browser clients do not hold a separate transcript: the server running the harness owns the logs. For a remote deployment, make its log directory available locally before importing.

Terminal window
hansard import --source deepseek-harness --since all
hansard config sources enable deepseek-harness

The watcher follows session logs and attachment objects. DeepSeek Harness can continue writing while Hansard imports; an unstable or incomplete compressed file is retried on the next pass.

  1. When the import finishes, open Conversations and selectFilter & sort.
  2. Set Source to DeepSeek Harness and setTime to the window you imported. UseFolder to narrow the list when you use this harness in several projects.
  3. Select a conversation to check its messages, tool calls, files, commits, model, and token usage.

To keep archiving new sessions from a local harness, openSettings → Imports. Automaticfollows every supported harness installed on this computer.Custom lets you turn individual harnesses on or off. Cloud sources and account exports never run from here; each needs its own import command. If a conversation you expect is missing after you reset the filters, run the import command on this page again with --explain-skips where the source supports it.

Check the tools and edits in a conversation, then review its measured usage in Stats. Routed models retain their own model company. Forks and subagents do not charge inherited history again.

  • Human prompts, injected context, assistant text, reasoning, and recorded errors.
  • Tool arguments and results, MCP identities, nested programmatic calls, and edit text pairs.
  • Measured input, output, cache, and reasoning tokens with the recorded model route.
  • Titles, timestamps, working directory, settings, compaction summaries, and parent/child links.
  • Verified image and file attachments from the content-addressed attachment store.
  • Original log bytes, including prior format generations and unrecognized record types.

DeepSeek Harness is a developer preview. A custom backend, pre-release flat-file layout, or future format is not inferred from filenames alone. A torn compressed frame must be completed or repaired by the harness before it can import. Inherited fork prefixes remain in raw history and are excluded from the child’s normalized accounting. Local clients sharing one log do not produce separate surface copies. Logs do not reliably identify whether a headless prompt came from a person or an external scheduler.

Edit-result text pairs omit absolute line offsets. Missing or invalid attachment objects remain missing; Hansard does not fetch them from a remote service. Auxiliary title generation without recorded usage is not assigned estimated tokens. Derived indexes, credentials, provider settings, telemetry, locks, and runtime caches are excluded.

The released headless CLI trial covers reading, editing, model usage, and continuation across a format upgrade. Web/desktop interaction, live subagent execution, and remote deployment access remain unverified. Fixtures cover historical formats, children, attachments, nested tools, errors, and memory paths.

Terminal window
hansard import --source deepseek-harness --since all
hansard index rebuild

No provider log is rewritten by Hansard. Continue a session in the harness’s web interface, or use a recent dsh --profile headless --session-id <id> command with a task. The --session-id option is available in the audited 0.1.7-rc.2 preview; the older 0.1.5-rc.3 headless CLI lacks it.