Releases: PerryLink/dsh-autotier
Releases · PerryLink/dsh-autotier
Release list
v0.2.2
[0.2.2] - 2026-09-10
Changed
- Align the
plugin-doctorCI gate with the family standard: the job now pins@perrylink/dsh-plugin-doctor@0.1.6and passes--only "R,K"directly, retiring the0.1.4pin and theDOCTOR_ONLYvariable that carried the two group names as YAML\uescapes. The gate is now identical to the other 36 repositories and keeps itsR0guard, which fails loudly when the doctor runs no checks. No runtime change.
Docs
- Add the ecosystem-standard badge block (Gitee mirror, License, DSH plugin, dsh-doctor, Node, CI, Version) under the H1 of all five READMEs; the rest of each file is unchanged. The
dsh-doctorbadge target and the Gitee mirror were verified to exist before being referenced. This release is what puts the badges on the npm page: npm renders the README from the published tarball, so the GitHub-only commit was not visible there.
v0.2.1
[0.2.1] - 2026-09-10
Changed
- Pin the
@deepseek-ai/dsh-*dev/test dependencies to the published0.1.5-rc.1line and record0.1.5-rc.1indshWorkshop.compatibility.dshVersions; the monthly Compat workflow now runs against0.1.5-rc.1. The peer range>=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0is unchanged, so no supported host line is dropped.
Docs
- Refresh the five-language README compatibility baseline to
dsh-v0.1.5-rc.1(verified 2026-09-10).
v0.2.0
[0.2.0] - 2026-09-09
Added
- Browser half: a Settings card and a composer tier pill. The plugin now
ships atierTypert Remote service (tier/status,tier/catalog,
tier/setMode) behind a hand-written./typerthost manifest, and a client
bundle that registers the composer pill intoconversation.input.left
(idtier-pill) and the autotier card into the Plugins settings section
(settings.plugins.tab, idautotier). The pill shows the session's effective
mode (AUTO/STRONG/CHEAP/OFF) with an escalation badge and cycles
the session override on click; the card offers the full
auto | strong | cheap | delegated | offselector, the read-only tier
landings, the live session state, and a model-catalog dropdown fed by the live
ctx.llmregistry. Copy ships in English and Simplified Chinese. TierStatusextends the publicAutotierStatusadditively with asession
view (override, effective mode, applied tier and source, escalation, plan
mode, guard denials); the host still servesctx.autotier.status()unchanged.zodis now a runtime dependency (the strict wire codecs on both faces) and
the client peers (dsh-api-remotes,dsh-client-connection,
dsh-client-locale,dsh-client-ui-conversation,dsh-client-ui-settings,
dsh-client-ui-slots,dsh-typert-protocol) are declared as optional peers.
Notes
- The session override stays runtime-only:
autoclears it, and a plugin reload
restores thecordis.ymlrouting mode. Nothing is persisted. pnpm run verify:artifactsnow asserts the two new shipped faces
(lib/typert.host.jswith its manifest shape,lib/client.jswith its
ModuleLoader handshake and external platform modules).- The five-language READMEs are not updated in this change; the client copy is
English + Simplified Chinese only.
v0.1.1
[0.1.1] - 2026-09-09
Added
- Route pre-flight against the live registry. Before a tier landing is
written into the request configuration, the plugin now checks the two facts
that would fail the request outright: the provider route must be registered,
and the target model must declare the configured reasoning effort. An
unregistered provider redirects to a registered fallback chain entry; an
unsupported effort is dropped so the adapter default applies; an adapter that
cannot answer is treated leniently. Both answers are cached per
provider/model, and each degradation is logged once. - Compat workflow now runs its profile job over a matrix of both published
harness lines (0.1.2-rc.1and0.1.5-alpha.1), so drift in either is caught
automatically.
Changed
- Peer ranges name both published lines explicitly
(>=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0): a semver range whose only
prerelease comparator sits on an earlier version tuple does not admit a later
alpha, so the previous range left0.1.5-alpha.1unsatisfied. dsh.compatibility.dshReleasesand the five READMEs now declare
0.1.5-alpha.1compatible after an end-to-end verification (real profile
install,--dump-configrow, keyless headless smoke).
v0.1.0
[0.1.0] - 2026-09-09
Added
- Automatic tier routing on the official seam. A load-time
agent/request
waterfall listener registered on the root scope with{ prepend: true }
replaces the provider/model/effort triple while preserving the sampling
scalars the session already chose (temperature,maxTokens,stop). It
always awaitsnext()exactly once and never returnsundefined. - Deterministic intent gate (zero tokens). Declarative rule table
(intent.rules: patterns/tools/cwd, priority-ordered), explicit-intent
patterns, bilingual keyword scoring with word boundaries and a CJK
co-occurrence rule, structural signals (token bands, tool calls, code fences,
hard hints, turn depth), image and long-text short-circuits, and the
attempt-first middle band (shipped disabled). - Low-confidence judge. Only a turn below
intent.ruleThresholdcalls a
cheap model, never on cooldown, and abstains after
intent.judge.unavailableSkipconsecutive failures. - Fingerprint posteriors. Per-shape
{cheap,strong}win-rate counters with
a Wilson lower bound, ε-greedy exploration, half-life decay and an LRU cap.
Labels come from terminal turn outcomes only, never from the router's own
judge call. - Decision state machine. Precedence: session override → active escalation →
plan mode → fallback chain → declarative rule → posterior → classifier, with a
double-threshold hysteresis (toStrong/toCheap) that damps tier flapping. - Plan-mode handoff. A complex instruction opens plan mode through the
optionalplanModeservice, falling back to an appendedplan/modeevent when
the service is not reachable; leaving plan mode returns the session to the
cheap tier. - High-risk guard on
tools/pre-execute. A deterministic, tier-conditional
denial covering recursive-force deletes (includingsh -cwrapper payloads the
upstream rule set misses), destructive commands, credential paths and the
configuredguard.protectedPathsreview surfaces. A guard that throws
escalates to the strong tier instead of allowing the call. - Failure escalation and fallback chains. Same-signature recurrence counting
within a window raises the tier for a TTL; the effort-first ladder raises the
current model's effort before paying for a model switch. Permanent route
failures switch the fallback chain immediately, transient failures wait for
dsh-llm-retryexhaustion (this listener is registered after it on purpose). - Surfaces.
/tier auto|strong|cheap|off|status, the read-onlytier_status
andtier_routetools, thectx.autotierservice (status,catalog), the
autotier/routeserial veto event, theautotier/tier-changedemit event, and
a host+wireautotiersession projection foldingrequest/headerand
plan/mode. - Configuration. A Schemastery settings namespace (
autotier) with
save-time cross-field validation: tier landings, fallback chains, intent
thresholds, rules, judge, scenarios, cost mode, guard and escalation switches.
Reasoning effort accepts exactly the adapter vocabulary
off | low | high | max; the default strong model isdeepseek-v4-proand the
default cheap model isdeepseek-v4-flash. - Five-language READMEs,
cordis.patch.ymlwith every key documented inline,
Apache-2.0 license, security policy and third-party notices (including the
MIT-licensed guard-rule port and its deliberate deltas). - CI workflows:
ci.yml(typecheck against the checkout faces,typecheck:ci
against the published0.1.2-rc.1faces, tests, coverage, lint, README sync,
build, artifact and self-containment verification),compat.yml(real profile
install,--dump-configactivation assertion, keyless headless smoke,
uninstall rollback),release.yml(npm provenance + GitHub Release),
scorecard.ymlandplugin-doctor.yml. - Test suites (153 cases): config schema and cross-field resolution, the
function-plugin contract, fiber-disposal lifecycle over the real host
services, a real Loader composition over a temporarycordis.yml, the guard
rule table with a 5,909-command upstream-equivalence harness (the port itself
carries 30 cases, 14 of them case-for-case upstream ports), the classifier
and posterior matrix, the decision state machine, and a real AgentLoop
integration suite covering simple/complex routing, the/tieroverride,
escalation after two same-signature failures, fallback-chain switching and the
tier projection.
Known limitations
- No browser half yet: the Settings card and composer tier pill are planned for
v0.2; the host surface they need (ctx.autotier.status()/catalog()) ships. - Fingerprint posteriors are in-memory and reset on restart.
- The attempt-first middle band ships disabled until the calibration corpus and
its metric gate land. - A model picked in the GUI is not detected automatically; use
routingMode: delegatedor/tier off.