一个原生 Android 应用,直接调用 Anthropic Messages API 与 Claude 对话。使用 Jetpack Compose 构建,界面风格参考 Claude 官方 App 的暖色调,并自动跟随系统浅色 / 深色主题。
流式对话 · 扩展思考 · 联网搜索 · 记忆系统 · 历史对话 · 数据导出
- 可配置的 API 接入
- 自定义 API Key 与 Base URL(兼容 Anthropic 官方及第三方中转)
- 从
/v1/models动态拉取模型列表并选择(默认claude-sonnet-5) - 在聊天页面点击输入框上方的模型胶囊,即可弹出面板直接切换模型、思考深度、联网搜索
- 思考深度(Extended Thinking):关闭 / 低 / 中 / 高,对应不同的
budget_tokens - 联网搜索开关:向模型提供 Anthropic 内置的
web_search工具,由模型自行决定何时调用(并非应用直接搜索)
- 流畅的对话体验
- SSE 流式输出,边生成边显示
- 消息支持自由选择复制、分享、重试
- 可编辑上一条消息并重新发送
- 思考过程独立折叠展示
- 优雅的动画:抽屉滑入、消息淡入、思考过程展开、发送按钮状态过渡等
- 浅色 / 深色主题:自动跟随系统切换
- 历史对话:左侧抽屉展开查看、切换、删除历史会话,本地持久化
- 模型记忆系统
- 模型可在对话中用
[[memory: ...]]语法自动记录长期记忆 - 记忆会注入后续对话的 system prompt
- 设置中可手动增删改记忆
- 支持导出全部记忆与对话记录为 Markdown
- 模型可在对话中用
- Kotlin + Jetpack Compose(Material 3)
- OkHttp(SSE 流式请求)
- kotlinx.serialization(本地 JSON 持久化)
- DataStore Preferences(设置存储)
- 最低 Android 8.0(API 26),目标 API 35
- JDK 17
- Android SDK(Platform 35、Build-Tools 35.0.0)
- 项目自带 Gradle Wrapper(Gradle 8.13),无需单独安装
编译时会从项目根目录的 apikey.properties 读取默认凭据(该文件已在 .gitignore 中,不会提交)。复制模板并填写:
cp apikey.properties.example apikey.propertiesAPI_BASE_URL=https://api.anthropic.com
API_KEY=sk-your-key-here这两个值会作为应用内的默认配置,用户仍可在设置界面中随时覆盖。若不填写,应用会以空值启动,需在设置中手动输入。
# Debug 包
./gradlew :app:assembleDebug
# Release 包(需要签名,见下)
./gradlew :app:assembleRelease产物位于 app/build/outputs/apk/。
Release 构建会读取根目录的 release.keystore(已忽略提交)。自行生成一个:
keytool -genkeypair -v -keystore release.keystore \
-alias claudepocket -keyalg RSA -keysize 2048 -validity 10000 \
-storepass claudepocket -keypass claudepocket \
-dname "CN=Claude Pocket, O=ClaudePocket, C=CN"密码在 app/build.gradle.kts 的 signingConfigs 中配置。若无 keystore,Release 包将不带签名配置(可改用 debug 签名调试)。
app/src/main/java/app/claudepocket/
├── App.kt # Application,持有全局仓库
├── MainActivity.kt # 导航、抽屉、分享/导出
├── data/
│ ├── Models.kt # 数据模型
│ ├── SettingsRepository.kt # DataStore 设置
│ └── Stores.kt # 对话与记忆的文件持久化
├── net/
│ └── AnthropicClient.kt # SSE 流式客户端 + 模型列表
└── ui/
├── ChatViewModel.kt # 状态与业务逻辑
├── ChatScreen.kt # 聊天界面
├── DrawerContent.kt # 历史对话抽屉
├── SettingsScreen.kt # 设置界面
├── MemoryScreen.kt # 记忆管理
├── Markdown.kt # 轻量 Markdown 渲染
└── theme/Theme.kt # 主题配色
- 界面为参考 Claude 官方 App 的设计再实现,未包含官方独有的登录、订阅等功能。
- 记忆系统依赖模型按提示输出
[[memory: ...]]标记,实际触发频率取决于所用模型。 - 本项目仅用于学习交流。
MIT