:stream t 就会报错
这个我一直没复现出来,不管是 win/linux 还是 mac 上。能不能提供更详细的调试信息,比如版本、系统、配置等?
另外,可以设定 (setq gt-debug-p t)
然后执行一下翻译,切换到 *gt-log*
buffer 可以看到更多信息。
:stream t 就会报错
这个我一直没复现出来,不管是 win/linux 还是 mac 上。能不能提供更详细的调试信息,比如版本、系统、配置等?
另外,可以设定 (setq gt-debug-p t)
然后执行一下翻译,切换到 *gt-log*
buffer 可以看到更多信息。
这是个 bug,已经修复。
8910.80 gt-start (gt-translator)
8910.80 gt-init (gt-translator)
8910.80 gt-reset (gt-translator)
8910.80 gt-take (gt-taker gt-translator)
8910.80 [taker] take text by: word
8910.81 [taker] pick from text by: paragraph
8910.81 [translator] version: 1751818910.804323
target: (en zh)
bounds: (base.org (40383 . 40389))
text: (engine)
taker: gt-taker, engines: (model:deepseek-chat), renderer: gt-buffer-render
8910.81 [1] add task task-158: (gt-chatgpt-engine/gt-buffer-render)
8910.81 [translator] <1> all tasks added
8910.81 gt-init (gt-buffer-render gt-translator)
8910.97 [translator] <2> gt-buffer-render prepared
8910.97 gt-translate (gt-chatgpt-engine task-158)
8910.97 [next] task-158: gt-chatgpt-engine prepare to translate
8910.97 [pdd:around] make request...
8910.97 [req] initialize-instance...
8910.97 [req] .pdd-transform-req-init
8910.97 [req] .pdd-transform-req-done
8910.97 [req] .pdd-transform-req-peek
8910.97 [req] .pdd-transform-req-fail
8910.97 [req] .pdd-transform-req-headers
8910.97 [req] .pdd-transform-req-cookies
8910.97 [req] .pdd-transform-req-data
8910.97 [req] .pdd-transform-req-proxy
8910.97 [req] .pdd-transform-req-cacher
8910.97 [req] .pdd-transform-req-others
8910.97 [req] .pdd-transform-req-verbose
8910.97 [pdd:around] dispatch to #s(pdd-url-backend eieio--unbound eieio--unbound)...
8910.98 [url-backend] POST https://api.deepseek.com/chat/completions
8910.98 [url-backend] HEADER: (("Content-Type" . "application/json") ("Authorization" . "Bearer sk-xxxxxxxxxxxxxx"))
8910.98 [url-backend] DATA: {"model":"deepseek-chat","temperature":0.7,"stream":true,"messages":[{"role":"system","content":"You are a translation assistant. You will returning the result with emacs org-mode format."},{"role":"user","content":"������������������������ Chinese ������������������������(������������������������������������������������������������������������������������������2��������������������������������������������������������������������������������������� 3 ������������������������������������������������)������ org-mode ���������������������: engine"}]}
8910.98 [url-backend] BINARY: t
8910.98 [url-backend] Proxy: nil
8910.98 [url-backend] User Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36
8910.98 [url-backend] MIME Encoding: identity
8914.32 gt-task-fail (task-158)
8914.32 [translator] <3> all result parsed
8914.32 gt-output (gt-buffer-render gt-translator) 3
8914.32 [next] task-158: [----- error -----] (wrong-type-argument char-or-string-p nil)
backtrace()
gt-task-fail(#<gt-task gt-task-5861a8ec> (wrong-type-argument char-or-string-p nil))
#f(compiled-function (r) #<bytecode -0x4ae81e1f4b7d9f9>)((wrong-type-argument char-or-string-p nil))
apply(#f(compiled-function (r) #<bytecode -0x4ae81e1f4b7d9f9>) (wrong-type-argument char-or-string-p nil))
pdd-funcall(#f(compiled-function (r) #<bytecode -0x4ae81e1f4b7d9f9>) ((wrong-type-argument char-or-string-p nil)))
pdd-task--execute([pdd-task rejected nil ((wrong-type-argument char-or-string-p nil)) nil nil t nil] (identity #f(compiled-function (r) #<bytecode -0x4ae81e1f4b7d9f9>) [pdd-task pending nil nil nil nil nil nil] ((default-directory . "/Users/smartepsh/.emacs.d/configs/") (pdd-debug) (pdd-log-redirect) (pdd-base-url) (pdd-sync) (pdd-user-agent . "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36") (pdd-proxy) (pdd-timeout . 30) (pdd-max-retry . 1) (pdd-verbose) (pdd-active-cookie-jar) (pdd-active-cacher) (pdd-cache-ttl . 3) (pdd-cache-key) (pdd-cache-store . pdd-shared-request-storage) (pdd-active-queue) (pdd-default-error-handler . pdd--default-error-handler) (pdd-headers) (pdd-data) (pdd-peek) (pdd-done) (pdd-fail . t) (pdd-fine))))
#f(compiled-function () #<bytecode 0x151f69007ab2defa>)()
apply(#f(compiled-function () #<bytecode 0x151f69007ab2defa>) nil)
timer-event-handler([t 26730 41634 319195 nil #f(compiled-function () #<bytecode 0x151f69007ab2defa>) nil nil 0 nil])
8923.08 [url-backend] URL-CALLBACK! flag: peek
8923.09 [url-backend] skip done (aborted or timeout).
版本:20250630.1545 系统版本:Sequoia 15.5 配置:
(gt-translator
:taker (gt-taker :langs '(en zh) :text 'word :then 'private/add-word-to-eudic)
:engines (list
(gt-chatgpt-engine
:key (getenv "COPILOT_API_KEY")
:host "https://api.githubcopilot.com"
:path "/chat/completions"
:model "gpt-4o"
:temperature 0.7
:prompt "Explain word {{text}} and give tenses, parts of speech changes.")
:render (gt-buffer-render :mode 'org-mode))
不好意思,才有时间回复。以上是我的配置和 *gt-log*
中的数据,不要在意 log 是 deepseek 而配置是 copilot ,二者我都在用,同样的配置,同样的错误。
我提交了一个更新,麻烦测一下能不能解决你的问题。
如果解决不了,打开调试 (M-x toggle-debug-on-error
),然后执行下翻译看看有没有弹出错误栈。
(我换了几台电脑都没复现问题。好奇怪。)
版本:20250710.241
toggle-debug-on-error
无事发生。
*gt-log*
如下(和上次有区别)
8651.13 gt-start (gt-translator)
8651.13 gt-init (gt-translator)
8651.13 gt-reset (gt-translator)
8651.13 gt-take (gt-taker gt-translator)
8651.13 [taker] take text by: word
8651.13 [taker] pick from text by: paragraph
8651.13 [translator] version: 1752118651.133269
target: (en zh)
bounds: (base.org (40585 . 40592))
text: (Longman)
taker: gt-taker, engines: (model:gpt-4o), renderer: gt-buffer-render
8651.13 [1] add task task-79: (gt-chatgpt-engine/gt-buffer-render)
8651.13 [translator] <1> all tasks added
8651.13 gt-init (gt-buffer-render gt-translator)
8651.28 [translator] <2> gt-buffer-render prepared
8651.28 gt-translate (gt-chatgpt-engine task-79)
8651.28 [next] task-79: gt-chatgpt-engine prepare to translate
8651.28 [pdd:around] make request...
8651.28 [req] initialize-instance...
8651.28 [req] .pdd-transform-req-init
8651.28 [req] .pdd-transform-req-done
8651.28 [req] .pdd-transform-req-peek
8651.28 [req] .pdd-transform-req-fail
8651.28 [req] .pdd-transform-req-headers
8651.28 [req] .pdd-transform-req-cookies
8651.28 [req] .pdd-transform-req-data
8651.28 [req] .pdd-transform-req-proxy
8651.28 [req] .pdd-transform-req-cacher
8651.28 [req] .pdd-transform-req-others
8651.28 [req] .pdd-transform-req-verbose
8651.28 [pdd:around] dispatch to #s(pdd-url-backend eieio--unbound eieio--unbound)...
8651.28 [url-backend] POST https://api.githubcopilot.com/chat/completions
8651.28 [url-backend] HEADER: (("Content-Type" . "application/json") ("Authorization" . "Bearer ghu_xxxxxxxxxxxxxxxxxxxxxxx"))
8651.28 [url-backend] DATA: {"model":"gpt-4o","temperature":0.7,"stream":true,"messages":[{"role":"system","content":"You are a translation assistant. You will returning the result with emacs org-mode format."},{"role":"user","content":"Explain word Longman and give tenses, parts of speech changes."}]}
8651.28 [url-backend] BINARY: t
8651.28 [url-backend] Proxy: nil
8651.28 [url-backend] User Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36
8651.28 [url-backend] MIME Encoding: identity
8651.81 gt-task-fail (task-79)
8651.81 [translator] <3> all result parsed
8651.81 gt-output (gt-buffer-render gt-translator) 3
8651.81 [next] task-79: [----- error -----] (wrong-type-argument char-or-string-p nil)
backtrace()
gt-task-fail(#<gt-task gt-task-4516a475> (wrong-type-argument char-or-string-p nil))
#f(compiled-function (r) #<bytecode 0x2415bd5a357ed30>)((wrong-type-argument char-or-string-p nil))
apply(#f(compiled-function (r) #<bytecode 0x2415bd5a357ed30>) (wrong-type-argument char-or-string-p nil))
pdd-funcall(#f(compiled-function (r) #<bytecode 0x2415bd5a357ed30>) ((wrong-type-argument char-or-string-p nil)))
pdd-task--execute([pdd-task rejected nil ((wrong-type-argument char-or-string-p nil)) nil nil t nil] (identity #f(compiled-function (r) #<bytecode 0x2415bd5a357ed30>) [pdd-task pending nil nil nil nil nil nil] ((default-directory . "/Users/smartepsh/.emacs.d/configs/") (pdd-debug) (pdd-log-redirect) (pdd-base-url) (pdd-sync) (pdd-user-agent . "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36") (pdd-proxy) (pdd-timeout . 30) (pdd-max-retry . 1) (pdd-verbose) (pdd-active-cookie-jar) (pdd-active-cacher) (pdd-cache-ttl . 3) (pdd-cache-key) (pdd-cache-store . pdd-shared-request-storage) (pdd-active-queue) (pdd-default-error-handler . pdd--default-error-handler) (pdd-headers) (pdd-data) (pdd-peek) (pdd-done) (pdd-fail . t) (pdd-fine))))
#f(compiled-function () #<bytecode 0x1b9a581915bee592>)()
apply(#f(compiled-function () #<bytecode 0x1b9a581915bee592>) nil)
timer-event-handler([t 26735 13691 813325 nil #f(compiled-function () #<bytecode 0x1b9a581915bee592>) nil nil 0 nil])
问题已修正。
大意了,问题发生在 byte-compiled 的情况下。等 MELPA 更新后同步 (pdd),或临时将字节码文件 gt-engine-chatgpt.elc 删除即可。
已测试,ok 了!