Updated November 5, 2026
Inside DeepSeek's Super-agent: Why the Ticket Outlives the Chat.
A model session can stop before a task reaches its final outcome. DSH Super-agent, a DeepSeek Harness research prototype, keeps the work as a durable Ticket while execution takes place in a separate worker session.
This design lets a task move through execution, review and follow-up without treating the lifetime of a single model session as the lifetime of the work.
Why does the Ticket outlive the Session?
A Session describes model execution; a Ticket tracks the work and its outcome. For example, a worker can report a pull request ready for review while the Ticket remains open until the outcome is settled.
Illustrative pseudocode:
const assignment = latestAssignment(ticket)
const report = assignment?.report?.state
if (report === 'ready') return { stage: 'person', action: 'review' }
ready moves the Ticket to human review; it does not close it. The design rejects tying Ticket state to Session state, because that ties completion to whether a model process is alive.
What are the main objects?
Each object answers a different question, and each has its own lifetime.
| Object | Question it answers | Lifetime |
|---|---|---|
| Thread | What is being discussed? | Can outlive a Ticket |
| Ticket | What work is open? | Until the outcome is confirmed |
| Mandate | Why was the agent allowed? | Audit and revalidation |
| Assignment | Which dispatch is current? | One execution arrangement |
| Worker Session | What did the model actually do? | One or more Turns |
| Store, Effects, Outbox | What survives a restart? | Durable records |
The GitHub Source reads repository events, while the Feishu Source receives chat events. These become Triggers associated with Threads. Subscriptions route later context to a Ticket; a context-only subscription does not grant additional authority. An eligible human message can resume an ended Ticket after its Mandate is revalidated; a person-stopped Ticket and context-only threads have different rules.
Who decides that the agent may act?
An Eval assesses whether a request should become work, and a code-level Gate applies the current Policy. Accepted work receives a Ticket and a Mandate recording the basis and scope of its authority. The Mandate is revalidated when an ended Ticket resumes; subscribed context does not grant new authority.
Why separate Assignment and Worker Session?
A Ticket can outlive one dispatch. An Assignment records a dispatch, while the Worker Session holds execution. Follow-up input can lead to another turn; a retry can create a new Assignment while retaining the existing session, directory, branch and pull request.
How does it survive restarts?
SQLite stores the domain model as rows. Accepting work commits Ticket, Mandate, subscriptions and first Assignment in one transaction. External actions go into a durable Effects queue with stable keys and retries; a generation field stops an old retry from deleting a newer request. Outbox adds a marker to GitHub comments and checks for it before sending, so a retry after a dropped connection does not post twice. Commits, PR creation and server operations still need their own checks.
What holds up, and what is still missing?
The separation between discussion, work, authority and execution makes the prototype useful to study. Its limitations matter too: this is research software, GitHub and Feishu identities remain distinct, and external actions require careful recovery and review. It should be evaluated before production use.
Explore our Super-agent architecture guide or see current DeepSeek Coding Plans. Check provider compatibility and availability before choosing a plan.