DeepSeek Harness infinite canvas: branch contexts with ThoughtDAG

The non-linear session workflow, demonstrated by the plugin's own developer: questions become nodes on an infinite canvas, lines carry context, PDFs grow branches, and old Claude Code sessions import read-only.

Last updated: 2026-09-29

ThoughtDAG infinite canvas in DeepSeek Harness holding a PDF card, auto-labeled nodes for Context noise and 无关信息干扰, a merged summary node, and dashed versus solid context lines
The working canvas: a paper, its branches and a distilled summary node on one board.

A chat window is a column: one topic buries the next, and a week of work becomes unsearchable. ThoughtDAG, a community plugin by developer Chatchan, takes the other route — an infinite canvas inside DeepSeek Harness where every question becomes a node you can double-click, branch, label and wire. Its one rule is printed on the welcome screen: 连线即上下文, the line is the context. This guide follows the developer's own eight-minute Bilibili recording step by step; the plugin is early software, so treat exact labels as snapshots.

Every screenshot below is a still from that single recording, cropped with one fixed recipe that removes the webcam bubble, the chapter titles and the subtitle band without losing window content, and each one deep-links back to the second it came from. For branching you can do without any plugin, the session replay guide covers dsh's built-in branch icon. Session replay & the built-in branch

Quick answer

  • ▸Install with two commands, hover the 思维图 block, and the composer opens already reading your configured dsh models and agents — nothing to wire up twice.
  • ▸Every question becomes a node and every follow-up a new node; a dashed line feeds a summary downstream, a solid line feeds the full context, and the edge toast prints the exact token count.
  • ▸Drop a PDF on the canvas: 生成导读 writes a reading-guide node and 摘取图像 pulls a figure out for the vision model, so papers become branches instead of attachments.
  • ▸The Agent 对话地图 imports local Claude Code, Codex and dsh sessions read-only, merges distill many nodes into one, and the graph exports as a poster PNG or travels as a JSON folder backup.

Step by step

Install it, ask the first question

  1. 1

    Install the plugin and check the model picker

    Two commands from the repo README put ThoughtDAG behind dsh's web UI (Node 22.19+ or 24; DeepSeek Harness 0.1.2-rc.1 or later). Run dsh web and the welcome screen states the plugin's pitch — a map is worth your thinking; the only rule: the line is the context. Open the model dropdown and there is nothing to configure: it already lists what your dsh setup has, here DeepSeek-V4-Flash selected, DeepSeek-V4-Pro, DeepSeek-V4-Flash-Vision flagged 视觉, plus capability rows for web search and image recognition.

    $dsh plugin --profile web add dsh-thoughtdag
    $dsh web
    ThoughtDAG welcome composer with the model dropdown open, listing DeepSeek-V4-Flash, DeepSeek-V4-Pro, DeepSeek-V4-Flash-Vision and the DeepSeek Harness agent from the local dsh config
    No provider setup here — the picker mirrors whatever dsh already has.Watch at 0:44
  2. 2

    Send the first question — it lands as a node

    Type into the 你想探索什么 composer and hit 发送. The recording asks whether model context gets polluted (模型上下文会污染吗), and that question becomes the first node on the canvas. The cards under the input preview the whole grammar: 概念分支 grows a concept sideways, 连线即上下文 feeds an answer forward, 自由画布 lays everything out spatially — and you can drag a document in or open local agent conversations instead of typing.

    ThoughtDAG composer with the question 模型上下文会污染吗 mid-typing beside the 发送 button, above explainer cards for 概念分支, 连线即上下文 and 自由画布
    The first question becomes the first node, not another scroll.Watch at 1:14
  3. 3

    Double-click a node to watch it think

    Double-click the new node and its answer opens as a document beside it, streaming section by section — in the recording: yes, session context can be polluted; no, model weights cannot be; attention dilution is the real long-context risk. A 继续追问 box sits at the foot of the panel, and each follow-up becomes another node rather than another paragraph — the whole difference from a chat column.

    A ThoughtDAG node card reading 模型上下文会污染吗 with its answer document streaming pollution types beside it and a 继续追问 box at the foot
    Double-click a node and the answer opens as a document, not a chat bubble.Watch at 1:21

Wires, files and context injection

  1. 4

    Select a phrase to reinforce it downstream

    Inside any answer you can select text — the recording highlights 上下文迷失, lost in the middle — and a small toolbar appears on the selection. From then on that phrase is strengthened into the context of follow-up nodes, so the literature branch on the left, running on a search agent, keeps circling the exact failure mode instead of the whole essay. The pollution-type table below shows the kind of structured answer a branch can end in.

    Selecting the phrase 上下文迷失 inside a ThoughtDAG answer, a small reinforcement toolbar on the selection and a pollution-type table below
    A selected phrase gets reinforced into every downstream node's context.Watch at 1:56
  2. 5

    Drop a PDF on the canvas — it becomes nodes

    Drag a PDF anywhere on the canvas and it lands as a file card. The reader toolbar offers 摘要, 提取文本, 导读 and 摘取图像; 生成导读 writes a reading-guide node with an auto-generated label, and the extracted figure card — the paper's CoT-prompt structures — is read by the vision model on request. The guide node then wires into 无关信息干扰 and 少样本提示 branches: the paper stops being a file and becomes part of the graph.

    ThoughtDAG canvas after a PDF lands: the file card, an extracted CoT-prompt figure card and a 导读 guide node labeled Context noise wired into 无关信息干扰 and 少样本提示 branches
    One dragged-in PDF turns into a guide node, a figure and two branches.Watch at 3:16
  3. 6

    Draw the line: dashed injects a summary, solid injects everything

    This is the one rule made visible. A dashed edge passes only a summary of the upstream node downstream; a solid edge passes the full context. The toast spells it out — 材料已全量接入, about 598 tokens flowing down this line — with 改为摘要引用 to demote a heavy feed into a summary one. The input box waiting at the end of a dragged line says the same in one sentence: whatever flows in through the line is its context.

    A ThoughtDAG edge carrying a toast that reads 材料已全量接入 约598 tokens 随此线流入下游 with a 改为摘要引用 button, above an empty line-fed input box
    The toast counts the tokens a line carries — dashed for summaries, solid for full context.Watch at 3:40

