{"_id":"@eden_qu/ai-desk-daemon","_rev":"9-da0982ce5e6ad8b64bd6e58111a0e58e","name":"@eden_qu/ai-desk-daemon","dist-tags":{"latest":"1.0.14"},"versions":{"1.0.6":{"name":"@eden_qu/ai-desk-daemon","version":"1.0.6","keywords":["ai-desk","daemon","cli","ringcentral"],"author":{"name":"RingCentral"},"license":"MIT","_id":"@eden_qu/ai-desk-daemon@1.0.6","maintainers":[{"name":"eden_qu","email":"eden.qu@ringcentral.com"}],"homepage":"https://git.ringcentral.com/charles.zhang/ai-desk-artifacts","bin":{"ai-desk-daemon":"bin/cli.js"},"dist":{"shasum":"224a6906c9ad73d5637432997181b3deb6c2e328","tarball":"https://registry.npmjs.org/@eden_qu/ai-desk-daemon/-/ai-desk-daemon-1.0.6.tgz","fileCount":12,"integrity":"sha512-cJ2og5eBNr6Tfl+7Y3aNkxk4DYtSevZz+fwW5f1wHh1GKi/XtiIeb8UNi/xKTkVlK/1hWrIDYQxRCiqoMC6zNA==","signatures":[{"sig":"MEYCIQCTqou8IitzuF7kxMQHbyPujdNqA5jU2u5i+EGrlabCIAIhAOgs0OgGi+lcJdYfoUz9xHTVdIBbNetssvb1dz/1M6W0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36543331},"main":"lib/daemon-manager.js","engines":{"node":">=14.0.0"},"gitHead":"7bd23a3724cd0dd5c05221b0a7154dfeab40bc58","scripts":{"test":"node bin/cli.js --help","prepublishOnly":"node scripts/prepare-binaries.js"},"_npmUser":{"name":"eden_qu","email":"eden.qu@ringcentral.com"},"repository":{"url":"https://git.ringcentral.com/charles.zhang/ai-desk.git","type":"git","directory":"ai-desk-daemon"},"_npmVersion":"10.9.2","description":"AI Desk Daemon - CLI tool for managing the AI Desk daemon service","directories":{},"_nodeVersion":"23.6.1","dependencies":{"chalk":"^4.1.2","commander":"^11.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ai-desk-daemon_1.0.6_1773041544673_0.9780452896449003","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@eden_qu/ai-desk-daemon","version":"1.0.7","keywords":["ai-desk","daemon","cli","ringcentral"],"author":{"name":"RingCentral"},"license":"MIT","_id":"@eden_qu/ai-desk-daemon@1.0.7","maintainers":[{"name":"eden_qu","email":"eden.qu@ringcentral.com"}],"homepage":"https://git.ringcentral.com/charles.zhang/ai-desk-artifacts","bin":{"aidesk":"bin/cli.js"},"dist":{"shasum":"2277a53801246af5ed11ec502aee02d2a34d0c41","tarball":"https://registry.npmjs.org/@eden_qu/ai-desk-daemon/-/ai-desk-daemon-1.0.7.tgz","fileCount":12,"integrity":"sha512-maqpRudDAFOVn8ZVJGCzLDzDC+BPrE02KNkdiYLwesKFSIed610BObN+SwZALWhgmjwcBOZO+EbftvHN2y0+bQ==","signatures":[{"sig":"MEQCIHvnLxL+AGNwUBpvMBpzdcUejDd1lHw0xfZqfhNGefq8AiApl98rnzVv6DPKKRG/5VG8X0aylQxZXZhAR9ykwdTnTA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36543091},"main":"lib/daemon-manager.js","engines":{"node":">=14.0.0"},"gitHead":"7bd23a3724cd0dd5c05221b0a7154dfeab40bc58","scripts":{"test":"node bin/cli.js --help","prepublishOnly":"node scripts/prepare-binaries.js"},"_npmUser":{"name":"eden_qu","email":"eden.qu@ringcentral.com"},"repository":{"url":"https://git.ringcentral.com/charles.zhang/ai-desk.git","type":"git","directory":"ai-desk-daemon"},"_npmVersion":"10.9.2","description":"AI Desk Daemon - CLI tool for managing the AI Desk daemon service","directories":{},"_nodeVersion":"23.6.1","dependencies":{"chalk":"^4.1.2","commander":"^11.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ai-desk-daemon_1.0.7_1773042137461_0.9373167265816922","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@eden_qu/ai-desk-daemon","version":"1.0.8","keywords":["ai-desk","daemon","cli","ringcentral"],"author":{"name":"RingCentral"},"license":"MIT","_id":"@eden_qu/ai-desk-daemon@1.0.8","maintainers":[{"name":"eden_qu","email":"eden.qu@ringcentral.com"}],"homepage":"https://git.ringcentral.com/charles.zhang/ai-desk-artifacts","bin":{"aidesk":"bin/cli.js"},"dist":{"shasum":"a3545b7df0e88624d2f7b043e1692200ff562ad0","tarball":"https://registry.npmjs.org/@eden_qu/ai-desk-daemon/-/ai-desk-daemon-1.0.8.tgz","fileCount":12,"integrity":"sha512-8ZdzRy2krA2pH0tLyl8t6mGGosgSklGXC4l9Fpk2To9p3DdH5b7LLwGZWWg7gfwizYznBQyg1NpsoCvb5sbG2A==","signatures":[{"sig":"MEUCIBoLesAmMuazXOvUfYM5+byn3zle03pNurCqTrj8BzZsAiEA6URoGHT8YIaRUE+1DGjXdlRtFf/Xw24OggLU/jphO8o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36543058},"main":"lib/daemon-manager.js","engines":{"node":">=14.0.0"},"gitHead":"7bd23a3724cd0dd5c05221b0a7154dfeab40bc58","scripts":{"test":"node bin/cli.js --help","prepublishOnly":"node scripts/prepare-binaries.js"},"_npmUser":{"name":"eden_qu","email":"eden.qu@ringcentral.com"},"repository":{"url":"https://git.ringcentral.com/charles.zhang/ai-desk.git","type":"git","directory":"ai-desk-daemon"},"_npmVersion":"10.9.2","description":"AI Desk Daemon - CLI tool for managing the AI Desk daemon service","directories":{},"_nodeVersion":"23.6.1","dependencies":{"chalk":"^4.1.2","commander":"^11.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ai-desk-daemon_1.0.8_1773042516387_0.4354249550315932","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@eden_qu/ai-desk-daemon","version":"1.0.9","keywords":["ai-desk","daemon","cli","ringcentral"],"author":{"name":"RingCentral"},"license":"MIT","_id":"@eden_qu/ai-desk-daemon@1.0.9","maintainers":[{"name":"eden_qu","email":"eden.qu@ringcentral.com"}],"homepage":"https://git.ringcentral.com/charles.zhang/ai-desk-artifacts","bin":{"aidesk":"bin/cli.js"},"dist":{"shasum":"a05a13cf1c2f69b0aedd7aec2c8992995a802bbf","tarball":"https://registry.npmjs.org/@eden_qu/ai-desk-daemon/-/ai-desk-daemon-1.0.9.tgz","fileCount":12,"integrity":"sha512-/K8IXOR/i37y32fls5F2gxcwbgh1DxPY1RhnimQc6Svy4o3E3daD/vDGqEQshEzrgrWizpfBS5OJpexizhu5zA==","signatures":[{"sig":"MEQCIA1XGNo7ODObZJo5FzeWvIvpnGUyY6na0cmczkAg561kAiAHVSSUjnDB5kAxGlCe7wbHCWIUFjcQkg8Jh0Ku2cszpw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36543106},"main":"lib/daemon-manager.js","engines":{"node":">=14.0.0"},"gitHead":"7bd23a3724cd0dd5c05221b0a7154dfeab40bc58","scripts":{"test":"node bin/cli.js --help","prepublishOnly":"node scripts/prepare-binaries.js"},"_npmUser":{"name":"eden_qu","email":"eden.qu@ringcentral.com"},"repository":{"url":"https://git.ringcentral.com/charles.zhang/ai-desk.git","type":"git","directory":"ai-desk-daemon"},"_npmVersion":"10.9.2","description":"AI Desk Daemon - CLI tool for managing the AI Desk daemon service","directories":{},"_nodeVersion":"23.6.1","dependencies":{"chalk":"^4.1.2","commander":"^11.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ai-desk-daemon_1.0.9_1773042856999_0.018429143458104535","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@eden_qu/ai-desk-daemon","version":"1.0.10","keywords":["ai-desk","daemon","cli","ringcentral"],"author":{"name":"RingCentral"},"license":"MIT","_id":"@eden_qu/ai-desk-daemon@1.0.10","maintainers":[{"name":"eden_qu","email":"eden.qu@ringcentral.com"}],"homepage":"https://git.ringcentral.com/charles.zhang/ai-desk-artifacts","bin":{"aidesk":"bin/cli.js"},"dist":{"shasum":"bf8a290b2db033bec2817a175fa17a08bf53b904","tarball":"https://registry.npmjs.org/@eden_qu/ai-desk-daemon/-/ai-desk-daemon-1.0.10.tgz","fileCount":12,"integrity":"sha512-LOAOV9oJAHMfyzOThyy5fykUABzlEFaQxPKyO+F052fUp6ziN+nXajg6TN17Wihh40p8LOcjU+HSgirtXM8OjA==","signatures":[{"sig":"MEQCIF21h2ufynzVpJsymAO7Z7S2Da7ah0y9/jDzJoXB/qfXAiBOkqv/j2ry8NZC0v8yQAG7nv+s2XHh4xmdYSv3sH3Rjw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36543177},"main":"lib/daemon-manager.js","engines":{"node":">=14.0.0"},"gitHead":"7bd23a3724cd0dd5c05221b0a7154dfeab40bc58","scripts":{"test":"node bin/cli.js --help","prepublishOnly":"node scripts/prepare-binaries.js"},"_npmUser":{"name":"eden_qu","email":"eden.qu@ringcentral.com"},"repository":{"url":"https://git.ringcentral.com/charles.zhang/ai-desk.git","type":"git","directory":"ai-desk-daemon"},"_npmVersion":"10.9.2","description":"AI Desk Daemon - CLI tool for managing the AI Desk daemon service","directories":{},"_nodeVersion":"23.6.1","dependencies":{"chalk":"^4.1.2","commander":"^11.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ai-desk-daemon_1.0.10_1773043191538_0.9993247560849843","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"@eden_qu/ai-desk-daemon","version":"1.0.11","keywords":["ai-desk","daemon","cli","ringcentral"],"author":{"name":"RingCentral"},"license":"MIT","_id":"@eden_qu/ai-desk-daemon@1.0.11","maintainers":[{"name":"eden_qu","email":"eden.qu@ringcentral.com"}],"homepage":"https://git.ringcentral.com/charles.zhang/ai-desk-artifacts","bin":{"aidesk":"bin/cli.js"},"dist":{"shasum":"286ad207eef08a4c7f158536f0cedc451828c161","tarball":"https://registry.npmjs.org/@eden_qu/ai-desk-daemon/-/ai-desk-daemon-1.0.11.tgz","fileCount":12,"integrity":"sha512-t/KyLRv0qXB5n5+zmuHb/S2f0YbOs+n+V+9UjFn5GgjJ6e8NfUoS9s236dTIBdZ+9TFnKPkk9gKJv5RJkoRjUA==","signatures":[{"sig":"MEUCIQDlqQZ/Jc/9SkTwUlDXaBVZd1QvYJmvbUgW3KPiVv9NVwIgDOMbqV+Bg8RVgBDhC+x8GsDHuezb1/D1HqB5Vrm5X/0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36543177},"main":"lib/daemon-manager.js","engines":{"node":">=14.0.0"},"gitHead":"7bd23a3724cd0dd5c05221b0a7154dfeab40bc58","scripts":{"test":"node bin/cli.js --help","prepublishOnly":"node scripts/prepare-binaries.js"},"_npmUser":{"name":"eden_qu","email":"eden.qu@ringcentral.com"},"repository":{"url":"https://git.ringcentral.com/charles.zhang/ai-desk.git","type":"git","directory":"ai-desk-daemon"},"_npmVersion":"10.9.2","description":"AI Desk Daemon - CLI tool for managing the AI Desk daemon service","directories":{},"_nodeVersion":"23.6.1","dependencies":{"chalk":"^4.1.2","commander":"^11.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ai-desk-daemon_1.0.11_1773043660283_0.7576604011063721","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"@eden_qu/ai-desk-daemon","version":"1.0.12","keywords":["ai-desk","daemon","cli","ringcentral"],"author":{"name":"RingCentral"},"license":"MIT","_id":"@eden_qu/ai-desk-daemon@1.0.12","maintainers":[{"name":"eden_qu","email":"eden.qu@ringcentral.com"}],"homepage":"https://git.ringcentral.com/charles.zhang/ai-desk-artifacts","bin":{"aidesk":"bin/cli.js"},"dist":{"shasum":"d95f739a38a76e09ebd63813f71e2b8da1ae11ca","tarball":"https://registry.npmjs.org/@eden_qu/ai-desk-daemon/-/ai-desk-daemon-1.0.12.tgz","fileCount":12,"integrity":"sha512-UzxNuWBlmb0aBciPgxFXb77nXOCPtUo4Md0NI131g0WXmDmk08m/VGm5oo0A3OhJpKCn3JDT9CZqxMpMIqMgGQ==","signatures":[{"sig":"MEUCIQDHCntbtvL6k2KsjPIqc8fofpXAKDJ/9ElBj+Kk0Zm3eAIgTtaAmFCE65jHmS/WZq3xi8QHaqaq0XZRRcR6XtpDZb0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36546400},"main":"lib/daemon-manager.js","engines":{"node":">=14.0.0"},"gitHead":"8aa78ebba0087fe0ac38849e8257f756329c4f95","scripts":{"test":"node bin/cli.js --help","prepublishOnly":"node scripts/prepare-binaries.js"},"_npmUser":{"name":"eden_qu","email":"eden.qu@ringcentral.com"},"repository":{"url":"https://git.ringcentral.com/charles.zhang/ai-desk.git","type":"git","directory":"ai-desk-daemon"},"_npmVersion":"10.9.2","description":"AI Desk Daemon - CLI tool for managing the AI Desk daemon service","directories":{},"_nodeVersion":"23.6.1","dependencies":{"chalk":"^4.1.2","commander":"^11.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ai-desk-daemon_1.0.12_1773044887051_0.8133506317321877","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"@eden_qu/ai-desk-daemon","version":"1.0.13","keywords":["ai-desk","daemon","cli","ringcentral"],"author":{"name":"RingCentral"},"license":"MIT","_id":"@eden_qu/ai-desk-daemon@1.0.13","maintainers":[{"name":"eden_qu","email":"eden.qu@ringcentral.com"}],"homepage":"https://git.ringcentral.com/charles.zhang/ai-desk-artifacts","bin":{"aidesk":"bin/cli.js"},"dist":{"shasum":"e8a0bef10ede9528238ee128023b5880100701f1","tarball":"https://registry.npmjs.org/@eden_qu/ai-desk-daemon/-/ai-desk-daemon-1.0.13.tgz","fileCount":12,"integrity":"sha512-rUSFK9eudZejo0hCNYTvLiNU7NnoXNEDc9PXre0hWSN1Ym8i2tD7QaoqjknAEQUUFftx6TVTdPSKGpECdlpNsg==","signatures":[{"sig":"MEQCIH2lRXQZvzoUTt1aZgbsOLgN0ym426J2H63+XQz/d/0kAiBcUqIZYKtgaE7LFRr1kW06cbezOQXbJYhE+60X97+Kdg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36547118},"main":"lib/daemon-manager.js","engines":{"node":">=14.0.0"},"gitHead":"8aa78ebba0087fe0ac38849e8257f756329c4f95","scripts":{"test":"node bin/cli.js --help","prepublishOnly":"node scripts/prepare-binaries.js"},"_npmUser":{"name":"eden_qu","email":"eden.qu@ringcentral.com"},"repository":{"url":"https://git.ringcentral.com/charles.zhang/ai-desk.git","type":"git","directory":"ai-desk-daemon"},"_npmVersion":"10.9.2","description":"AI Desk Daemon - CLI tool for managing the AI Desk daemon service","directories":{},"_nodeVersion":"23.6.1","dependencies":{"chalk":"^4.1.2","commander":"^11.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ai-desk-daemon_1.0.13_1773045760770_0.3985483840036965","host":"s3://npm-registry-packages-npm-production"}},"1.0.14":{"name":"@eden_qu/ai-desk-daemon","version":"1.0.14","description":"AI Desk Daemon - CLI tool for managing the AI Desk daemon service","main":"lib/daemon-manager.js","bin":{"aidesk":"bin/cli.js"},"scripts":{"test":"node bin/cli.js --help"},"keywords":["ai-desk","daemon","cli","ringcentral"],"author":{"name":"RingCentral"},"license":"MIT","engines":{"node":">=14.0.0"},"dependencies":{"commander":"^11.0.0","chalk":"^4.1.2"},"repository":{"type":"git","url":"https://git.ringcentral.com/charles.zhang/ai-desk.git","directory":"ai-desk-daemon"},"homepage":"https://git.ringcentral.com/charles.zhang/ai-desk-artifacts","_id":"@eden_qu/ai-desk-daemon@1.0.14","gitHead":"29857fc71df4d7ab626c460f53800c98ddd75d7a","_nodeVersion":"23.6.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-xiZkYFHlnbSQV438cP9cj77EQQzBSN4m4lZYElGhq/9bF1XOq9vPO6+sI3/ehtiGLzxivL6pDstBFsWTx44h0w==","shasum":"ee71e95f79c169f0de64a66132558ec750570e0c","tarball":"https://registry.npmjs.org/@eden_qu/ai-desk-daemon/-/ai-desk-daemon-1.0.14.tgz","fileCount":11,"unpackedSize":36544792,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDhl/6q0CihbHjtss1LoZ7Zjvlzel2399JsZ1aM9QbkhQIhAKJ9XSYSZC5hNijvoQ53ClPnB4WIwiQ7uHpwBZtsn3Hw"}]},"_npmUser":{"name":"eden_qu","email":"eden.qu@ringcentral.com"},"directories":{},"maintainers":[{"name":"eden_qu","email":"eden.qu@ringcentral.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ai-desk-daemon_1.0.14_1773049793086_0.2749367067504913"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-09T07:32:24.620Z","modified":"2026-03-09T09:49:53.731Z","1.0.6":"2026-03-09T07:32:25.232Z","1.0.7":"2026-03-09T07:42:18.260Z","1.0.8":"2026-03-09T07:48:36.952Z","1.0.9":"2026-03-09T07:54:17.565Z","1.0.10":"2026-03-09T07:59:52.113Z","1.0.11":"2026-03-09T08:07:40.923Z","1.0.12":"2026-03-09T08:28:07.579Z","1.0.13":"2026-03-09T08:42:41.588Z","1.0.14":"2026-03-09T09:49:53.623Z"},"author":{"name":"RingCentral"},"license":"MIT","homepage":"https://git.ringcentral.com/charles.zhang/ai-desk-artifacts","keywords":["ai-desk","daemon","cli","ringcentral"],"repository":{"type":"git","url":"https://git.ringcentral.com/charles.zhang/ai-desk.git","directory":"ai-desk-daemon"},"description":"AI Desk Daemon - CLI tool for managing the AI Desk daemon service","maintainers":[{"name":"eden_qu","email":"eden.qu@ringcentral.com"}],"readme":"# AI Desk Desktop\n\n一个类似 Docker Desktop 的桌面应用，用于管理本地 AI CLI 工具的守护进程。\n\n<p align=\"center\">\n  <img src=\"docs/images/screenshot.png\" alt=\"AI Desk Desktop\" width=\"800\">\n</p>\n\n## ✨ 特性\n\n- 🎯 **自动启动** - Web 访问时自动检测并启动守护进程\n- 🖥️ **图形化管理** - 系统托盘 + 控制面板，便捷管理\n- 🔄 **实时监控** - 查看守护进程状态、日志和统计信息\n- 🚀 **智能启动器** - 多种方式自动唤醒守护进程\n- 🔒 **安全可靠** - 工作目录白名单、认证支持\n- 📦 **跨平台** - macOS、Windows、Linux 统一体验\n- ⚡ **高性能** - 基于 Tauri，体积小（~15MB）、内存占用低\n\n## 📦 安装\n\n### 方式 1: npm 安装（纯 CLI 工具）\n\n**适合场景**：开发者、服务器环境、CI/CD、命令行用户\n\n```bash\n# 全局安装\nnpm install -g @eden_qu/ai-desk-daemon\n\n# 启动 daemon\naidesk start\n\n# 查看状态\naidesk status\n```\n\n**包含内容**：\n- ✅ AI Desk Daemon 后台服务\n- ✅ CLI 命令行管理工具\n- ✅ HTTP API (http://localhost:9527)\n\n**不包含**：\n- ❌ 系统托盘应用 (Tray)\n- ❌ 桌面 GUI 应用\n\n**可用命令**：\n- `aidesk start` - 启动守护进程\n- `aidesk stop` - 停止守护进程\n- `aidesk restart` - 重启守护进程\n- `aidesk status` - 查看状态\n- `aidesk logs` - 查看日志\n- `aidesk logs -f` - 实时查看日志\n\n📖 详细使用说明：[NPM_CLI.md](NPM_CLI.md)\n\n---\n\n### 方式 2: 完整安装（Daemon + Tray）\n\n**适合场景**：桌面用户、需要系统托盘图标、完整 GUI 体验\n\n#### macOS\n\n```bash\n# 下载并安装\ncurl -fsSL https://github.com/your-repo/ai-desk-desktop/releases/latest/download/install-macos.sh | bash\n\n# 或手动安装\n./scripts/install-macos.sh\n```\n\n#### Linux\n\n```bash\n# Ubuntu/Debian\nsudo ./scripts/install-linux.sh\n\n# 启用自动启动\nsystemctl --user enable ai-desk-daemon\nsystemctl --user start ai-desk-daemon\n```\n\n#### Windows\n\n```powershell\n# 以管理员身份运行 PowerShell\n.\\scripts\\install-windows.ps1\n```\n\n## 🚀 快速开始\n\n### 1. 启动桌面应用\n\n**macOS/Linux:**\n```bash\n# 从应用程序菜单启动\nopen /Applications/AI\\ Desk\\ Desktop.app\n\n# 或命令行启动\nai-desk-desktop\n```\n\n**Windows:**\n- 从开始菜单启动 \"AI Desk Desktop\"\n\n### 2. Web 应用集成\n\n在你的 Web 应用中集成智能启动器：\n\n```tsx\n// App.tsx\nimport DaemonInitializer from './components/common/DaemonInitializer';\n\nfunction App() {\n  return (\n    <DaemonInitializer>\n      <YourMainApp />\n    </DaemonInitializer>\n  );\n}\n```\n\n启动器会自动：\n- ✅ 检测守护进程是否运行\n- ✅ 如果未运行，通过多种方式尝试启动\n- ✅ 等待守护进程就绪\n- ✅ 失败时显示友好的错误提示\n\n### 3. 使用 Daemon API\n\n```typescript\nimport { daemonService } from './services/DaemonService';\n\n// 执行 CLI 命令\nconst result = await daemonService.executeCLI({\n  command: 'claude',\n  args: ['--verbose'],\n  stdin: 'Your prompt here',\n  cwd: '/path/to/workspace',\n  timeout: 300000,\n});\n\n// 流式执行\nawait daemonService.executeStreaming(\n  { command: 'claude', args: [], stdin: 'Hello!' },\n  (chunk) => console.log(chunk), // onChunk\n  (result) => console.log(result), // onComplete\n  (error) => console.error(error) // onError\n);\n```\n\n## 🏗️ 架构\n\n```\n┌─────────────────────────────────────────────────────┐\n│              AI Desk Desktop App                    │\n│              (Tauri Application)                    │\n│                                                     │\n│  ┌──────────┐    ┌──────────┐    ┌──────────┐    │\n│  │ System   │    │ Control  │    │ Settings │    │\n│  │ Tray     │    │ Panel    │    │ Panel    │    │\n│  └──────────┘    └──────────┘    └──────────┘    │\n│        │                │                          │\n│        └────────────────┼──────────────────────────┘\n│                         ▼\n│              ┌──────────────────┐\n│              │ Daemon Process   │\n│              │ HTTP Server :9527│\n│              └──────────────────┘\n│                         │\n│        ┌────────────────┼────────────────┐\n│        ▼                ▼                ▼\n│   ┌────────┐      ┌────────┐      ┌────────┐\n│   │ Claude │      │ Gemini │      │ Cursor │\n│   └────────┘      └────────┘      └────────┘\n│\n├─────────────────────────────────────────────────────┤\n│              Web Application                        │\n│              (React/TypeScript)                     │\n│                                                     │\n│  ┌────────────────────────────────────┐           │\n│  │  Smart Daemon Starter              │           │\n│  │  - Auto-detect & Start             │           │\n│  │  - URL Scheme / Extension / HTTP   │           │\n│  └────────────────────────────────────┘           │\n└─────────────────────────────────────────────────────┘\n```\n\n## 📚 组件说明\n\n### 1. Daemon（守护进程）\n\n基于 Go 开发的 HTTP/WebSocket 服务器：\n\n**功能**：\n- CLI 检测（claude、gemini、cursor）\n- CLI 执行（同步和流式）\n- 并发控制和超时管理\n- 安全策略（工作目录白名单）\n- 日志记录\n\n**API 端点**：\n- `GET /health` - 健康检查\n- `GET /api/v1/clis` - 检测 CLI\n- `POST /api/v1/execute` - 执行 CLI（REST）\n- `WS /api/v1/execute/stream` - 执行 CLI（WebSocket）\n- `POST /api/v1/execute/{id}/cancel` - 取消执行\n\n### 2. Tauri Desktop（桌面应用）\n\n基于 Tauri（Rust + React）的桌面应用：\n\n**功能**：\n- 系统托盘图标和菜单\n- 守护进程生命周期管理\n- 实时状态监控\n- 日志查看\n- 设置管理\n- URL Scheme 注册\n\n### 3. Web Integration（Web 集成）\n\n**Smart Daemon Starter（智能启动器）**：\n- 自动检测守护进程\n- 多种启动方式（URL Scheme、Extension、HTTP）\n- 自动重试机制\n- 友好的错误提示\n\n**Daemon Service（守护进程服务）**：\n- HTTP/WebSocket 通信\n- CLI 执行和流式输出\n- 错误处理\n\n## ⚙️ 配置\n\n### Daemon 配置\n\n配置文件位置：`~/.aidesktop/daemon-config.json`\n\n```json\n{\n  \"port\": 9527,\n  \"max_concurrent_executions\": 10,\n  \"execution_timeout\": 300,\n  \"allowed_origins\": [\n    \"*\"\n  ],\n  \"allowed_working_dirs\": [\n    \"/path/to/your/home\"\n  ],\n  \"require_authentication\": false,\n  \"auth_token\": \"\",\n  \"log_level\": \"INFO\"\n}\n```\n\n说明：`9527` 是默认端口，实际运行时以 `~/.aidesktop/daemon-config.json` 中的 `port` 为准。\n\n### 应用配置\n\n配置文件位置：`~/.aidesktop/app-config.json`\n\n```json\n{\n  \"auto_start\": true,\n  \"minimize_to_tray\": true,\n  \"daemon_port\": 9527\n}\n```\n\n如果你修改了 daemon 配置端口，请保持这里的 `daemon_port` 与之同步。\n\n## 🔧 开发\n\n### 前置要求\n\n- **Node.js** 18+\n- **Rust** 1.70+\n- **Go** 1.21+ (用于守护进程)\n- **Tauri CLI** 1.5+\n\n### 构建\n\n```bash\n# 克隆仓库\ngit clone https://github.com/your-repo/ai-desk-desktop.git\ncd ai-desk-desktop\n\n# 安装依赖\nnpm install\n\n# 构建所有组件\n./scripts/build.sh\n\n# 或分别构建：\n\n# 1. 构建守护进程\ncd daemon && go build -o ai-desk-daemon\n\n# 2. 构建前端\nnpm run build\n\n# 3. 构建 Tauri 应用\nnpm run tauri build\n```\n\n### 开发模式\n\n```bash\n# 终端 1: 启动守护进程\ncd daemon\ngo run .\n\n# 终端 2: 启动 Tauri 应用\nnpm run tauri:dev\n```\n\n## 📖 使用示例\n\n### 在 Web 应用中显示守护进程状态\n\n```tsx\nimport { DaemonStatusIndicator } from './components/common/DaemonStatusBanner';\n\nfunction Layout() {\n  return (\n    <div>\n      <Header />\n      <Content />\n      <DaemonStatusIndicator /> {/* 显示在右下角 */}\n    </div>\n  );\n}\n```\n\n### 条件渲染（守护进程可用时）\n\n```tsx\nimport { useDaemon } from './hooks/useDaemon';\n\nfunction AgentPanel() {\n  const { isAvailable, isChecking } = useDaemon();\n\n  if (isChecking) {\n    return <div>Checking daemon...</div>;\n  }\n\n  if (!isAvailable) {\n    return (\n      <div>\n        Daemon not available. \n        <button onClick={() => window.location.href = 'aidesktop://start'}>\n          Launch Now\n        </button>\n      </div>\n    );\n  }\n\n  return <YourAgentInterface />;\n}\n```\n\n## 🐛 故障排查\n\n### macOS Gatekeeper 警告\n\n**问题**：macOS 阻止运行未签名的应用\n\n**解决方案**：\n```bash\n# 移除隔离属性\nxattr -cr \"/Applications/AI Desk Desktop.app\"\n```\n\n### 守护进程未启动\n\n**检查日志**：\n```bash\ntail -f ~/.aidesktop/logs/daemon.log\n```\n\n**手动启动测试**：\n```bash\n/usr/local/bin/ai-desk-daemon --config ~/.aidesktop/daemon-config.json\n```\n\n### Web 应用无法连接\n\n1. 检查守护进程是否运行：\n   ```bash\n   curl http://localhost:<port>/health\n   ```\n\n2. 检查防火墙设置\n3. 确认配置文件中的端口未被占用\n\n## 📄 许可证\n\nMIT License\n\n## 🤝 贡献\n\n欢迎提交 Issues 和 Pull Requests！\n\n## 📧 支持\n\n- GitHub Issues: https://github.com/your-repo/ai-desk-desktop/issues\n- 文档: https://docs.aidesktop.com\n\n---\n\n**Version**: 1.0.0  \n**Maintained by**: AI Desk Team\n","readmeFilename":"README.md"}