感觉这里namespace杀鸡用牛刀了呀,设置一个http_proxy环境变量就可以了,所有子进程也能继承这个环境变量,proxy-ns跟设env比起来,优点在哪里呢?
比如golang这种静态编译的, yay这些包管理, git ssh/https 干扰太大, 等等。
我一开始也是觉得杀鸡用牛刀, 但是 namespace 用起来是真的香, 我用了 proxy-ns 以后, 本地配置好链接 vps 的 socks5 以后, 整个系统只有三种代理:
- 浏览器基于规则的代理
- Emacs默认启动 proxy-ns , 这样我把所有需要设置代理的地方全部都删除了
- 终端偶尔要用的时候, 就加一个 proxy-ns 前缀
这个牛刀节省了我大量配置各种Emacs插件代理的时间和保证所有语言和工具都可以直接走代理, 用过牛刀就再也不想杀鸡了, 哈哈哈哈。
tun 不香么
In chat buffer with following content:
------ User ------
what is reverse function of encode-codi
Exception in thread Thread-4 (chat_ask):
Traceback (most recent call last):
File "/usr/lib/python3.10/threading.py", line 1016, in _bootstrap_inner
self.run()
File "/usr/lib/python3.10/threading.py", line 953, in run
self._target(*self._args, **self._kwargs)
File "/path/to/manateelazycat/mind-wave/mind_wave.py", line 140, in chat_ask
content = self.chat_parse_content(buffer_content)
File "/path/to/manateelazycat/mind-wave/mind_wave.py", line 156, in chat_parse_content
text = base64.b64decode(buffer_content).decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd7 in position 57: invalid continuation byte
(let ((s "------ User ------\nwhat is reverse function of encode-codi"))
(base64-encode-string
(encode-coding-string s 'utf-8)))
;; "LS0tLS0tIFVzZXIgLS0tLS0tCndoYXQgaXMgcmV2ZXJzZSBmdW5jdGlvbiBvZiBlbmNvZGUtY29k\naQ=="
emacs base64-encode-string 为什么有换行符"\n"
出现? 然后 python b64decode 失败了? 然而问题并不在这
> base64.b64decode('Y\nW\nJj\n')
b'abc'
> base64.b64decode('Y\nW\nJj\n') == base64.b64decode(b'YWJj')
True
> '\12' == '\n'
True
when mind-wave error, show explicit complain instead of silently continue.
sometimes it work, sometimes not work, I thought it was network issue until I come across buffer mind-wave content:
Add logging here:
def chat_parse_content(self, buffer_content):
with open("/tmp/buffer_content.txt", "a") as f:
print("repr:", repr(buffer_content), file=f)
text = base64.b64decode(buffer_content).decode("utf-8")
repr: 'LS0tLS0tIFVzZXIgLS0tLS0tCndoYXQgaXMgcmV2ZXJzZSBmdW5jdGlvbiBvZiBlbmNvZGUtY29k\\12aQ=='
发现 emacs 换行符 “\n” 变成 python \\12
而不是 \12
, 多了一个 \
, 所以 python b64decode 失败
这个真的香吗,有没有可能,有些人不知道代理是啥(因为不需要),都是直连,本站大部分人(包括我),应该都不知道可直连想去的地方是什么感觉
果然这种好用的东西,在 macOS 都是不存在的,从网络层面把代理配置好,可太省心了,不用操心应用怎么配置代理,是否接受 http proxy 环境变量之类的
把代理塞到python里就能用了,刚开始也不懂为啥连不上,走的全局代理
修改 mind_wave.py 文件
import os
os.environ["http_proxy"]="http://127.0.0.1:1080"
os.environ["https_proxy"]="http://127.0.0.1:1080"
这种方式可能比较粗暴
给重现方式吧
可以发个补丁
我建议不要改代码了,可以在readme写两句 如果是海外用户就是直连了 如果是国内用户会用肯定看的懂,不会用代理也没办法的
- mind-wave-adjust-text
- mind-wave-translate-to-english
- mind-wave-proofreading-doc
这三个命令改成 stream 模式了, 命令执行后, 马上就可以在现在的buffer中输出内容, 易用性更好一点。
新增 mind-wave-generate-code 命令, 根据用户提示自动把代码插入到Emacs正在编辑的文件内, 自然语言抄代码, 哈哈哈哈。
试了两个key,都报这个错,不知道各位遇到过没
[Mind-Wave] Traceback (most recent call last):
File "/Users/ning/.emacs.d/.local/straight/build-30.0.50/mind-wave/mind_wave.py", line 36, in wrapper
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/Users/ning/.emacs.d/.local/straight/build-30.0.50/mind-wave/mind_wave.py", line 128, in send_stream_request
response = openai.ChatCompletion.create(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/lib/python3.11/site-packages/openai/api_resources/chat_completion.py", line 25, in create
return super().create(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/lib/python3.11/site-packages/openai/api_resources/abstract/engine_api_resource.py", line 153, in create
response, _, api_key = requestor.request(
^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/lib/python3.11/site-packages/openai/api_requestor.py", line 226, in request
resp, got_stream = self._interpret_response(result, stream)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/lib/python3.11/site-packages/openai/api_requestor.py", line 620, in _interpret_response
self._interpret_response_line(
File "/opt/homebrew/lib/python3.11/site-packages/openai/api_requestor.py", line 683, in _interpret_response_line
raise self.handle_error_response(
openai.error.AuthenticationError: Incorrect API key provided: /Users/n************************************.txt. You can find your API key at https://platform.openai.com/account/api-keys.
user-error: Minibuffer is inactive
我的没问题。我 API 文件长这样, 以 sk-
开头:
或者去官网重新生成一个新 api token 试试?
这个就是你的key不对,key是买的,还是网上抄的?
官网生成的,试了两个
有费用余额吗?
我把存放key的文件放到/tmp下面可以了,可能路径的问题,我再试几个地方
为啥不放在readme要求的路径?
放在.doom.d下面似乎有点问题,随他去了。我定制放在.emacs.d/.local/mind-wave下面了