Distill, harvest old sessions, take it with you

  1. 7

    Select three nodes and merge them into one

    Box-select related nodes and a floating toolbar counts the grab: 已选中 3 个节点 (1615 tokens). 合并凝练 distills them into a single merged node, 合并并删除 also clears the originals, and the red 全部删除 is the escape hatch. Around the merge the recording also reorders context, deletes a node and regenerates a different answer, condenses chains of near-identical nodes, and groups regions with colored partition frames that lock and drag as one.

    The ThoughtDAG selection toolbar reading 已选中 3 个节点 1615 tokens with 合并凝练, 合并并删除, 探索 and a red 全部删除, over three highlighted nodes
    Three branches in, one distilled node out.Watch at 5:00
  2. 8

    Import your old Claude Code and Codex sessions

    The Agent 对话地图 modal scans agent conversations on this machine and lists them by project folder, with filter tabs for claude-code, codex, dsh and sub-threads. The header promises read-only — nothing on the canvas ever writes back to session files — and 接入 pulls a session in as a linear chain of nodes you can finally branch from. A month of linear CLI work becomes raw material for today's graph.

    The Agent 对话地图 modal in ThoughtDAG listing local claude-code sessions with claude-code, codex, dsh and 子线程 filter tabs, an 接入 import button and a read-only promise
    Old agent sessions import as nodes — read-only, nothing writes back.Watch at 6:44
  3. 9

    Export the poster, and let the JSON backup follow you

    导出思路地图 opens a poster composer — title, node and timing toggles, layout — and renders the canvas as a printable map (this one: 8 步思考 · 2 份材料) you download as PNG. The graph itself saves locally in real time, and folder backup writes every node change to a JSON file, so the whole canvas can move to another machine and continue there.

    The 思路地图 export modal in ThoughtDAG previewing a My Canvas poster with 8 步思考 2 份材料 stats, layout sliders and a 下载 PNG button
    The whole graph exports as a printable poster; a JSON backup can travel too.Watch at 7:29

Frequently asked questions

The questions people ask about dsh's infinite canvas and session branching.

Is the infinite canvas an official DeepSeek Harness feature?

No. ThoughtDAG is a third-party community plugin by developer Chatchan (github.com/chenxiachan/thoughtdag), embedded into dsh's web UI as a 思维图 block. It requires Node 22.19+ (or 24) and DeepSeek Harness 0.1.2-rc.1 or later, and it is early software — the developer keeps shipping changes, so expect labels in this guide to move.

What is the difference between dashed and solid lines?

The line is the context. A dashed edge injects only a summary of the upstream node into the downstream one; a solid edge injects the upstream node's full context. The toast on an edge prints exactly what flowed — the recording shows 材料已全量接入, about 598 tokens — and 改为摘要引用 converts a full-context feed into a summary feed.

How is this different from dsh's built-in branch icon?

The built-in branch continues one task into a new session while the original keeps running — branching in time. ThoughtDAG branches in space: many sessions and documents as nodes on one canvas, with explicit wiring, merging and distilling between them. They compose well — branch natively for retries, then import both sessions onto a canvas to compare.

Will it modify my existing conversations?

The import path is read-only by design. The Agent 对话地图 modal states that nothing on the canvas writes back to session files, and the repo repeats it for Claude Code, Codex, DeepSeek Harness and Pi sessions. Your original conversations stay put; the canvas keeps its own local data.

Where does the canvas live — and can I move it to another machine?

Locally. Nodes save in real time to local storage, and folder backup writes every node change into a JSON file you can carry over and continue elsewhere. Export 思路地图 additionally renders the whole graph as a downloadable PNG poster. One caveat from the repo: model calls send the relevant canvas content to whichever provider is configured in dsh, as any dsh conversation would.

Related guides

Where the canvas workflow connects to the rest of dsh.

Source & credits

Frames come from the plugin developer's own Bilibili recording (Chinese UI, 8 minutes), cropped to the app window so the recording's webcam bubble, chapter titles and subtitle band never appear; the install commands are quoted from the official repo README. For the wider canvas-plugin landscape — including the synapse and talk-map projects — see The mindmap & canvas collection

DSH Plugins is an independent community directory of DeepSeek Harness plugins. Not affiliated with or endorsed by DeepSeek. Third-party plugins are not security-audited — review the source before installing.

New DeepSeek Harness plugins, weekly. No spam.