One chat for everything, no more hunting for old conversations. A DeepSeek Harness (DSH) plugin./不用再翻旧会话:所有事在一个对话框里聊,自动分到对应的那件事
TypeScript
4
60 commits
updated Oct 6, 2026
One chat for everything you're working on.
It knows which project each message belongs to, and keeps every project's context separate.
English | 简体中文

A GPU question, a hotel question, then the GPU again, with no cues in between. The two topics on the left made themselves; nothing was clicked. (Example conversation.)
How many sessions are sitting in your DSH sidebar? Getting back to last week's work means digging through them. Skip creating a new one and everything piles into a single session, where topics bleed into each other and the details vanish at the next compaction.
If you've ever said any of these, TheOne was probably written for you:
What TheOne does: you only ever talk in one main chat. In the background it opens a separate session for each thing you're working on and sends every message to the one it belongs to.
Each project reasons, runs tools and compacts in its own session. What you see is always one ordinary conversation.
| Usual workflow | With TheOne | |
|---|---|---|
| Start something new | Create a session, name it | Just say it |
| Go back to earlier work | Dig through the sidebar | Mention it; TheOne finds it |
| One session gets cluttered | Topics interfere; compaction drops details | Every project has its own context |
| Two projects need each other | Copy and paste | The other project's progress comes along |
| Wrong project | Move it by hand | Say "wrong topic" |
dsh-theone under Package name or address, and install.That's it. Works with DSH 0.2.0-rc.2 and Node.js 24; the interface follows DSH's language (English / Simplified Chinese).
No coding needed:
Make sure DSH itself can chat. Add your model provider's API key (DeepSeek's, for example) in DSH's settings, open an ordinary chat and say "hi". If it answers, you're set. TheOne uses that same model; there is no other key to enter.
Install TheOne. Click Plugins in the sidebar, then Add plugin, and enter:
dsh-theone
Click install and wait for it to finish.
Start. A new TheOne · Main chat appears in the sidebar. Open it and just talk about whatever is on your plate: today's work, the weekend trip, the paper you're writing. No new chats to create, nothing to name.
Updates. When a new version is out, a download icon appears next to the TheOne entry. One click installs it, usually without a restart; your topics live in the database and are untouched.
Changed your mind? Uninstall it on the Plugins page. Your DSH chats are all still there; TheOne organises them and never deletes them.
Small things you may run into
https://github.com/YunongDai2005/dsh-theone instead, which installs right away.dsh plugin --profile web add dsh-theone --ignore-scripts (use desktop instead of web for the desktop app)dsh plugin --profile web add github:YunongDai2005/dsh-theone --ignore-scriptsA new version from npm installs once it has been published for 24 hours; when an update is newer than that, the update button explains it and can exempt TheOne alone so it installs right away.
Unofficial community project, maintained independently. It is not affiliated with or endorsed by DeepSeek.
Claims are cheap, so we built a public benchmark, InterleaveBench: one person pushing 3–5 things forward in the same chat at once (a trip, a budget, a paper, a training plan…), half in Chinese and half in English, 50 conversations and 2,466 messages, each labelled in advance with the thing it belongs to. Below, the 40-conversation dev split replayed message by message through TheOne's own routing code with DeepSeek V4.1 Flash (messages even a careful human could not attribute are not scored):
| Approach | Messages routed correctly |
|---|---|
| TheOne, topic list given up front | 91.6% |
| TheOne, starting from nothing and creating topics as it goes (your first day) | 86.6% |
| Keyword search (BM25), topic list given up front | 73.3% |
| No routing, everything in one chat | 44.5% |
| Keyword search, starting from nothing | 39.9% |
| A new topic for every message | 9.8% |
A few numbers worth knowing:
eval/; reproduce it, or try another model.The conversations are model-written from a script and this version has no assistant replies, so it measures whether messages are routed right, not everything about how chatting feels.
For now, TheOne is being refined on DeepSeek Harness, whose background sessions, tools and compaction can be reused as they are: the right place to get "one chat for everything" solid first.
In progress:
Once it is stable, the next step goes beyond DSH:
Which comes first depends on what people need more. If you have a view, say so in Issues.
Choosing a topic. Each message is matched to the current topic, an earlier one, or a new one. By default the model you selected makes one short classification (thinking off, at most 2,048 tokens), with candidates recalled through DSH full-text search.
THEONE_ROUTER_MODE=rules) makes no model calls at all.Linking topics. A background session starting work receives a reference briefing, and none when there is nothing new:
The briefing is marked as reference, not instructions. For details, the background session can use theone_read_topic and theone_search_history. Linking scope is Learn automatically (default), Same workspace only or Off. In the directory you can link or unlink topics and mark a topic Do not share; your choices always win.
Topic directory. Each topic shows its latest progress and constraints. Under Manage you can rename, edit the summary and constraints, move to another workspace, merge, delete, or attach an existing DSH session as searchable history; + New topic starts one by hand. Recent topic routing lists where each message went, why, with which model and how long it took. With a long history, the first pass takes some time and API quota; set THEONE_HISTORY_CATALOG=false to turn it off.

