Skip to content

dsh-codearts 1.1.3

Choose a tag to compare

@elegant01 elegant01 released this 26 Oct 07:22
· 7 commits to main since this release

[1.1.3] - 2026-10-26

修复

  • 与 billion-context 同用时账号被永久禁用,报「当前没有可用账号」(issue #1):
    billion-context 拦下 SDK-HMAC-SHA256 签名请求做压缩、找不到重签凭据时在本地回 403
    (signed_request_requires_resign),插件把它当凭据失效,账号被禁用且没有任何恢复
    路径。现在按 body 里的拒签标记识别这类本地拦截:不再禁用账号,直接回 400(宿主不会
    再拿它重试 5 次),报错里给出 resign.passthrough 的配置方法。带标记的 401/403 之外
    的真凭据失效行为不变。
  • 重新登录救不回被禁用的账号:disabled 以前只能靠重启清掉,pool.sync() 对同一
    userId 保留运行时状态。现在登录成功(OAuth 与手工贴 token 两条路)会调用池的
    revive(),清掉该账号的禁用/冷却/错误计数。
  • 「没有可用账号」不再一概而论:一个账号都选不出来时,报错分清原因——全禁用(401,
    附各号最后错误并提示重新登录)、全在冷却(429,附剩余秒数)、本地并发槽位全满
    (429,说明每账号 2 个在飞上限)。
  • 已登录却报「积分不可用:statistics HTTP 0 Failed to parse URL from [object
    Request]」(模型清单同时变空,issue #2)
    :出网原本是 fetch(new Request(url, ...), {signal})
    ——邻居插件(如 IP 池出口路由)会把 globalThis.fetch 换成它自己那份 undici 的
    fetch,而 globalThis.Request 还是另一份实例。undici 用 instanceof 认自己的
    Request,认不出就当 URL 字符串处理,于是每条请求在出网之前抛错(HTTP 0)。现在
    Request 只当签名的载体,出网统一走 dispatch():交「字符串 URL + 已展开的普通
    头 + 原字节请求体」,7 处调用点一并收口。
  • 选中 CodeArts 模型后每条消息都「本轮运行失败:Cannot read properties of undefined
    (reading 'length')」(issue #2)
    :@earendil-works/pi-ai 过去只写在 peerDependencies
    (>=0.84.2 <2.0.0),区间不会被安装流程强制满足;插件自己没有 node_modules 时
    import 直接落到 profile 顶层被别的插件 hoist 上来的旧版。旧版的 estimateMessageTokens
    没有 role:"system" 分支,而宿主(dsh-llm-pi-ai 0.2.1-rc.2 起)会把系统提示折叠成
    一条 content 为字符串的 system 消息交给 provider —— 字符串被按字符遍历,读到
    block.name.length 就崩,且崩在出网之前。现在 pi-ai 移进 dependencies(^1.3.0,
    自带一份),并在启动时探测这份能不能估折叠后的 system 消息:不满足就在日志和积分
    卡片上明说「pi-ai 不兼容,需要 >= 1.3.0」,不再让每条消息各自崩在一个看不懂的
    TypeError 上。