用一個搜尋框,完成整段開發工作流。
開應用程式、找檔案、查命令、執行工具,甚至用 AI 解決問題。
全部都在同一個鍵盤入口完成。
如果你熟悉 Raycast 或 Alfred,Keynova 提供相似的鍵盤入口感,但更專注於開發者的本機工作流。
- 一次搜尋所有內容:同時尋找應用程式、檔案、資料夾、工作區、命令、歷史與筆記。
- 不離開鍵盤完成操作:從搜尋、預覽、開啟,到重新命名、移動或下一步建議都留在同一個介面。
- 直接使用開發工具:輸入
/叫出計算、Base64、色碼、Cron、Hash、UUID、JWT 等常用工具。 - 需要時才使用 AI:解釋錯誤、摘要文件、產生 shell command,或根據近期操作建議下一步。
直接輸入即可搜尋;使用 / 進入命令,或用 > 開啟終端機。
- 需要頻繁切換應用程式、檔案、工作區與 terminal 的開發者。
- 偏好鍵盤操作,希望減少滑鼠與視窗切換的技術工作者。
- 想使用 AI 輔助工作,但不希望工作流被聊天介面取代的使用者。
左:統一搜尋 · 右:開發者命令(點擊圖片查看原尺寸)
左:Inline AI · 右:下一步建議(點擊圖片查看原尺寸)
1. 按下 Ctrl+K
2. 貼上錯誤訊息,或輸入 explain <錯誤訊息>
3. 閱讀原因與修復建議
4. 複製 AI 建議的 command
5. 輸入 > 開啟本機終端機
6. 確認內容後,由你親自執行
AI 命令卡只提供複製,不會自動執行,也不會在背景連續操作工具。
1. 按下 Ctrl+K
2. 輸入檔名或工作區關鍵字
3. 按 Shift+Enter 預覽,或按 Enter 開啟
4. 按 Tab 查看次要操作
5. 選擇 rename、move、delete 或 copy path
6. 在破壞性操作前確認
Ctrl+K → /cal 5 km to m
Ctrl+K → /b64dec aGVsbG8=
Ctrl+K → /cron "0 */2 * * *"
Ctrl+K → /killport 3000
傳統 launcher 的工作通常在「打開東西」後結束。Keynova 把搜尋後的操作、預覽、工具與下一步也放進同一條鍵盤路徑。
| 一般 launcher | Keynova |
|---|---|
| 主要用來開啟應用程式或文件 | 同時搜尋 app、檔案、命令、歷史、筆記與工作區 |
| 開啟結果後切換到其他工具繼續操作 | 在同一介面預覽、執行 action,或取得下一步建議 |
| 功能分散在不同面板 | 所有來源共享一致的結果、排序、preview 與 action 操作 |
| AI 通常是一個獨立聊天視窗 | AI 是單步 capability,只在目前工作流需要時出現 |
| 搜尋是入口 | 搜尋是完整 workflow 的 dispatcher |
Keynova 不追求 Raycast 或 Alfred 的全功能廣度。它把產品範圍收斂在技術工作者每天反覆使用的本機工作流。
按下 Ctrl+K。快捷鍵可在 /setting 的 hotkeys 區段調整。
| 輸入 | 模式 | 範例 |
|---|---|---|
| 一般文字 | 統一搜尋 | README、keynova、settings |
/ |
內建命令 | /help、/setting、/cal 5 km to m |
> |
開啟本機終端機 | > |
| capability 關鍵字 | Inline AI / memory | explain ...、cmd ...、remember ... |
| 按鍵 | 行為 |
|---|---|
Up / Down |
瀏覽結果或建議 |
Enter |
開啟結果、執行命令或送出 capability |
Shift+Enter |
預覽目前結果 |
Tab |
開啟 secondary action menu |
Esc |
返回上一層、關閉面板或隱藏 launcher |
? |
顯示鍵盤 cheatsheet |
- 工作區感知搜尋 app、檔案、資料夾、筆記、歷史、命令與模型。
- 搜尋 provider 採串流回傳,不必等待所有來源完成才看到第一筆結果。
- 所有來源轉成共用
UnifiedResult,統一處理 preview、rank signal 與 action chip。 - 可依檔案、筆記、應用程式、命令、歷史與模型篩選。
- Workflow Memory 記錄近期操作、context hash、suggestion ranking 與可重播的 replay descriptor。
支援的結果可執行:
- open
- reveal in Explorer / Finder / file manager
- preview
- copy path / copy name
- rename
- move
- delete
- metadata inspection
- SHA-256 計算
文字、圖片與檔案 metadata 可直接在 preview pane 檢視。重新命名、移動與刪除走明確的 confirmation flow;刪除完成後還會驗證檔案是否真的離開原路徑,避免 UI 顯示成功但磁碟狀態未改變。
輸入 > 開啟預設 shell 的內嵌終端機。Terminal runtime 採 lazy mount,並使用後端核發的 launch spec;人類輸入與 AI 命令建議是兩條不同路徑。
內建工具包含計算、格式轉換與常用開發操作,例如:
/cal 2+2
/cal 5 km to m
/b64enc hello
/b64dec aGVsbG8=
/color #7dd8c1
/cron "0 */2 * * *"
/uuid
/hash
/regex
/jwt
/killport 3000
實際可用命令、參數與補全以 launcher 內的 /help 和即時提示為準。
- Notes:內建 Markdown 筆記、工作區脈絡與另存 AI 回答。
- Translation:Google Cloud Translation v2 文字翻譯。
- Model Manager:透過
/model下載、列出、啟用與移除本機模型,並依硬體顯示建議清單。 - History:本機 clipboard history、搜尋、釘選與貼上。
- System / Learning:保留為選用或 feature-gated surface,不構成產品主敘事。
Keynova 不會變成聊天工具。AI 只在需要時出現,用來:
- 解釋程式碼與錯誤訊息。
- 摘要文件或長篇內容。
- 產生 shell command 與使用前提。
- 協助整理本機記憶。
- 根據近期工作建議下一步。
AI capability 完全採 search-first 介面,沒有獨立 chat 視窗:
explain <程式碼、錯誤訊息或問題>
summarize <長文>
fix <錯誤訊息>
cmd <用自然語言描述要產生的命令>
remember <值得保存的資訊>
recall <要找回的資訊>
next
- capability 是單步、stateless:回答串流到 result area,不保留 chat session,也不自主連續執行工具。
- 回答可複製為 Markdown,或存進本機筆記。
- 空白 palette 可直接載入
next工作流建議。 - 一般搜尋查無結果時,自然語言 intent 可被判斷為
explain、summarize、fix或cmd,不一定要輸入前綴。 fix回傳修復說明與可選命令卡。cmd顯示命令、風險、理由,以及生成時假設的 cwd、shell 與 OS。- 使用本機脈絡時,回答卡以精簡的
Based on標籤說明依據;片段、分數與 secret-classified 來源不會回傳到 UI。 next過濾重複、過期與無效目標,只有使用者明確選擇後才會使用 replay descriptor。
AI 產生的命令一律 copy-only:
- 只有 Copy,沒有 Edit、Run 或直接送進終端機的入口。
- 風險標籤只供檢視,不是執行閘門。
- AI capability 本身不提供任何命令執行路徑。
- 一般檔案刪除、重新命名與移動仍使用獨立的 UI confirmation flow。
Inline AI 的延遲主要取決於硬體與 token 生成吞吐:
qwen2.5:1.5b:預設建議,適合純 CPU 或低階機器,速度與品質較平衡。qwen2.5:7b:適合有 GPU 或優先追求回答品質的環境。
舊版 chat-first AiPanel 與後端 ReAct agent runtime(typed-tool + approval)已於 REF.8 整段移除(ADR-0029)。AI 現以無狀態的 inline capability 形式提供(explain / summarize / cmd / 記憶搜尋等),不再有自主 agent 迴圈或 ai.legacy_agent flag。
預先編譯版本可直接從 GitHub Releases 下載。
支援 Windows、macOS 與 Linux:
| 平台 | 發佈檔案 | 安裝方式 |
|---|---|---|
| Windows | Keynova_<version>_x64-setup.exe(NSIS) |
雙擊執行;卸載使用「設定 → 應用程式」 |
| macOS | Keynova_<version>_universal.dmg |
開啟 .dmg 後拖入「應用程式」 |
| Linux | keynova_<version>_amd64.deb / .AppImage |
sudo apt install ./*.deb,或賦予 AppImage 執行權限 |
目前 release 尚未完成正式 code signing / notarization:
-
Windows:SmartScreen 可能顯示無法辨識,選擇「其他資訊 → 仍要執行」。
-
macOS:在「系統設定 → 隱私權與安全性」允許一次,或執行:
xattr -d com.apple.quarantine /Applications/Keynova.app
-
Linux:AppImage 需先執行
chmod +x Keynova*.AppImage;deb 安裝後預設加入 PATH。
Code-signing 與 updater 管線已規劃為 secret-gated 流程;在正式 key 與憑證配置完成前,更新仍以手動下載 release 為主。
| 模組 | 能力 |
|---|---|
| Command Palette | 全域快捷鍵、模糊搜尋、結果瀏覽、鍵盤操作 |
| Workspace Search | 工作區感知搜尋、app / file provider、串流回傳 |
| Unified Result | 共用 result、preview、rank signal、action chip schema |
| File Actions | open、reveal、preview、rename、move、delete、真實刪除驗證 |
| Secondary Actions | 二級操作、inline input、confirmation flow |
| Preview Pane | 文字、圖片與檔案 metadata 預覽 |
| Terminal | 內嵌終端機、lazy runtime、後端 launch spec |
| Dev Utilities | calculator、base64、color、cron、hash、uuid、regex、jwt、killport |
| Notes | Markdown 筆記與工作區脈絡 |
| Translation | Google Cloud Translation v2 |
| Model Manager | 本機模型下載、列出、啟用與移除 |
| AI Capability | explain、summarize、fix、cmd、remember、recall、next |
| Workflow Memory | 近期操作、context hash、suggestion ranking、replay descriptor |
| Onboarding | 首次使用引導、空狀態 CTA、cheatsheet |
Keyboard-first local workflow entry for technical workers.
Keynova 不是通用 launcher、AI chat app 或 catch-all 生產力套件。產品主線只聚焦在技術工作者每天會反覆使用的本機工作流。
- 核心 daily path:unified search、file actions、terminal、project command discovery、dev utilities、inline AI capability。
- 選用 / parked:Model Manager、Translation、Notes、Automation、Learning Panel、System Monitor、Plugin System、長期自主 agent memory。這些功能可存在於 feature gate 後,但不主導 v0.6 / v0.7 的產品敘事。REF.8 已移除 nvim/LazyVim 整合與 mouse-control。
- 不追求 Alfred / Raycast 的全功能廣度。
- 不建立 chat-first AI 中心。
- 不把 autonomous agent 當產品 mainline。
- 不擴張成與核心工作流無關的通用 productivity suite。
完整 core-vs-parked 分界與 v0.6 到 v1.0 的計畫見 Product Roadmap。
設定檔位於平台 config 目錄:
| 平台 | 路徑 |
|---|---|
| Windows | %APPDATA%\Keynova\config.toml |
| Linux | ~/.config/keynova/config.toml |
| macOS | ~/Library/Application Support/Keynova/config.toml |
常見設定:
[ai]
provider = "ollama"
model = "qwen2.5:1.5b"
ollama_url = "http://localhost:11434"
[translation]
provider = "google_cloud_v2"
default_dst = "zh-TW"
api_key = ""
[search]
backend = "auto"
[performance]
low_memory_mode = falseperformance.low_memory_mode = true會跳過 terminal prewarm、避免啟動時重新索引,並縮短 Ollama keep-alive。- API key 等機密以 OS keychain(Windows Credential Manager / macOS Keychain / Linux secret-service)儲存,
config.toml只保留參照、不存明文;首次升級時會自動把舊有明文搬入 keychain。setting.list_all回傳前也會於本機端遮罩,避免明文進入 UI。 - Windows 搜尋可使用 Everything;跨平台環境則使用 Tantivy 與平台 fallback。
flowchart LR
Intent["User intent"] --> Palette["Unified Search Palette"]
Palette --> Result["UnifiedResult"]
Result --> Actions["Action Chips"]
Result --> Preview["Preview"]
Result --> Memory["Workflow Memory"]
Actions --> Local["Local Actions"]
Actions --> Capability["AI Capability Layer"]
Capability --> Provider["Ollama / OpenAI / Claude"]
- Search-first:搜尋框是 dispatcher,不是聊天視窗入口。
- Local-first:預設偏向本機能力,外部 AI、翻譯與網路服務明確 opt-in。
- Typed boundary:IPC、action 與 AI capability 使用 typed contract。
- Approval-aware:高風險操作必須可見、可確認、可取消。
- Bounded runtime:搜尋、預覽、prompt、工具輸出與背景服務都有大小或時間上限。
重要架構、安全與 IPC contract 變更先建立 ADR,索引見 docs/decisions.md。
- 不提供 generic shell execution。
- AI 命令卡沒有執行能力。
- Destructive file action 需要明確確認與結果驗證。
- 機密設定(API key 等)以 OS keychain 儲存,不以明文留在 config 檔。
- 網路請求受 allowlist / policy boundary 控制。
- Keynova-owned data 目錄與可讀寫範圍有明確界線。
- Secret-classified context 不會回傳到一般 UI。
- 外部 provider 與個人 memory grounding 依 policy 與 feature flag 決定是否啟用。
- 依賴稽核:
npm audit與cargo audit(716 套件)目前皆為 0 漏洞;Dependabot 與 CodeQL 在 CI 上持續掃描。
完整 permission、path、network、secret 與 release trust 模型見 docs/security.md。
| 平台 | 狀態 | 備註 |
|---|---|---|
| Windows 10+ | 主要開發平台 | Everything、WebView2 與完整日常工作流 |
| Linux X11 / Wayland | 支援,建置已於 v0.4.0 修復 | 跨平台搜尋與系統 fallback;部分 OS integration 持續補齊 |
| macOS 11+ | 支援,universal build 已於 v0.4.0 修復 | 部分 OS integration 持續補齊 |
Keynova 的真實常駐足跡以 Private Working Set 計算約為 80 MB:
tauri-app.exehost:約 8 MB- Keynova 擁有的 WebView2 子行程:約 71 MB
工作管理員或資源監視器可能將整棵行程樹顯示為約 324 MB,其中約 243 MB 是 Edge / Chromium runtime 的共享 DLL 頁。OS 只保存一份,卻可能在每個 WebView2 行程的工作集重複顯示,不代表 Keynova 獨占同等記憶體。
降載手段包括:
- release profile 的 strip + thin-LTO
- 視窗隱藏時呼叫 host
EmptyWorkingSet - WebView2
SetMemoryUsageTargetLevel(Low) --disable-gpuperformance.low_memory_mode
實測 release 產物(cargo build --release,strip + thin-LTO):
| 產物 | 大小 |
|---|---|
GUI 主程式 tauri-app.exe |
23,996,928 bytes(約 22.9 MB) |
CLI keynova.exe |
865,792 bytes(約 0.85 MB) |
前端 bundle(Vite,gzip 後):
- 初始載入約 119 KB:
index49 KB、react-vendor60 KB、CSS 9 KB。 - 大型相依採 lazy chunk,只在對應面板開啟時載入,不進初始路徑:
markdown-vendor101 KB、terminal-vendor83 KB。
- Node.js 18+
- Rust stable
- Windows:MSVC Build Tools、WebView2 Runtime
- Linux:Tauri 2 所需 GTK / WebKit 套件,例如
libwebkit2gtk-4.1-dev、libayatana-appindicator3-dev、librsvg2-dev - macOS:Xcode Command Line Tools
npm install
npm run tauri dev
npm run tauri buildnpm run tauri build 的產物位於 src-tauri/target/release/bundle/,依平台包含 NSIS、MSI、DMG、DEB 或 AppImage。
.github/workflows/release.yml 定義跨平台 release 流程。Push v* tag 後會執行 Windows、macOS universal 與 Linux build,並建立 draft release。
npm run dev # Vite frontend
npm run build # TypeScript check + frontend build
npm run lint # ESLint
npm run test # Vitest
npm run rust:test # Rust tests
npm run rust:clippy # Rust clippy,warnings 視為錯誤
npm run verify # 前端與 Rust 完整驗證目前優先順序是把 workflow dispatcher 的日常路徑做深、做穩,再擴大產品範圍。
| 項目 | 方向 |
|---|---|
| Code signing / notarization | Windows Authenticode、macOS Developer ID 與正式 release trust |
| In-app updater | 透過 GitHub Releases 更新;在 signing key 完成前保持 dormant |
| Workflow ranking | 納入 recency、frequency、success rate 與更完整 context |
| Cross-platform polish | Windows-first 穩定後,持續補齊 macOS / Linux integration |
更完整的 batch、acceptance criteria、KPI 與 parked scope 見 docs/tasks/product-roadmap.md。
| 文件 | 用途 |
|---|---|
| docs/index.md | 文件入口與路由 |
| docs/memory/current.md | 當前策略、限制與記憶 |
| docs/tasks/active.md | Active queue |
| docs/tasks/product-roadmap.md | 產品定位、core / parked 與版本路線 |
| docs/architecture.md | 系統架構與模組參考 |
| docs/security.md | Permission、network、secret 與安全邊界 |
| docs/decisions.md | ADR 索引 |
| docs/license-compliance.md | 第三方授權與合規 |
送出變更前請執行:
npm run verify開發原則:
- 不新增 generic shell execution。
- 不把 AI 放回產品中心。
- 不繞過 approval / confirmation boundary。
- 不讓單一 component 或 handler 成為 god module。
- 重要架構、安全與 IPC contract 變更必須先建立或更新 ADR。
- README、security docs、release notes 與實作必須同步。
AGPL-3.0-or-later。第三方相依與合規細節見 docs/license-compliance.md。