Right-click the TheOne button in the sidebar and choose Settings. Changes apply when saved; only the history catalog settings wait for a DSH restart.
| Setting | What it does |
|---|---|
| Topic notices | How main chat shows topic changes: hidden, one line only when the topic changes (default), or on every message with the reason |
| Linking scope | Learn automatically (default), same workspace only, or off |
| Share confirmed facts (experimental) | Off by default. Topics share only facts the user confirmed (a figure, a decision, where a file is), with version and source; a topic that used one is told when it changes or is withdrawn. Applies after a DSH restart |
| Record facts automatically (experimental) | Off by default. With shared facts on, one small model call after each turn records facts the topic session left out; only user-confirmed ones are shared |
| Model | Follow DSH (default) or pin the background model from any model configured in DSH; a pinned model takes precedence over main chat's selector |
| Routing | LLM decision (default) or rule-based |
| History catalog | On/off and rescan interval |
| Limits | Topic descriptor length; reply length per background step, thinking included |
| Manual catalog file | Optional JSON file of hand-written topics, imported when saved |
The database location and entry identifier switch TheOne to different data, so they are set only through environment variables: THEONE_DATABASE_PATH and THEONE_GATEWAY_KEY. Also optional: THEONE_CONTEXTS_PATH and THEONE_WORKER_PROVIDER / THEONE_WORKER_MODEL (set both).
$DSH_HOME/theone/contexts.db, ~/.dsh/theone/ by default).https://yulid.org/theone/notice.json with a plain request that sends none of your data; turn them off in Settings.~/.dsh/theone/gateway; you cannot yet choose a project folder for a new topic.git clone https://github.com/YunongDai2005/dsh-theone.git
cd dsh-theone
npm ci --ignore-scripts
npm run typecheck
npm test
Tests use the real DSH runtime (AgentLoop, Session, SQLite, JSONL persistence, compaction) with a simulated model, and call no external API. npm run pack:plugin builds the install package; npm run install:local and npm run start:local run a separate DSH profile in ~/.dsh-theone.
Service API: ctx.theone.searchHistoryDetailed(contextId, query, limit) searches a topic's reviewed history; store.addSource(contextId, sessionId, { startSeq, endSeq }) attaches part of a session. Earlier acceptance records: v0.1 and v0.2.
Congratulations, you found the easter egg.
In the benchmark, TheOne once made a very human mistake. The user said "the café's autumn menu was due on September 25, let's push it to October 8", and TheOne filed it under the October holiday trip to Yunnan. Both were in October, after all.
We're still training it. If it ever files something of yours in the wrong place, just say "wrong topic" in the main chat. It will remember, and it won't take it personally.
If TheOne helps, a ⭐ helps others find it. Questions or ideas? Open an issue.
One chat for everything, no more hunting for old conversations. A DeepSeek Harness (DSH) plugin./不用再翻旧会话:所有事在一个对话框里聊,自动分到对应的那件事
TypeScript
4
60 commits
updated Oct 6, 2026
One chat for everything you're working on.
It knows which project each message belongs to, and keeps every project's context separate.
English | 简体中文

