Repository navigation
run_code 的 code 参数按 JS 转义处理,写正则/路径/heredoc 经常报错,建议描述里加个提示 #3925
Jokerautowrite
started this conversation in
Ideas
Replies: 1 comment
|
补充一条实测修正:这类报错其实来自类型剥离层,不是 worker 编译层。 定位在 packages/ptc-runtime/ptc-runtime-node/src/index.ts 中,stripTypeScriptTypes 失败走的是外层 catch,
所以只在 worker 侧加提示收不到效果 —— 提示要打在剥离失败的出口。 本机实测在 parsing 分支的失败消息后追加一句提示后,同一段程序的报错从 变成 模型看到这句会立刻转向检查转义,而不是反复改逻辑。 建议的两处改动
另:C 侧同样受益于第 1 条 —— 描述是模型唯一能在犯错前看到的提示位。 CONTRIBUTING 说明当前暂不接受外部 PR,故把实测结论与建议放在这里,供维护者取舍。 |
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.
Uh oh!
There was an error while loading. Please reload this page.
最近用
run_code写东西经常踩一个坑,来反馈一下。run_code的code参数是当成 JS/TS 源码字符串处理的:JSON 传过去之后,worker 那边用new AsyncFunction("'use strict';\n" + code)来编译(在@deepseek-ai/dsh-code-runtime-worker-thread/lib/worker.cjs里)。所以code里写的字符串字面量/模板字符串,全都按 JS 的转义规则来,这就坑了——只要在代码里嵌了带反斜杠或${}的外部内容(正则、路径、heredoc、Python/Shell 片段),很容易炸。具体症状我碰到过好几种:
\s、\d这种,严格模式下直接报SyntaxError: Invalid escape sequence/Expected unicode escape;\n、\t,被悄悄变成真正的换行/制表符,嵌入的源码就坏了;\\变成单个\,内容被吞一半;${PORT},被 JS 先插值了,根本没到 shell。最难受的是报错特别隐晦(比如
Expected unicode escape),模型拿到这个错误根本想不到是转义问题,只能反复试。我试了String.raw、用String.fromCharCode(92)拼反斜杠、先写个引导脚本再执行……最后才搞明白是这么回事。建议:
run_code的code参数描述里(TYPESCRIPT_FLAVOR/PYTHON_FLAVOR的codeDescription)加一句提示,告诉使用者code是按源码编译的、字符串里的转义是宿主语言的规则(\s/\d严格模式下非法、\n会变换行、${}会插值),写带反斜杠的内容尽量用tools.write。另外 worker 编译报错时如果能顺带提示一句"可能是字符串转义问题"就更好了,不然真的一头雾水。用的版本:
@deepseek-ai/dshv0.1.0-rc.8,Ubuntu 24.04。如果觉得这个建议 OK,我可以帮忙提个 PR 改描述。
All reactions