# 1. 先杀掉所有旧进程
taskkill /F /IM service.exe 2>nul
taskkill /F /IM promptkey.exe 2>nul
# 2. 重新构建 Service
cd d:\PROJECTALL\Workflow\PromptKey
cargo build --release -p service
# 3. 复制到 sidecar(供 GUI 启动用)
cp target/release/service.exe sidecar/service-x86_64-pc-windows-msvc.exe
# 4. 构建并运行 GUI
cargo run --release# Terminal 1: 单独运行 Service(可以看到详细日志)
cd d:\PROJECTALL\Workflow\PromptKey
$env:RUST_LOG="info"
./target/release/service.exe
# Terminal 2: 运行 GUI(注释掉 src/main.rs 中的 ServiceState 启动代码)
cargo run --release运行 Service 后查看日志开头,应该看到:
[INFO] Configuration loaded successfully
[WARN] ⚠️ Configured hotkey 'Ctrl+Shift+H' conflicts with Selector Panel. Resetting...
如果看到这个警告,说明配置自愈生效了!
运行 GUI 后查看日志,应该看到:
[IPC] Starting listener on \\.\pipe\promptkey_selector
按下 Ctrl+Shift+H,Service 日志应该显示:
[INFO] Selector hotkey detected (ID=3), sending IPC to GUI
[INFO] IPC: Sent SHOW_SELECTOR to GUI via \\.\pipe\promptkey_selector
GUI 日志应该显示:
[IPC] Received: SHOW_SELECTOR
[IPC] Selector window shown via IPC
症状:日志显示 Injection hotkey detected (ID=1 or 2)
原因:%APPDATA%\PromptKey\config.yaml 中 hotkey: Ctrl+Shift+H
解决:
# 删除配置文件,强制重新生成
del "%APPDATA%\PromptKey\config.yaml"症状:重启后行为没变化 检查:
tasklist | findstr service解决:
taskkill /F /IM service.exe症状:日志有 "Failed to send selector IPC" 或 "Failed to open named pipe"
原因:GUI 的 IPC Listener 未启动或崩溃
检查:GUI 日志中搜索 "[IPC]"
解决:确认 src/ipc_listener.rs 存在并在 src/main.rs 中正确注册
✅ 已完成:
- IPC Listener 已实现(
src/ipc_listener.rs) - 配置自愈已添加(
service/src/main.rs) - Service 二进制已更新(09:08 构建)
- Sidecar 已更新
⏳ 待验证:
- 确认新 Service 进程启动
- 确认 IPC 通道连接成功
- 确认
Ctrl+Shift+H触发 Selector
正确配置后:
- Ctrl+Alt+Space → 直接粘贴当前选中的 Prompt(注入模式)
- Ctrl+Shift+H → 弹出选择面板(新功能)
如果需要更详细的调试日志:
# Service
$env:RUST_LOG="debug"
./target/release/service.exe
# GUI (在 .cargo/config.toml 或环境变量)
$env:RUST_LOG="debug"
cargo run --release最后提醒:每次修改代码后,必须:
- 重新
cargo build --release -p service - 复制到
sidecar/ - 杀掉旧
service.exe进程 - 重新运行
cargo run --release