Repository navigation
Replies: 1 comment
|
神了,dsh怎么还能写这种东西? |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
环境
@deepseek-ai/dsh0.2.2-rc.1(npm 上最新也是这个版本)@deepseek-ai/dsh-session-reference0.2.2-rc.1症状
用户消息里只要出现形如
dsh-session:1601的字样,整轮对话直接失败,正文是两半拼起来的:这不是两个错误,是一个异常的两层:
invalidUri()建的是new SessionReferenceError(message, code, { cause }),UI 把error.message和error.cause.message连着显示了。复现(不需要任何本地改动)
同样会炸的还有(都是真实文本,不是构造的):
而踩雷的
1601以1开头、只有 4 字符。一个长度下限 + 首字符判断就能挡掉绝大多数误报, 连decode都不用调。建议的修法(按次序,任一条都能止血)
① 裸文本匹配加 shape 前置判断(最便宜的止血)
② 裸文本解码失败 → 原样放过,不要抛
判据:
@[…]()是用户的明确意图,写坏了要让他看见;裸文本只是碰巧匹配, 按「不是引用」处理才对。③(可选)整轮不该因为一条引用失败 即使
prepare()真的失败,也建议降级成「这条引用失效 + 一条警告」, 而不是turn/end reason.kind = 'error'。我本地怎么绕过去的(供参考,不影响上面的建议)
只做了 ②(裸文本 try/catch 放过、显式 mention 仍 rethrow),打在
lib/index.js的parseSessionReferenceText上。验过:@[x](dsh-session:1601)仍抛错 ✅(没把真错误一起吞)encode/decode往返、format/parse往返没坏 ✅副作用:真想把坏 URI 裸粘进正文做引用时,会静默失效(不报错也不引用)。 显式
@[label](uri)那条路仍然报错,所以正确用法不受影响。一句话
只要对话里有人写
dsh-session:加几个字母数字,这一轮就废了 —— 而「复述这个报错」正好会触发它,所以这个 bug 会自己扩散。All reactions