mirror of
https://github.com/esengine/DeepSeek-Reasonix.git
synced 2026-11-11 01:51:33 -10:00
* Fix tool-result cache prefix stability Problem: complete tool RawContent was promoted into ordinary provider requests, making large results consume context and destabilize cacheable prefixes. Root cause: sampling, summaries, projection replay, and covered-prefix hashing shared the promoted RawContent representation instead of the bounded persisted Content. Fix: keep provider-visible tool results at 32KB, add session-scoped paged recovery through use_capability, and exactly migrate promoted-RawContent sidecars back to bounded hashes without changing session JSON or top-level tool schemas. Verification: focused agent tests, race tests, cache guard scenarios, boot/repolint tests, and DeepSeek live A/B cache trend checks. * Extract tool-result capability helpers Move the new marker and restricted-list helpers out of already-large agent files so the implementation stays within repository size budgets without changing behavior or repolint baselines. * Handle missing raw results by marker reference When a new-format truncated record no longer has RawContent, retain the original result_ref from its marker so explicit recovery returns the stable unrecoverable-result error instead of a misleading not-found response. * Modernize tool-result iteration Use slices.Backward and strings.FieldsSeq so the new capability code satisfies the repository's golangci modernize checks without changing selection or marker parsing behavior. * Fix provider projection isolation Problem: - Request normalization could mutate its provider-visible input copy and break active-turn and overflow progress decisions. - Pressure pruning could derive provider-visible content from local RawContent. Root cause: - ModelMessages has a zero-copy fast path, but request-only metadata cleanup assumed an isolated slice. - The pressure prune source preferred RawContent over bounded Content. Fix: - Detach the request message slice before request-only rewrites. - Prune only provider-visible Content or the legacy ProviderContent representation. - Add regressions for input immutability and RawContent pressure isolation. Verification: - go test ./... - go test -race ./internal/agent - ./scripts/cache-guard.sh - go vet ./... - go run ./tools/repolint * Harden tool-result migration isolation Problem: - promoted sidecars could retain full tool-result bodies after their hashes were migrated - restricted capability frontends could share a session reader across agents Root cause: - sidecar migration normalized only covered hashes - clone paths handled only bare UseCapabilityTool instances Fix: - normalize exact promoted projection bodies to canonical bounded Content and fail closed on ambiguous bodies - clone restricted frontends, resolvers, and allowlists for subagents and planners - add load, recovery-copy, duplicate-ID, schema-stability, and session-isolation regressions Verification: - go test ./internal/agent ./internal/boot -count=1 - go test -race ./internal/agent -count=1 - ./scripts/cache-guard.sh - go test ./... -count=1 - go vet ./... - go run ./tools/repolint * Satisfy capability clone lint Problem: - CI lint rejected the bool-map clone loop under the modernize ruleset Root cause: - the helper used a manual map assignment loop Fix: - copy immutable allowlist snapshots with maps.Copy Verification: - golangci-lint run --timeout=5m - go test ./internal/agent -run 'Test(RestrictedCapabilityFrontendCloneKeepsAgentSessionsIsolated|PlannerRestrictedCapabilityFrontendCloneKeepsExecutorSession|PlannerToolRegistryClonesUseCapability)' -count=1 - go vet ./internal/agent - go run ./tools/repolint * Fix path-bound tool-result session binding Problem: - explicit write_paths subagents exposed use_capability but could not read their own retained tool results Root cause: - pathBoundCapabilityProxy did not forward the session binder and cloneCapabilityFrontend did not rebuild that wrapper around an agent-owned frontend Fix: - forward session binding through the path-bound wrapper - deep-clone its inner unrestricted or restricted frontend before rebuilding the wrapper - cover parent/child session isolation and provider-visible schema stability Verification: - go test ./... - go test -race ./internal/agent - go vet ./... - golangci-lint run --timeout=5m - go run ./tools/repolint - ./scripts/cache-guard.sh