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.

ObjectQuestion it answersLifetime
ThreadWhat is being discussed?Can outlive a Ticket
TicketWhat work is open?Until the outcome is confirmed
MandateWhy was the agent allowed?Audit and revalidation
AssignmentWhich dispatch is current?One execution arrangement
Worker SessionWhat did the model actually do?One or more Turns
Store, Effects, OutboxWhat survives a restart?Durable records
DSH Super-Agent domain model showing Source, Trigger, Thread, Ticket, Mandate, Assignment, and Worker Session
Figure 1. Event intake, authorization, execution, and durable delivery are separate paths.

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.

DSH Super-Agent ticket lifecycle from Issue trigger to open ticket, ready report, human review, and merged PR
Figure 2. A Ticket can remain open for human review after the worker reports it is ready.

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.

Running DeepSeek inside agent loops like these?

Explore our Super-agent architecture guide or see current DeepSeek Coding Plans. Check provider compatibility and availability before choosing a plan.