Repository navigation
Replies: 1 comment
|
The diagnosis is right, and it is worth being precise about the shape of the failure, because it decides where the gap can be closed. Why it fails closed rather than loudly. Where a plugin can reach it. The What I built. The reviewer request is recognised by the marker the harness's own test fixture uses: Install (the package is not on the registry — dsh plugin --profile <profile> add github:argszero/dsh-auto-review-temperature-guard#v0.1.0Mount entry, after install: Measured, and against what. All of this was read against the published Your install note. What this does not do. It rewrites the request on the way to the adapter; it does not change auto-review's source, so the hardcoded value is still there and the guard is the thing standing between it and the route. And it matches on the policy marker, so if a future build changes that marker the guard stops matching and the failure silently returns — it fails open, not loud. On the upstream fix. Issues and pull requests are disabled on this repository, so I cannot offer a core patch here — a measured statement about the channel, not a deflection. If one were possible it is small: either drop So: this closes the failure you hit, in plugin form, today. It is a mitigation and not a fix in the core, and I would rather say that than let the install line imply otherwise. |
Uh oh!
There was an error while loading. Please reload this page.
Summary
When
@deepseek-ai/dsh-experimental-auto-reviewis composed and the Session's model rejects anytemperatureother than1, the reviewer request fails with HTTP 400 and the pre-tool gate then denies every tool call. The gate fails closed, so the Session cannot execute any tool at all.Environment
dsh0.2.1-rc.3; the same code is present onmastertodaytemperature=1.Steps to reproduce
packages/experimental/auto-review/cordis.patch.yml).temperature != 1.glob.Actual result
The tool body never runs. The call is denied with:
Expected result
A reviewer request that the deployment's model cannot serve should not deny every tool call. The review should be sent with parameters the route supports (or the reviewer route should be configurable), and an infrastructure failure should be distinguishable from an actual review denial.
Root cause
The reviewer reuses the Session's route and hardcodes
temperature: 0:packages/experimental/auto-review/src/index.ts:675-680—GenerateOptionsbuilt withprovider: snapshot.provider,model: snapshot.modelandtemperature: 0packages/experimental/auto-review/src/index.ts:647—throw new Error(...reviewer ended with ${chunk.reason.kind} ${code}: ${message})packages/llm/llm-deepseek/src/serialize.ts:158— the adapter forwardstemperaturewhenever it is defined; the OpenAI-compatible/DeepSeek routes have no capability gate for it.llm-pi-aihassupportsTemperature(packages/llm/llm-pi-ai/src/catalog.ts:452), but that notion does not exist for the other providers.So the reviewer inherits the session model and unconditionally narrows its sampling parameter.
Suggested fix
Any of these resolves it:
temperaturefrom the reviewer request — the route's default applies. Smallest change; reviewer determinism was never guaranteed anyway.Configfield (temperature?: number, omitted by default) so a deployment can opt into0when its model accepts it.supportsTemperature, and omit it when unsupported.Additional context
Because the gate is fail-closed and the error is surfaced to the model as
Auto review rejected tool "<name>"; its body was not executed, the model cannot tell a reviewer configuration incompatibility from a genuine denial — the session just silently stops working. Reporting the reviewer failure kind separately (e.g. as an error result rather than a denial) would make this class of misconfiguration diagnosable.All reactions