One chat for everything in DeepSeek Harness (DSH): no more hunting for old conversations. Each message goes to the topic it belongs to, with its own context.
The plugin will be installed here. Keep web if you are unsure.
npx -y @deepseek-ai/dsh plugin --profile web add github:YunongDai2005/dsh-theone#1d74799c107c5ae9c6b0febb1510caecfafc4562
Compatibility and provenance
Theone is published as dsh-theone and currently resolves to version 0.3.36. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.
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:
"Where was that chat again?" Too many conversations, and the old one is nowhere to be found.
"Not starting a new chat for this, I'll just ask here." And one chat turns into a mess.
"I already told you that!" The AI forgot what you talked about.
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.
Why try it
Version 0.3.36 adds Ongoing tasks: follow a public GitHub PR and CI on this computer, notify main chat about changes, pause or cancel, and recover after restart. Memory proposals are queued and checked against their evidence before merging. See the implementation and limitations (Chinese).
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"
Feels native. Thinking streams in its usual place from the first token, and tool cards, approvals, questions, todo lists, retries and mid-reply steering all work as usual.
Keep talking while it works. A message sent during a reply that is about that reply joins it, as in any DSH chat; one about something else starts in its own topic right away, in the background, and its answer follows in main chat in the order you sent things. At most three topics work at once.
Works where the work is. A new topic about one of your projects works in that project's folder; anything else goes to DSH's folder for chats outside any project. Nothing is added to your projects in the sidebar.
Related work connects; unrelated work stays out. Related topics share progress automatically, and which ones belong together is learned from how you use them. A topic's constraints (say, "budget figures stay out of the paper") are attached verbatim every time, so compaction never drops them.
Learns your words. Once a topic has replies, a short routing card is written in the background (what it is, what you call it, the people, places and files involved), so it is recognised however you phrase it. Say "wrong topic" and it remembers which terms tie that kind of message to the right one. Topics you haven't touched in a long while go to the back of the line; how long is "long" is learned from how you come back to things.
Your old sessions become a topic directory. After install it reads your existing sessions in the background, turns them into topics grouped into workspaces, and you pick up where you left off.
Nothing extra to configure. No separate API key: it uses the model you chose in DSH. When TheOne is selected, a layers icon beside the model menu shows and switches which model routes and which does the work.
Install in 30 seconds
For a local demo using NVIDIA Nemotron 3 Super through Nebius Token Factory, see Nebius/Nemotron setup.
Configure an API in DSH and select a model that can chat.
Open Plugins → Add plugin, enter dsh-theone under Package name or address, and install.
Click TheOne · Main chat in the sidebar and start talking.
That's it. Works with DSH 0.2.0-rc.2 and Node.js 24; the interface follows DSH's language (English / Simplified Chinese).
New to DSH? A step-by-step walkthrough (about 3 minutes)
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
"Too new" and it won't install: DSH only installs versions published at least 24 hours ago. That's a safety rule, not an error. Wait a day, or enter the GitHub address https://github.com/YunongDai2005/dsh-theone instead, which installs right away.
No TheOne in the sidebar after installing: restart DSH.
Something wrong? Click Report a problem at the top right of Topic workspaces: versions and diagnostics (no chat content) are attached, and Send delivers it without GitHub. Or email theone@yulid.org; a screenshot helps.
Will it cost a lot? Each message adds one short classification call (no deep thinking), and "ok" or "go on" skips even that. With many old chats, the first pass that organises them uses some of your quota; turn History catalog off in the settings if you don't need it.
Command line and other sources
npm: dsh plugin --profile web add dsh-theone --ignore-scripts (use desktop instead of web for the desktop app)
GitHub (always the latest main): dsh plugin --profile web add github:YunongDai2005/dsh-theone --ignore-scripts
A 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.
From your phone (experimental)
Talk to main chat away from your computer: bind a messaging app in TheOne Settings, and what you send from your phone works like typing in main chat. It goes to its topic and runs in the background, and the reply comes back to your phone. Approvals and the AI's questions come too; answer with a number (no answer within 10 minutes declines). Main chat on your computer shows the same conversation. Only you are listened to; nobody else's messages reach main chat.
App
How to bind
Notes
WeChat
Scan to bind in Settings, then scan with WeChat on your phone
Uses Tencent's iLink interface (the same as the OpenClaw WeChat plugin), a private Tencent protocol; follow WeChat's terms
Telegram
Make a bot with @BotFather, paste its token in Settings, then scan the code (or send /start <code>) to pair
The token stays on your computer
iMessage
Mac only: enter the phone number or Apple ID you text from
Give the app running DSH Full Disk Access, and allow it to control Messages on the first reply
Messages arrive only while DSH is running, not while the computer sleeps or DSH is closed. After a network drop or a restart it picks up where it left off, without losing or repeating messages.
How well does it route?
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:
A message landing in another thing's topic, the mistake that hurts context most: about 3.7% when starting from nothing.
The main weakness today is opening new topics too eagerly: one thing ends up split over 2.1 topics on average. 0.3.21's routing cards go after exactly that.
The whole run cost about one US dollar. Data, code and scoring live in 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.
What's next
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:
Better routing: looking at a burst of messages together while deciding each one separately, and measuring what routing cards add.
Confirmed facts shared between topics: a budget, a date, where a file lives, kept current wherever you need it. It is experimental and will only be turned on by default once it passes its benchmark.
Once it is stable, the next step goes beyond DSH:
A standalone client: one interface over different models and providers, opening straight into a single chat;
or adapters for other platforms: the same automatic topics, inside the chat tools you already use.
Which comes first depends on what people need more. If you have a view, say so in Issues or by email at theone@yulid.org.
How it works
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.
With no credible match it starts a new topic instead of asking whether it is new. It only asks when you refer to an earlier chat it cannot find, or it truly cannot tell which one you mean.
When one message draws on several topics, the one doing the work gets it and the others come along as reference.
"ok" or "go on" continues the current topic without waiting for a decision, and so does a picture or file sent without words.
If the classification call fails, rules decide, staying in the current topic when unsure. Rule-based routing (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:
right after a topic switch, the last few turns of main chat, so "use what we just said" carries over;
what changed in related topics since it last heard: their latest compaction summary (dated) and the progress after it;
each topic's constraints, verbatim, every time.
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, the project (DSH workspace) it works in, and its status when that is not plain in progress: Waiting on you (it asks you something, or a restart cut its work off), Set aside (untouched for longer than you usually come back), or Done (you marked it; a new message to it reopens it). Status is kept apart from the topic's record of what it worked on (its latest 20 messages and how each ended), and is worked out from it. Mark done / Reopen sits next to Manage. 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).
Data and privacy
DSH keeps the original conversations and tool results; TheOne keeps only its catalog, summaries, links and routing records in its own SQLite database ($DSH_HOME/theone/contexts.db, ~/.dsh/theone/ by default).
Text sent to the router or written into briefings has API keys, passwords and similar secrets removed.
A topic marked Do not share never appears in other topics' briefings, recent-chat excerpts or lookups.
Notices from the author are read from https://yulid.org/theone/notice.json with a plain request that sends none of your data; turn them off in Settings.
Report a problem (top right of Topic workspaces, or Report a problem on a message under Recent topic routing) sends only when you press Send, and shows everything it would send first. By default it holds versions, settings and routing error codes and timings, no chat content; for one message, its text and reply are added only if you tick the box. Reports go to feedback.yulid.org, are used only to look into problems and are deleted after 90 days; to have one deleted sooner, email theone@yulid.org with its id.
When main chat grows long, DSH compacts it through TheOne: frequently used topics keep longer summaries and their latest turns, rarely used ones keep a short status. This makes no model call.
Updates are installed by DSH's plugin manager and reload TheOne in place; a DSH without plugin hot reload applies them at the next restart.
Known limitations
Telling whether a message sent during a reply is about that reply needs the routing model; with rules-only routing, every such message joins the reply, as before.
A new topic not about any of your projects works in DSH's own folder for chats outside any project (Documents/deepseek-harness/default-workspace), or in ~/.dsh/theone/gateway if you do not have that folder. Topics organised from your existing chats work in those chats' folders.
Main chat stores copies of tool calls, so its log grows with use; entry-log rotation is not implemented yet.
Only one DSH process should use a database at a time.
Image output is not forwarded yet; there is no vector search; topics cannot be split yet.
Main chat shows tool cards without running them because TheOne sits first in DSH's tool pipeline. If another plugin also places itself first, it may see these mirrored calls, but no tool runs twice.
Development
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.