A GPU question, a hotel question, then the GPU again, with no cues in between. The two topics on the left made themselves; nothing was clicked. (Example conversation.)
How many sessions are sitting in your DSH sidebar? Getting back to last week's work means digging through them. Skip creating a new one and everything piles into a single session, where topics bleed into each other and the details vanish at the next compaction.
If you've ever said any of these, TheOne was probably written for you:
What TheOne does: you only ever talk in one main chat. In the background it opens a separate session for each thing you're working on and sends every message to the one it belongs to.
Each project reasons, runs tools and compacts in its own session. What you see is always one ordinary conversation.
| Usual workflow | With TheOne | |
|---|---|---|
| Start something new | Create a session, name it | Just say it |
| Go back to earlier work | Dig through the sidebar | Mention it; TheOne finds it |
| One session gets cluttered | Topics interfere; compaction drops details | Every project has its own context |
| Two projects need each other | Copy and paste | The other project's progress comes along |
| Wrong project | Move it by hand | Say "wrong topic" |
dsh-theone under Package name or address, and install.That's it. Works with DSH 0.2.0-rc.2 and Node.js 24; the interface follows DSH's language (English / Simplified Chinese).
No coding needed:
Make sure DSH itself can chat. Add your model provider's API key (DeepSeek's, for example) in DSH's settings, open an ordinary chat and say "hi". If it answers, you're set. TheOne uses that same model; there is no other key to enter.
Install TheOne. Click Plugins in the sidebar, then Add plugin, and enter:
dsh-theone
Click install and wait for it to finish.
Start. A new TheOne · Main chat appears in the sidebar. Open it and just talk about whatever is on your plate: today's work, the weekend trip, the paper you're writing. No new chats to create, nothing to name.
Updates. When a new version is out, a download icon appears next to the TheOne entry. One click installs it, usually without a restart; your topics live in the database and are untouched.
Changed your mind? Uninstall it on the Plugins page. Your DSH chats are all still there; TheOne organises them and never deletes them.
Small things you may run into
https://github.com/YunongDai2005/dsh-theone instead, which installs right away.dsh plugin --profile web add dsh-theone --ignore-scripts (use desktop instead of web for the desktop app)dsh plugin --profile web add github:YunongDai2005/dsh-theone --ignore-scriptsA new version from npm installs once it has been published for 24 hours; when an update is newer than that, the update button explains it and can exempt TheOne alone so it installs right away.
Unofficial community project, maintained independently. It is not affiliated with or endorsed by DeepSeek.
Claims are cheap, so we built a public benchmark, InterleaveBench: one person pushing 3–5 things forward in the same chat at once (a trip, a budget, a paper, a training plan…), half in Chinese and half in English, 50 conversations and 2,466 messages, each labelled in advance with the thing it belongs to. Below, the 40-conversation dev split replayed message by message through TheOne's own routing code with DeepSeek V4.1 Flash (messages even a careful human could not attribute are not scored):
| Approach | Messages routed correctly |
|---|---|
| TheOne, topic list given up front | 91.6% |
| TheOne, starting from nothing and creating topics as it goes (your first day) | 86.6% |
| Keyword search (BM25), topic list given up front | 73.3% |
| No routing, everything in one chat | 44.5% |
| Keyword search, starting from nothing | 39.9% |
| A new topic for every message | 9.8% |
A few numbers worth knowing:
eval/; reproduce it, or try another model.The conversations are model-written from a script and this version has no assistant replies, so it measures whether messages are routed right, not everything about how chatting feels.
For now, TheOne is being refined on DeepSeek Harness, whose background sessions, tools and compaction can be reused as they are: the right place to get "one chat for everything" solid first.
In progress:
Once it is stable, the next step goes beyond DSH:
Which comes first depends on what people need more. If you have a view, say so in Issues.
Choosing a topic. Each message is matched to the current topic, an earlier one, or a new one. By default the model you selected makes one short classification (thinking off, at most 2,048 tokens), with candidates recalled through DSH full-text search.
THEONE_ROUTER_MODE=rules) makes no model calls at all.Linking topics. A background session starting work receives a reference briefing, and none when there is nothing new:
The briefing is marked as reference, not instructions. For details, the background session can use theone_read_topic and theone_search_history. Linking scope is Learn automatically (default), Same workspace only or Off. In the directory you can link or unlink topics and mark a topic Do not share; your choices always win.
Topic directory. Each topic shows its latest progress and constraints. Under Manage you can rename, edit the summary and constraints, move to another workspace, merge, delete, or attach an existing DSH session as searchable history; + New topic starts one by hand. Recent topic routing lists where each message went, why, with which model and how long it took. With a long history, the first pass takes some time and API quota; set THEONE_HISTORY_CATALOG=false to turn it off.

