豆包的划词功能实现

32 天前
 jackple

mac 豆包的划词功能实现很牛 x, 估计是用 accessibility api? electron 做的程序它也能很精准获取到, 甚至是微信(我看微信用 appium 出来也就一坨), 那豆包是怎么做到的, 找 cluade/chatgpt...写了好多个版本都不能获取得到(用的是 vscode 的 debug 模式启动一个 electron 程序)

我去参考 https://github.com/openai-translator/openai-translator 发现它这一个模块的实现是依赖了作者自己写的 https://github.com/yetone/get-selected-text, 问题在于, 它可能会调用剪贴板, 而且性能很差, 一次执行要几百毫秒(执行过程中系统会卡住)

有这方面经验的大佬解惑一下吗?

2585 次点击
所在节点    程序员
16 条回复
zzlove
32 天前
我记得豆包的划词后,也是会先复制到剪贴板的
cryptovae
32 天前
https://github.com/pot-app/Selection
看下这个
原理基本都是一样的
musi
32 天前
其实 accessibility 有些 app 是获取不到的,electron 因为是 chromium 系有现成的方案,那些获取不到的一般都用剪切板做兜底。

另外,你让 AI 写就别让他写 electron 程序,你告诉他用 C++给你调 mac 的 api ,然后再让他把 c++打包成 node 的插件让 electron 去调用。我去年用 AI 写过 win/mac 的划词功能(并且我没有任何 c++的背景)
jackple
32 天前
@zzlove 我看现在是没有(装了监测工具去看)
jackple
32 天前
@cryptovae 我看看, 谢谢
jackple
32 天前
@musi 我是好奇为什么豆包没有剪贴板兜底(至少在我的机器上没用上剪贴板兜底)的情况下, 它能做的性能和准确度都很好, 还有就是微信也能获取到, 那哥们你的程序能获取到微信的 selection 么?
stone9527
32 天前
我 win 用豆包划词有时会卡住不动,遇到好几次了
lukeluke
32 天前
用 accessibility 的 AXUIElement 去获取其他应用的文本得把 sandbox 关了,但关了之后就没法上架了。我自己软件的划词功能也是依赖剪切板实现的。把剪切板原有的文字先保存下来,然后模拟键盘的拷贝按键,读取剪切板内容,再把原有的文字放回去。这一整套流程其实用时不多,基本上是同步的,可能剪切板监控软件感知不到?
jackple
32 天前
@lukeluke 也有可能是获取不到, 剪贴板工具是我自己写的, 原理是每隔一段时间获取, 😄
Danfi
32 天前
貌似是会有剪切板兜底的,像图书里有版权的书籍,选中翻译的话会有版权信息一起出来的
SakuraYuki
32 天前
不使用剪贴板的软件里,bob 的比较好用,绝大多数情况下都能获取内容,不过要额外装一个 helper
jackple
32 天前
@SakuraYuki 刚刚试了一下, 它的获取不准, 失败率有点高
SakuraYuki
32 天前
@jackple #12 请问是什么样的情形,我用 bob 基本没遇到过获取不到的情况
skiy
32 天前
豆包 chrome 扩展下架了。
感觉它太主动了,我一选择,它就跳框出来,有时我只想复制而已。不太好用。
jackple
32 天前
@SakuraYuki #13 我再试又好像不会了
jackple
32 天前
@SakuraYuki #13 应该我的快捷键冲突了导致

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1155176

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX