Repository navigation
Replies: 2 comments 2 replies
|
There is an important distinction between rewriting the pre-step batch and sending unlogged text to the model. In the architecture documentation for your reported dsh-v0.2.1-rc.2, agent/pre-step listeners can rewrite or reject the claimed messages. But for an admitted step, the documented flow appends the entered messages as user/message events and then derives model history from the log. The same document states the intended invariant: model-visible means logged. So a pre-step listener could alter or duplicate the admitted batch, including a built-in listener; no third-party plugins are required in principle. But that alone does not explain text appearing in an actual model request with no corresponding reconstructable session state. That would need a separate explanation, such as a version-specific defect, a different request path, incomplete evidence, or a misunderstanding of what was observed. Similarly, a local-echo bubble is not by itself evidence that its contents reached the provider. Also, text repeated by the assistant is not conclusive evidence of an additional user-role message in the request: the model could have generated it. A useful next comparison would be, for one reproducible test with synthetic, non-sensitive marker text: Capture the submitted request ID and the local-echo UI state. I don’t know of a supported, content-free tracing switch for rc.2 so I wouldn’t assume one exists. If you can share the relevant event types and counts around one affected turn, that would help narrow down which boundary first diverges. |
|
A content-free audit of each step's assembly now exists — and the third question has an answer on it.
dsh plugin add "github:argszero/cordis-plugin-inbox-input-guard#v0.3.1"It hooks The field aimed at this report is On the third question — is there a supported way to log inbox/pre-step assembly without persisting content? I could not find one on 0.2.1-rc.2 or on rc.5; there is no switch for it, which matches what @lubenkov found. This ledger is the alternative that exists today. One boundary, because it decides how far the fix goes: |
Uh oh!
There was an error while loading. Please reload this page.
What happens
Twice in one session, user messages appeared in the model's input that the user
never typed: duplicated up to ~12 times, some of them empty, with timestamps
~21 minutes ahead of wall clock. None of them was written to disk.
empty payloads.
shape, different content.
Content is redacted (personal); both batches were ordinary short user messages
in Chinese.
Environment
dsh 0.2.1-rc.2, desktop app on Windows,
desktopprofile, web GUI on 127.0.0.1(loopback), model deepseek-flash.
What I already ruled out
rpcIdonce;no error / retry / timeout / abort.
Code-level notes (review of the packaged dsh/ tree)
mutate()appendsagent/inbox/spliced(dsh-agent-loop L204) andclaim()(L103-110) goesthrough it; the frequent
{"removedCount":1,"inserted":[]}splices are justclaim traces.
preStep()(L902-927) runs theagent/pre-stepwaterfall (L909), where plugins may rewrite
decision.messages- the onlypath by which content reaches the model without a session event. This profile
has no third-party plugin installed.
beginSubmission()storesDate.now()only inpendingSubmissions(local echo; snapshot L816);prompt()(L186-192) sends{requestId, sessionId, mode, content, clientTimeZone}with no time field. Message time is written server-side.Remaining possibilities
(a) the text reached the model through a non-inbox path, or (b) a local-echo
rendering was misread as a committed submission. These cannot be distinguished
from outside.
What I would like to know
agent/pre-stepinjection could duplicate user text?content?
Session id and untruncated evidence can be provided privately.
All reactions