Merge branch 'codex/20260831-diagnose-agent-submit-f90e1b3f-diagnose-agent-submit-f90e1b3f'
This commit is contained in:
@@ -0,0 +1,83 @@
|
|||||||
|
# Task: Diagnose local Agent submission stall
|
||||||
|
|
||||||
|
## Identity
|
||||||
|
|
||||||
|
- Task ID: 20260831-diagnose-agent-submit-f90e1b3f
|
||||||
|
- Mode: Feature
|
||||||
|
- Branch: codex/20260831-diagnose-agent-submit-f90e1b3f-diagnose-agent-submit-f90e1b3f
|
||||||
|
- Worktree: /Users/inmanx/Documents/makelore-diagnose-agent-submit-f90e1b3f
|
||||||
|
- Base commit: 38f85f6b5e4dc4e2c5e5b9f8f4506554cfd578f5
|
||||||
|
- Owner: codex
|
||||||
|
- Status: Ready for Integration
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
|
||||||
|
- Diagnose the Makelore Code conversation shown with three settled
|
||||||
|
`处理失败` groups and one accepted message remaining at `正在提交…`.
|
||||||
|
- Correlate the screenshot timestamp with the live Electron/Main/Pi process
|
||||||
|
state, persisted Main logs, Renderer request reconciliation, and AI proxy
|
||||||
|
error classification.
|
||||||
|
- Make no product-source, dependency, runtime, account, or external-service
|
||||||
|
changes.
|
||||||
|
|
||||||
|
## Intent And Constraints
|
||||||
|
|
||||||
|
- Preserve the Main-owned Pi `0.84.2` boundary and do not replay an accepted
|
||||||
|
mutation while diagnosing it.
|
||||||
|
- Treat the separate development worktree and running Electron process as
|
||||||
|
read-only evidence.
|
||||||
|
- Distinguish expected background runtime sleep from an unexpected Agent
|
||||||
|
Server crash.
|
||||||
|
|
||||||
|
## Outcome
|
||||||
|
|
||||||
|
- Identified the immediate failure as upstream Token Point exhaustion. At
|
||||||
|
`2026-08-31T11:25:18Z`, `11:25:22Z`, `11:25:32Z`, and `11:25:59Z` (19:25
|
||||||
|
Asia/Shanghai), the Main-owned AI proxy reached
|
||||||
|
`https://token.nianxx.cn/v1/chat/completions` and received `403 Forbidden`
|
||||||
|
with code `token_point_balance_exhausted` and message `词元点数余额不足`.
|
||||||
|
- Correlated the first three responses with the three settled failure groups.
|
||||||
|
The final bubble had already received Host/Pi acceptance, so Renderer showed
|
||||||
|
`1 条消息已被本地 Agent 接收。`; the screenshot was taken before the fourth
|
||||||
|
provider failure terminal patch replaced the optimistic `正在提交…` state.
|
||||||
|
- Confirmed the later Agent Server disappearance was intentional
|
||||||
|
`background_sleep` after the app lost foreground programming activity, with
|
||||||
|
exit code 0 and `server.stopped`; no `server.invalidated` or unexpected crash
|
||||||
|
occurred in the incident window.
|
||||||
|
- Found a secondary UX classification gap: the quota helper recognizes
|
||||||
|
`token_balance_exhausted` and the proxy remaps quota only when upstream status
|
||||||
|
is 429, while the observed service contract used status 403, code
|
||||||
|
`token_point_balance_exhausted`, and Chinese `词元点数余额不足`. The response
|
||||||
|
therefore remained a generic provider failure and the collapsed timeline
|
||||||
|
exposed only `处理失败` instead of an actionable balance message.
|
||||||
|
- No product source or dependencies were changed.
|
||||||
|
|
||||||
|
## Verification
|
||||||
|
|
||||||
|
- Inspected the supplied screenshot at original resolution and matched its
|
||||||
|
19:25 conversation time to the persisted Main log.
|
||||||
|
- Read `/Users/inmanx/Library/Application Support/niancode/logs/niancode-2026-08-31.log`;
|
||||||
|
confirmed seven occurrences of the same balance-exhaustion contract during
|
||||||
|
the current day, including all four requests in the screenshot window.
|
||||||
|
- Verified Electron PID `98444`, Host API port `13210`, and Vite port `5173`
|
||||||
|
remained live while the Pi Agent Server later stopped through the expected
|
||||||
|
background lifecycle.
|
||||||
|
- Inspected `src/stores/coding-conversations.ts`,
|
||||||
|
`src/pages/Chat/CodingChatPanel.tsx`,
|
||||||
|
`src/pages/Chat/CodingConversationTimeline.tsx`,
|
||||||
|
`electron/api/routes/ai-proxy.ts`,
|
||||||
|
`shared/ai-gateway-error-kind.ts`, and the Pi runtime/projector path.
|
||||||
|
- No tests were run because this task was diagnosis-only and made no behavior
|
||||||
|
change.
|
||||||
|
|
||||||
|
## Follow-ups
|
||||||
|
|
||||||
|
- Restore sufficient Token Point balance before retrying the model request.
|
||||||
|
- If a product fix is requested, recognize the observed
|
||||||
|
`token_point_balance_exhausted` contract independently of its 403/429 status,
|
||||||
|
project a stable non-retryable quota error, show actionable Chinese copy, and
|
||||||
|
add focused proxy/projector/Renderer regressions.
|
||||||
|
|
||||||
|
## Promotion Candidates
|
||||||
|
|
||||||
|
- None recorded.
|
||||||
Reference in New Issue
Block a user