From Session Logs to Trajectory: DeepSeek Harness Observability
Observability
If you cannot say what the model saw, you do not have an agent you can review — only a transcript of the ending.
The failure mode this solves
Teams say “the agent went crazy” when they only kept the final chat bubble. DeepSeek Harness materials describe an append-only session log: prompts, tool calls, tool results, scheduler events, context injections. A Trajectory (or equivalent) view is how humans inspect that stream without grepping JSON at 2 a.m.
This is not a promise that every preview build labels the button “Trajectory”. UI strings move. The idea does not: one event stream for resume, fork, search, and replay.
What you should look at after the first task
1. Which workspace root was actually selected.
2. Whether the model saw a huge AGENTS.md or skill dump (token cost, conflicts — community tools like context doctors exist; we do not certify them).
3. Whether a plugin registered extra tools you did not intend.
4. Whether a shell command ran outside the folder you thought was jailed.
The tutorials observability chapter is the slow walkthrough. Troubleshoot covers “UI up, tools blind”. When a run already failed, the field order — header, unmatched tool/call, TOOL_NOT_STARTED versus TOOL_OUTCOME_UNKNOWN — is how to read Trajectory logs.
Plugins make observability mandatory
Because capabilities are plugins, a skin or a “helper” can expand the tool list. Appearance packs belong on UI skins. Anything that can run shell is covered by the plugin guide safety section. Curated cards on community plugins include install lines — they are not a security review.
If a Trajectory shows calls you cannot explain, unload the last plugin you added. Do not debug three new packages at once.
How this differs from “just scroll the chat”
Chat UIs drop intermediate tool payloads. An append-only log is closer to an audit tape. You still need process: pin DSH version, pin plugin SHAs, keep secrets out of the repo, chmod 600 on credential files when the runtime demands it.
Next
Run a boring task on a disposable folder (install), then open the session inspector before you celebrate. If you are comparing products, the Claude Code page notes that traces are product-specific — do not copy-paste DSH vocabulary onto another vendor’s UI.
This portal will not sell you a “compliance pack”. We will keep linking inspectability to the same closed loop: install, modes, plugins, contribute upstream when the log format itself is wrong.
What “good” looks like in a review meeting
You can answer four questions without opening Discord:
1. Which workspace root was bound for the session you are discussing?
2. Which preset (Standard / PTC / Minimal / Creative) loaded, and why?
3. Which extra plugins registered tools beyond that preset?
4. Can you replay the tool result that caused the bad patch, or only the final English apology?
If the answer to (4) is “only the apology,” you do not have observability yet. You have a chat export. The modes page is the companion: a Creative lab with no inspector is just a louder Standard.
Retention and secrets
Append-only does not mean “ship the log to Slack.” Session files can contain file contents, env hints, and command output. Treat them like core dumps. Do not commit them next to the app. If a plugin wants network to “upload traces for magic insights,” that is a permissions conversation, not a theme.
Pin the DSH version in the same note as the plugin SHAs. A Trajectory from rc.N is a poor bug template for rc.N+1. From DeepSeek Harness 0.1.5 RC, session data upgrades to V3 and upgraded sessions cannot be read as the old format — operator notes: What's New in DeepSeek Harness 0.1.5 RC.
Where to go when the inspector is empty
UI up, tools blind: troubleshoot. First principles of the product: what is DSH. If the log format itself looks wrong compared with upstream examples, that is an upstream contribution, not a comment on this independent site.
Forking a session without forking the incident
Replay is for “show me the tool payload.” Fork is for “try the same prefix with a tighter workspace.” Neither is a time machine for secrets you already pasted. If the inspector cannot find the event, you are probably looking at a different profile or a preview build that renamed the panel — check troubleshoot before you assume observability is fake.
Teams that keep a one-page runbook (root, preset, plugins, DSH version) file better bugs on GitHub. Teams that paste a screenshot of the final bubble file noise. This site will keep repeating that because search still ranks chat exports as if they were audits. They are not.
Related articles
- 2026-10-09 DeepSeek Harness on macOS: Homebrew, PATH, Full Disk Access Same npx command as every other OS — on Mac the surprises are which node is on PATH, TCC prompts, and not granting Full Disk Access on day one.
- 2026-09-28 What's New in DeepSeek Harness 0.1.7 RC v0.1.7-rc.2 is Pre-release. Scheduled tasks stay off, session logs move to V4, and PTC names become ptc-runtime.
- 2026-09-28 Run DeepSeek Harness Headless with --json dsh --profile headless opens no port. Keep stdout for --json, treat unknown session ids as failures, and split multi-turn work into separate runs.
Continue on the portal
Install DSH, walk the tutorial track, or browse curated plugins after this article.