Skip to content

Repository files navigation

Claude Pocket

一个原生 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),无需单独安装

填入 API 凭据

编译时会从项目根目录的 apikey.properties 读取默认凭据(该文件已在 .gitignore 中,不会提交)。复制模板并填写:

cp apikey.properties.example apikey.properties
API_BASE_URL=https://api.anthropic.com
API_KEY=sk-your-key-here

这两个值会作为应用内的默认配置,用户仍可在设置界面中随时覆盖。若不填写,应用会以空值启动,需在设置中手动输入。

编译 APK

# Debug 包
./gradlew :app:assembleDebug

# Release 包(需要签名,见下)
./gradlew :app:assembleRelease

产物位于 app/build/outputs/apk/

签名(Release)

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.ktssigningConfigs 中配置。若无 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: ...]] 标记,实际触发频率取决于所用模型。
  • 本项目仅用于学习交流。

License

MIT

About

原生 Android 应用,调用 Anthropic API 与 Claude 流式对话:动态模型、思考深度、联网搜索、记忆系统、历史对话、数据导出。Jetpack Compose。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages