131 lines
3.4 KiB
Markdown
131 lines
3.4 KiB
Markdown
# QimingClaw
|
||
|
||
Electron-based desktop client for Qiming Agent, inspired by LobsterAI architecture.
|
||
|
||
## Features
|
||
|
||
- **AI Chat** - Claude models integration via Anthropic API
|
||
- **Skills System** - Extensible skill plugins with permission control
|
||
- **Permission Approval** - Tool execution requires user approval
|
||
- **MCP Servers** - Dynamic MCP server management with China mirrors
|
||
- **Local SQLite storage** - Persistent sessions and messages
|
||
- **Process isolation** - Secure IPC communication
|
||
- **System tray** - Background operation
|
||
- **Application menu** - Native menu bar
|
||
- **Settings** - Configure API keys and model preferences
|
||
- **Session management** - Create, switch, delete chat sessions
|
||
|
||
## Quick Start
|
||
|
||
### Prerequisites
|
||
|
||
- Node.js >= 20
|
||
- npm or pnpm
|
||
|
||
### Install & Run
|
||
|
||
```bash
|
||
cd crates/agent-electron-client
|
||
npm install
|
||
npm run dev
|
||
```
|
||
|
||
### Build for Production
|
||
|
||
```bash
|
||
npm run dist
|
||
```
|
||
|
||
### 发布与 OSS 同步
|
||
|
||
将指定 tag 的 Electron 构建产物同步到阿里云 OSS(用于自动更新等)时,可在本 crate 目录下执行:
|
||
|
||
```bash
|
||
./scripts/sync-oss.sh electron-v0.8.0
|
||
```
|
||
|
||
或从仓库根目录:
|
||
|
||
```bash
|
||
./crates/agent-electron-client/scripts/sync-oss.sh electron-v0.8.0
|
||
```
|
||
|
||
依赖:`gh`(GitHub CLI)、`jq`,且需已 `gh auth login`。脚本会触发 `release-electron.yml` workflow 并轮询直至完成。
|
||
|
||
## Skills & Commands
|
||
|
||
| Command | Description | Requires Permission |
|
||
|---------|-------------|-------------------|
|
||
| `!command` | Run shell command | ✅ |
|
||
| `cat:path` | Read file | ✅ |
|
||
| `fetch:url` | Network request | ✅ |
|
||
| `search:query` | Web search | ❌ |
|
||
| `2+2*3` | Calculator | ❌ |
|
||
|
||
## MCP Servers
|
||
|
||
### Supported MCP Servers
|
||
- Filesystem - File system access
|
||
- Brave Search - Web search
|
||
- GitHub - GitHub API
|
||
- SQLite - Database queries
|
||
- Puppeteer - Browser automation
|
||
- Fetch - HTTP requests
|
||
|
||
### NPM Mirrors (China)
|
||
- 🇺🇸 npmjs.org (default)
|
||
- 🇨🇳 淘宝镜像 (npmmirror)
|
||
- 🇨🇳 腾讯镜像
|
||
- 🇨🇳 阿里云镜像
|
||
|
||
## Architecture
|
||
|
||
```
|
||
src/
|
||
├── main/ # Electron main process
|
||
│ ├── main.ts # Main entry
|
||
│ ├── preload.ts # Context bridge
|
||
│ ├── ipc/ # IPC handlers
|
||
│ └── services/ # Main process services
|
||
│ ├── engines/ # Agent engines
|
||
│ ├── packages/ # Package management (MCP)
|
||
│ └── system/ # System utilities
|
||
├── renderer/ # Renderer process (React)
|
||
│ ├── main.tsx # React entry
|
||
│ ├── App.tsx # Main app
|
||
│ ├── components/ # React components
|
||
│ └── services/ # Renderer services
|
||
│ ├── ai.ts # Anthropic Claude API
|
||
│ ├── skills.ts # Skill system
|
||
│ ├── mcp.ts # MCP management
|
||
│ └── permissions.ts # Permission manager
|
||
└── shared/ # Shared code
|
||
├── constants.ts # Shared constants
|
||
└── types/ # TypeScript definitions
|
||
```
|
||
|
||
## IPC Channels
|
||
|
||
### Session
|
||
- `session:list`, `session:create`, `session:delete`
|
||
|
||
### Message
|
||
- `message:list`, `message:add`
|
||
|
||
### Settings
|
||
- `settings:get`, `settings:set`
|
||
|
||
### MCP
|
||
- `mcp:install`, `mcp:uninstall`, `mcp:start`, `mcp:stop`
|
||
|
||
## Configuration
|
||
|
||
1. Open Settings (⚙️ or Cmd+,)
|
||
2. Enter your Anthropic API Key
|
||
3. Select default model
|
||
4. Adjust max tokens and temperature
|
||
|
||
## License
|
||
|
||
MIT
|