跳到正文
GitHub·· 8 天前AI 评分20

Aistee:用 Kotlin Multiplatform 在一个客户端里聚合多个 AI 服务

travnie/aistee

AI 导读

Aistee 是一个基于 Kotlin Multiplatform 的早期原型工作区,目标是在一个客户端里使用多个 AI 服务,而不必为每家服务商单独安装应用,Android 是首个客户端,可移植的服务商与领域逻辑放在共享 KMP 核心中。

正文

DeepWiki DOI

Kotlin Multiplatform workspace for using multiple AI services from one client instead of installing a separate app for each provider.

Status: early prototype. Android is the first client; portable provider/domain logic lives in the shared KMP core.

Rolling Android build: download the signed APK. The asset is replaced after each successful release build from main.

What it is

Aistee combines:

  • account-backed WebViews with persistent provider sessions,
  • native/API chat and compare for direct providers and OpenAI-compatible gateways,
  • local tooling such as profiles, prompts, skills, Project Library and Bench integrations.

Android also accepts shared text, images and application files. Web content is staged for the selected provider and file delivery requires explicit confirmation.

Provider support matrix

Full means the Aistee integration is implemented; provider-side login/page changes can still break an embedded web client. Partial means a known embedded-flow limitation remains.

Provider / surface Status Authentication Uploads Activity Notes
ChatGPT Web Full Provider WebView Yes Generating + unread Persistent session; mobile/desktop mode; Codex Cloud shortcut
Claude Web Full Provider WebView Yes Generating + unread Persistent session
Gemini Chat Web Partial Fresh Google OAuth may reject embedded user-agents Yes Generating + unread Existing sessions work; embedded OAuth is provider-limited
DeepSeek Web Full Provider WebView Yes Generating + unread Persistent session
Kimi Web Full Provider WebView Yes Generating + unread Persistent session
Mistral Vibe Web Full Provider WebView Yes Generating + unread Provider-scoped activity tracking
Qwen Web Partial Provider sign-in surface; embedded flow unverified Documented; embedded unverified Not yet Needs device verification
Microsoft Copilot Web Partial Microsoft auth in-provider; other embedded methods unverified Documented; embedded unverified Not yet Provider-owned navigation is bounded in-WebView
Z.ai Web Partial Provider sign-in surface; embedded flow unverified Page-driven Not yet Needs device verification
Grok Web Partial Provider sign-in surface; embedded flow unverified Documented; embedded unverified Not yet Needs device verification
Character.AI Web Partial Provider sign-in surface; embedded flow unverified Documented; embedded unverified Not yet Needs device verification
Venice Web Partial Provider sign-in surface; embedded flow unverified Documented; embedded unverified Not yet Needs device verification
Meta AI Web Partial Provider sign-in surface; embedded flow unverified Not verified Not yet Needs device verification
OpenRouter Free Native gateway API key N/A Native request state openrouter/free; excluded from default All Models compare
AIHubMix Free Native gateway API key N/A Native request state Zero-cost text models; excluded from default All Models compare
Vercel AI Gateway Native gateway API key N/A Native request state Live compatible text-model catalog; account/key budgets remain the spend boundary

Direct Gemini, OpenAI and Claude chats use provider-scoped history and cancellable streaming. Gateway catalogs refresh live; All Models uses direct providers only, avoiding duplicate aggregator routes.

Provider-specific verification and API research live in docs/provider-capability-research.md. Native transport details and account-plan work live in docs/provider-runtime.md.

Runtime boundaries

  • Provider account sessions stay provider-owned. Aistee does not copy passwords, cookies, OAuth tokens or browser sessions.
  • WebViews are pooled and evicted under memory pressure; provider tweaks are static, host-scoped and bundled with the app.
  • Diagnostics exclude page text, full URLs, form values, file names and credentials.
  • Aistee has no account wall. Local chats, projects, files, tools, settings and backup/import/export remain usable without an Aistee cloud account.
  • Native API keys are encrypted at rest with an Android Keystore-backed AES-GCM key and are never logged or exported.
  • trvny/.ai remains the canonical portable profiles/instructions/skills source. Aistee consumes it through an explicit boundary instead of vendoring a copy.

Architecture

shared (Kotlin Multiplatform)
├── provider/model registry
├── profile + prompt tools
└── portable domain logic

platform clients
├── Android app
│   ├── WebView host + file chooser
│   ├── provider tweaks / mobile performance
│   └── Custom Tabs / intents / Keystore
├── Desktop app (planned)
└── iOS app (planned)

Backends are optional. Add one only when a feature requires server-side state or execution.

Current focus

  • verify embedded sign-in, upload and activity probes for the newer Web providers,
  • add browser-backed auth handoff only where a provider exposes a verifiable contract,
  • extend Codebench handoffs while keeping Streambench a companion UI,
  • continue measured Material 3 Adaptive / large-screen UX work,
  • keep security and privacy as release gates across storage, WebViews, tools, exports, widgets and notifications.

Docs

Development

Android keeps minSdk 26; current compile/target SDK levels live in app/build.gradle.kts. Portable logic belongs in shared; platform APIs stay in platform modules/source sets. Long-chat responsiveness, reliable uploads and provider isolation are product constraints, not optional polish.

License

ISC, see LICENSE.

📰 Mininewsy

💬 Cytat z szuflady

❝The business schools reward difficult complex behaviour more than simple behaviour, but simple behaviour is more effective. — Warren Buffett❞

来源:GitHub · github.com