PocketCode 的 AI 在底层是如何工作的
从技术角度了解我们如何设计 PocketCode 的 AI 助手:智能自动补全、上下文感知聊天,以及与应用模块集成的数十个工具。
PocketCode 的 AI 在底层是如何工作的
PocketCode 的人工智能并不是一个粘在编辑器上的通用聊天机器人。它是一个集成系统,能够理解你的项目、你的代码以及你正在使用的模块。在这篇文章中,我们将告诉你我们是如何构建它的。
总体架构
AI 系统包含三个主要层:
1. 智能自动补全(LSP)
自动补全通过 语言服务器协议(LSP)工作。当你输入代码时,编辑器会将上下文(当前文件、光标位置、已打开的文件)发送给 AI 模型,模型随后返回补全建议。
我们的自动补全与众不同之处在于:
- 完整的项目上下文:它不仅看到当前文件,还能看到项目结构、导入和依赖关系
- 优化的模型:我们使用 temperature 0.0 和 topK=1,以获得最高的建议准确性
- 智能缓存:我们按模型(聊天与补全)分离缓存,以避免上下文污染
- 填充中间(Fill-in-the-Middle,FIM):模型会同时接收光标之前和之后的代码,从而提供更精确的建议
2. 上下文感知聊天
AI 聊天不是简单的"提问-回答"。当你提出问题时:
- 当前打开的文件会被分析
- 选中的代码会被提取(如果有选中内容)
- 项目结构会被包含进来
- 所有内容会作为上下文发送给模型
这意味着你可以直接问 "这个函数是做什么的?",而无需复制粘贴代码。
3. 模块工具(工具调用)
这是最强大的部分。AI 可以调用数十个工具来直接与应用的模块交互。以下是一个有代表性的样本:
| 工具 | 作用 |
|---|---|
create_file | 在你的项目中创建文件 |
run_in_terminal | 在集成终端中执行命令 |
db_query | 对数据库运行查询 |
design_list | 列出并读取可视化设计器项目 |
git_status | 检查 Git 状态 |
read_file | 读取项目文件 |
semantic_search | 按语义搜索代码库 |
grep_search | 按模式搜索代码库 |
当你告诉 AI "为用户列表创建一个 ViewModel" 时,它不只是生成代码——它会创建文件、将其放在正确的文件夹中,并更新必要的导入。
安全性
所有执行都会经过严格的验证:
- 命令注入:终端命令会被净化以防注入
- 沙箱机制:命令只能在项目目录内运行
- 超时:每个操作都有时间限制,以防止僵尸进程
- 空安全:所有工具在执行前都会验证空值
支持的模型
PocketCode 通过官方 CLI,以 BYOK(自带密钥)或 OAuth 登录 的模式与多个 AI 提供商协作。PocketCode 不是 AI 提供商:每个请求都直接从设备发送到你选择的提供商,使用量由提供商按其政策计费。
- Gemini(Google)—— API 密钥(BYOK)。默认模型, 非常适合 Kotlin/Android
- OpenAI / Codex(GPT-4、o 系列)—— API 密钥或通过 Codex CLI 进行 OAuth
- Anthropic Claude(Sonnet、Opus、Haiku)—— API 密钥或通过 Claude Code CLI 进行 OAuth
- GitHub Copilot —— 使用你的 GitHub 账户登录(13 个多厂商模型)
- 自定义(兼容 OpenAI) —— 任意
/v1端点:OpenRouter、本地 Ollama 或你自己的服务器 - 本地离线模型 通过 Ollama —— 免费,无需 API 密钥
每个提供商都免费。 PocketCode 从不为模型访问收费;付费的是它自己的工具(Swarmcode、云同步)。
用户在 Settings > API Keys 中连接他们的账户或 API 密钥。
即将推出
我们正在开发:
- RAG(检索增强生成):让 AI 在回答之前搜索 Android 和 Kotlin 文档
- 多文件编辑:在单次操作中编辑多个文件
- 提示模板:用于常见任务的可复用提示模板
结语
PocketCode 的 AI 不是一个外挂组件——它是开发体验中不可分割的一部分。每个应用模块(终端、数据库、设计器、Git)都是相互连接的,AI 可以协调它们全部。
你可以在我们的 状态文章 中查看完整的开发状态。
AI 助手