Right-click the TheOne button in the sidebar and choose Settings. Changes apply when saved; only the history catalog settings wait for a DSH restart.
| Setting | What it does |
|---|---|
| Topic notices | How main chat shows topic changes: hidden, one line only when the topic changes (default), or on every message with the reason |
| Linking scope | Learn automatically (default), same workspace only, or off |
| Share confirmed facts (experimental) | Off by default. Topics share only facts the user confirmed (a figure, a decision, where a file is), with version and source; a topic that used one is told when it changes or is withdrawn. Applies after a DSH restart |
| Record facts automatically (experimental) | Off by default. With shared facts on, one small model call after each turn records facts the topic session left out; only user-confirmed ones are shared |
| Model | Follow DSH (default) or pin the background model from any model configured in DSH; a pinned model takes precedence over main chat's selector |
| Routing | LLM decision (default) or rule-based |
| History catalog | On/off and rescan interval |
| Limits | Topic descriptor length; reply length per background step, thinking included |
| Manual catalog file | Optional JSON file of hand-written topics, imported when saved |
The database location and entry identifier switch TheOne to different data, so they are set only through environment variables: THEONE_DATABASE_PATH and THEONE_GATEWAY_KEY. Also optional: THEONE_CONTEXTS_PATH and THEONE_WORKER_PROVIDER / THEONE_WORKER_MODEL (set both).
$DSH_HOME/theone/contexts.db, ~/.dsh/theone/ by default).https://yulid.org/theone/notice.json with a plain request that sends none of your data; turn them off in Settings.~/.dsh/theone/gateway; you cannot yet choose a project folder for a new topic.git clone https://github.com/YunongDai2005/dsh-theone.git
cd dsh-theone
npm ci --ignore-scripts
npm run typecheck
npm test
Tests use the real DSH runtime (AgentLoop, Session, SQLite, JSONL persistence, compaction) with a simulated model, and call no external API. npm run pack:plugin builds the install package; npm run install:local and npm run start:local run a separate DSH profile in ~/.dsh-theone.
Service API: ctx.theone.searchHistoryDetailed(contextId, query, limit) searches a topic's reviewed history; store.addSource(contextId, sessionId, { startSeq, endSeq }) attaches part of a session. Earlier acceptance records: v0.1 and v0.2.
Congratulations, you found the easter egg.
In the benchmark, TheOne once made a very human mistake. The user said "the café's autumn menu was due on September 25, let's push it to October 8", and TheOne filed it under the October holiday trip to Yunnan. Both were in October, after all.
We're still training it. If it ever files something of yours in the wrong place, just say "wrong topic" in the main chat. It will remember, and it won't take it personally.
If TheOne helps, a ⭐ helps others find it. Questions or ideas? Open an issue.