Plock
使用一个 LLM(或其他任何可以流式传输到 stdout 的东西)从任何可以输入的地方直接操作。实时输出。
编写提示,选择它,并(默认情况下)按下 Cmd+Shift+.
。它将以流式传输的方式替换你的提示。
另外!你可以在编写/选择提示之前先将一些内容放入剪贴板(例如复制一些文本),然后按 Cmd+Shift+/
(默认情况下),它将使用复制的文本作为上下文回答你的提示。
对于 Linux,使用 Ctrl
代替 Cmd
。
默认情况下100% 本地。(如果你想使用 API 或其他东西,可以在 settings.json
中指定任何你想调用的 shell 脚本)
在设置中展示一个 settings.json
示例
🚨 寻求贡献 / 帮助!🚨
我希望保持这个项目的活力并持续成长,但无法独自完成。
如果你对贡献有任何兴趣,请随时联系我,开始讨论,开放 PR,查看问题列表,查看下方的路线图等。
有什么地方不正常工作吗?没有遥测或跟踪功能,所以我不会知道!请记录问题或自己尝试修复并提交一个 PR!有功能想法吗?记录问题!
触发器概念和新灵活系统的演示
使用 GPT-3.5 和 GPT-4 的演示
如果你打算使用远程 API,请考虑环境变量用于你的 API 密钥... 确保它们存在于你启动的地方,或者直接嵌入它们(只是不要将代码推送到任何地方)
##(原始)使用 Ollama 的演示
(在视频中我提到了我正在进行的另一个项目 rem)
入门
安装 ollama 并确保运行 ollama pull openhermes2.5-mistral
或在设置中用其他东西替换它。
启动 "plock"
快捷键:
Ctrl / Cmd + Shift + .
: 用模型的输出替换选择的文本。
Ctrl / Cmd + Shift + /
: 将剪贴板上的内容作为 "上下文" 使用,并用模型的输出替换选择的文本。
(这些可以在 settings.json
中自定义)
Escape
: 停止任何流式输出
Mac 将请求访问键盘辅助功能。
Linux(未测试),可能需要 X11 库来进行剪贴板操作和使用 enigo 进行键模拟。有用的说明
Windows(未测试),你需要用其他东西替换 Ollama,因为它还不支持 Windows。
[设置]
有一个 settings.json
文件,你可以编辑它来更改快捷键、模型、提示,是否使用 shell 脚本及其内容,以及其他设置。
更新后,点击托盘图标并选择 "加载设置" 或重启它。
在任何时候你都可以点击托盘图标,它会列出设置的位置。值得一提的是:
在 mac 上,它位于 ~/Library/Application Support/today.jason.plock/settings.json
。
在 linux 上,我认为它在 ~/$XDG_DATA_HOME/today.jason.plock/settings.json
。
Windows 上,我认为它在 ~\AppData\Local\today.jason.plock\settings.json
但点击图标是最好的方法。
如有错误请指出。
使用设置
看看快捷键。一个“触发器”可以通过快捷键启动。这指向一个进程(按 0-索引)和一个提示(按 0-索引)到在 processes 和 prompts 字段中定义的列表。
一个进程可以是 “ollama” 或(mac 上的 shell)命令。你可以用它来调用你的脚本。
提示可以使用两个内置变量之一 $CLIPBOARD 和 $SELECTION,或使用 set_env_var 触发器定义的任何其他变量。
next_steps 定义了输出的处理方式,可以将其写入屏幕(以流式传输或一次性写入的方式),保存到变量,和/或触发另一个触发器。
将来我希望能更轻松地灵活触发(cron,推送),无论何时何地/如何输出,轻松地将它们链接在一起。
非常欢迎反馈
显示示例
{
"environment": {
"PERPLEXITY_API": "",
"OLLAMA_MODEL": "openhermes2.5-mistral",
"OPENAI_API": ""
},
"processes": [
{
"name": "使用 GPT",
"command": [
"bash",
"/Users/jason/workspace/plock/scripts/gpt.sh"
]
},
{
"name": "直接作为脚本执行文本",
"command": []
},
{
"name": "使用 perplexity",
"command": [
"bash",
"/Users/jason/workspace/plock/scripts/p.sh"
]
},
{
"name": "使用 Dall-E",
"command": [
"bash",
"/Users/jason/workspace/plock/scripts/dalle.sh"
]
},
"ollama"
],
"prompts": [
{
"name": "默认基本",
"prompt": "$SELECTION"
},
{
"name": "带上下文的默认",
"prompt": "我将要求你做一些事情。下面是一些额外的上下文来帮助你完成。 --------- $CLIPBOARD --------- 鉴于上述上下文,请,$SELECTION。不要输出其他任何内容。"
},
{
"name": "步骤",
"prompt": "$STEP"
},
{
"name": "说 gpt",
"prompt": "说 \"$GPT\""
}
],
"triggers": [
{
"trigger_with_shortcut": "Command+Shift+,",
"process": 1,
"prompt": 0,
"next_steps": [
{
"store_as_env_var": "STEP"
},
{
"trigger": 4
}
],
"selection_action": null
},
{
"trigger_with_shortcut": "Command+Shift+.",
"process": 0,
"prompt": 0,
"next_steps": [
"stream_text_to_screen"
],
"selection_action": "newline"
},
{
"trigger_with_shortcut": "Command+Shift+/",
"process": 1,
"prompt": 0,
"next_steps": [
"write_final_text_to_screen"
],
"selection_action": "newline"
},
{
"trigger_with_shortcut": "Command+Shift+'",
"process": 3,
"prompt": 0,
"next_steps": [
"write_image_to_screen"
],
"selection_action": null
},
{
"trigger_with_shortcut": null,
"process": 0,
"prompt": 2,
"next_steps": [
"stream_text_to_screen",
{
"store_as_env_var": "GPT"
},
{
"trigger": 5
}
],
"selection_action": null
},
{
"trigger_with_shortcut": null,
"process": 0,
"prompt": 3,
"next_steps": [],
"selection_action": null
}
]
}
构建 Plock
如果你不想盲目信任二进制文件(你不应该),以下是如何自己构建它的方法!
先决条件
- Node.js (v14 或更高版本)
- Rust (v1.41 或更高版本)
- NPM (最新版本)
安装步骤
Node.js
从:https://nodejs.org/ 下载
Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
Bun NPM
什么??为什么? - 好吧,windows 不支持 bun
在 github actions afaict。所以,我在使用 npm。
项目设置
git clone <repo_url>
cd path/to/project
npm install
npm run tauri dev
构建
npm run tauri build
靈感 / 另一個偉大的項目
另一个演示
另一个演示,我使用 perplexity shell script 超快速地生成答案。 没有相关,只是回复一个帖子 lol
https://github.com/jasonjmcghee/plock/assets/1522149/6166af73-545f-4a8e-ad46-ea8aacd84969
秘密
好奇的小伙伴可能会想知道 ocr
功能是什么。我尝试截取屏幕截图,
运行 OCR,并使用其作为上下文,而不是手动复制文本。长话短说,
rusty-tesseract 让我 非常 失望,这有点尴尬,因为它是 xrem 的核心。
如果有人想弄清楚这点... 这将非常酷,尤其是与多模态模型一起使用。