AI 时代软件工程师的核心开发技能
一、认知层:重构”工程师价值观”
1.1 核心认知转变
AI 不会取代工程师,但会用 AI 的工程师会取代不会用的工程师
更进一步的理解是——能用 AI 放大判断力的工程师,才是真正稀缺的。
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
1.2 不可被替代能力的三层结构
第一层:AI 易替代
- 样板代码生成
- 简单 CRUD 实现
- 已知算法实现
- 文档翻译整理
第二层:AI 辅助,人主导(重点发展方向)
- 架构设计
- 性能调优
- 系统排障
- 技术选型
第三层:AI 基本无法替代(终极护城河)
- 组织与人际关系处理
- 跨团队利益协调
- 创新性问题定义
- 业务战略判断
核心策略:将精力集中在第二、三层,用 AI 自动化第一层。
二、技能层:必须掌握的七大核心能力
2.1 Prompt Engineering —— 与 AI 协作的语言
这是 AI 时代最基础也最被低估的技能。
好 Prompt 的五要素:
1. 角色设定 (Role) —— "你是一名 Android 架构师"
2. 上下文 (Context) —— "项目是一个千万级 DAU 的直播 App"
3. 任务 (Task) —— "设计消息系统的架构"
4. 约束 (Constraints) —— "不能引入新的第三方库,需要兼容 API 21+"
5. 输出格式 (Format) —— "以 Markdown 格式输出,包含时序图"
进阶技巧:
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
实践要点:
-
把高质量 Prompt 沉淀成个人 Prompt 库 -
在 Cursor 中配置 .cursorrules,让 AI 理解项目约束 -
每次使用 AI 后主动 review,记录 AI 的错误模式
2.2 AI Agent 开发能力 —— 2026 最核心爆点
2.2.1 Agent 的本质
Agent 不是单次问答,而是一个循环推理 + 工具调用 + 自主决策的闭环系统:
用户目标
↓
LLM 规划(Plan)
↓
工具调用(Tools)← 搜索 / 代码执行 / 数据库 / API
↓
观察结果(Observation)
↓
继续规划 or 输出最终答案
核心范式是 ReAct(Reasoning + Acting):
Thought: 我需要先查用户余额
Action: query_balance(user_id=123)
Observation: 余额 500 元
Thought: 余额充足,可以下单
Action: create_order(...)
2.2.2 主流框架对比
|
|
|
|
|---|---|---|
| LangGraph |
|
|
| CrewAI |
|
|
| AutoGen
|
|
|
| Dify |
|
|
2.2.3 LangGraph 核心代码示例
from langgraph.graph import StateGraph, END
from typing import TypedDict
classAgentState(TypedDict):
messages: list
next_action: str
# 定义图结构
graph = StateGraph(AgentState)
graph.add_node("planner", planner_node)
graph.add_node("tool_executor", tool_executor_node)
graph.add_node("responder", responder_node)
# 条件边控制流程
graph.add_conditional_edges(
"planner",
should_use_tool, # 判断函数
{"tool": "tool_executor", "done": "responder"}
)
graph.add_edge("tool_executor", "planner") # 执行完工具回到规划
graph.add_edge("responder", END)
app = graph.compile()
2.2.4 实践路径
Step 1:用 Dify/Coze 搭建一个能跑通的 Agent(感受完整流程)
↓
Step 2:用 LangGraph 实现同样功能(理解底层控制流)
↓
Step 3:用 MCP 扩展 AI 工具能力边界(接入自定义工具)
↓
Step 4:构建多 Agent 系统,解决复杂业务问题
2.3 MCP(Model Context Protocol)—— 工具扩展的标准协议
2.3.1 核心概念
MCP 是 Anthropic 发布的开放标准协议,解决”LLM 如何标准化地访问外部工具和数据”的问题。
┌─────────────┐ MCP Protocol ┌──────────────────┐
│ MCP Client │ ◄──────────────────► │ MCP Server │
│(Claude/Cursor)│ │ (你的业务工具) │
└─────────────┘ └──────────────────┘
MCP Server 暴露三类能力:
|
|
|
|
|---|---|---|
| Tools |
|
|
| Resources |
|
|
| Prompts |
|
/analyze-crash
|
2.3.2 Android 工程师的 MCP 实践思路
构建 Android 开发专属 MCP Server:
- Tool: adb_logcat() → 直接读取设备日志
- Tool: analyze_crash() → 解析 ANR/Crash 堆栈
- Tool: run_lint() → 触发静态代码分析
- Resource: build_output → 读取 Gradle 构建产物信息
这将成为区分是否真正掌握 AI 集成能力的关键指标。
2.3.3 MCP Server 最简实现
from mcp.server import Server
from mcp.server.models import InitializationOptions
import mcp.types as types
app = Server("android-dev-tools")
@app.list_tools()
asyncdefhandle_list_tools() -> list[types.Tool]:
return [
types.Tool(
name="get_logcat",
description="获取 Android 设备实时日志",
inputSchema={
"type": "object",
"properties": {
"filter": {"type": "string", "description": "日志过滤标签"}
}
}
)
]
@app.call_tool()
asyncdefhandle_call_tool(name: str, arguments: dict):
if name == "get_logcat":
# 执行 adb logcat 命令
result = subprocess.run(
["adb", "logcat", "-d", "-s", arguments.get("filter", "*")],
capture_output=True, text=True
)
return [types.TextContent(type="text", text=result.stdout)]
2.4 RAG(检索增强生成)—— 知识库问答系统
2.4.1 核心原理
用户提问
↓
文本向量化(Embedding)
↓
检索向量数据库(最相关的 Top-K 文档块)
↓
将检索结果注入 Prompt
↓
LLM 基于上下文生成准确答案
2.4.2 RAG 解决的核心问题
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
2.4.3 为什么移动端工程师也需要懂 RAG
-
企业内部知识库问答(接入公司文档、代码规范) -
App 内置 AI 助手功能的实现 -
将自己的技术文档体系构建成可问答的知识库
2.4.4 快速上手路径
Step 1:用 LlamaIndex 或 LangChain 处理文档(分块、向量化)
Step 2:存入 ChromaDB 或 FAISS 向量数据库
Step 3:实现检索 + 注入 + 生成完整流程
Step 4:优化检索策略(混合检索、重排序)
# RAG 核心代码(LlamaIndex 示例)
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
# 加载文档(你的工作区 md 文件)
documents = SimpleDirectoryReader("./").load_data()
# 构建索引
index = VectorStoreIndex.from_documents(documents)
# 查询
query_engine = index.as_query_engine()
response = query_engine.query("Android Binder 的核心原理是什么?")
print(response)
2.5 端侧 AI 推理 —— 移动端工程师的核心壁垒
2.5.1 技能树
端侧 AI 推理能力
├── 模型格式理解
│ ├── ONNX(跨框架通用格式)
│ ├── TFLite(Google 移动端格式)
│ └── CoreML(Apple 生态)
├── 推理框架选型
│ ├── MNN(阿里,性能极强,国内主流)
│ ├── ONNX Runtime(微软,跨平台通用)
│ ├── TFLite(Google,Android 官方)
│ └── MediaPipe(Google,CV 任务专用)
├── 硬件加速
│ ├── NNAPI(Android 统一硬件加速 API)
│ ├── NPU(高通 Hexagon、华为 NPU)
│ ├── DSP(数字信号处理器)
│ └── GPU(OpenCL / Vulkan)
├── 模型优化
│ ├── 量化(FP32 → INT8/FP16,体积缩小 4x)
│ ├── 剪枝(去除冗余参数)
│ └── 蒸馏(大模型指导小模型训练)
└── 性能调优
├── 推理延迟(Latency)
├── 内存占用(Memory Footprint)
└── 功耗(Power Consumption)
2.5.2 框架选型决策树
需要最高性能 & 国内项目?
→ MNN(阿里,在快手/抖音/淘宝广泛使用)
需要跨平台(Android + iOS + PC)?
→ ONNX Runtime(微软,生态最广)
跑 TensorFlow 训练的模型?
→ TFLite(Google 官方支持)
做 CV 类任务(人脸/手势/姿态检测)?
→ MediaPipe(开箱即用的 Pipeline)
2.5.3 ONNX Runtime Android 集成示例
// 添加依赖
// implementation("com.microsoft.onnxruntime:onnxruntime-android:1.17.0")
classONNXInferenceEngine(privateval context: Context) {
privatelateinitvar session: OrtSession
privateval ortEnvironment = OrtEnvironment.getEnvironment()
funloadModel(modelPath: String) {
val sessionOptions = OrtSession.SessionOptions().apply {
// 启用 NNAPI 硬件加速
addNnapi()
// 设置线程数
setIntraOpNumThreads(4)
}
session = ortEnvironment.createSession(modelPath, sessionOptions)
}
funinference(inputData: FloatArray, inputShape: LongArray): FloatArray {
val inputTensor = OnnxTensor.createTensor(
ortEnvironment,
FloatBuffer.wrap(inputData),
inputShape
)
val result = session.run(mapOf("input" to inputTensor))
return (result[0].value as Array<FloatArray>)[0]
}
}
2.5.4 性能基准测试清单
□ 冷启动推理延迟(首次加载 + 推理总时间)
□ 热推理延迟(模型已加载后的单次推理时间)
□ 峰值内存占用(推理过程中)
□ CPU vs GPU vs NPU 各硬件的延迟对比
□ INT8 量化 vs FP32 精度损失评估
□ 低端机(骁龙 665)vs 高端机(骁龙 8 Gen 3)性能差异
2.6 Agentic Coding / Vibe Coding —— 高效 AI 协作范式
2.6.1 两种范式的区别
|
|
|
|
|
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2.6.2 Agentic Coding 的核心工作流
1. 定义目标(What)
"实现一个支持断点续传的文件下载模块"
↓
2. 描述约束(How not)
"不引入新依赖,基于 OkHttp,需要兼容 API 24+"
↓
3. 让 AI 规划步骤(Plan)
"请先列出实现步骤和关键技术点"
↓
4. 逐步执行与验证(Execute & Verify)
每个步骤完成后,人工验证正确性
↓
5. 迭代修正(Iterate)
"第三步的实现有问题,因为..."
2.6.3 Cursor 高级用法
# 必须掌握的 Cursor 功能
@codebase → 让 AI 理解整个代码库
@file → 引用特定文件作为上下文
@docs → 引用外部文档
@web → 实时搜索最新信息
Composer 模式 → 多文件协同修改
Chat 模式 → 代码库问答与分析
.cursorrules → 项目级 AI 行为规范配置
MCP 集成 → 扩展 AI 工具能力
2.6.4 .cursorrules 配置示例(Android 项目)
# Android Project Rules
## 技术栈约束
- 语言:Kotlin(禁止新增 Java 文件)
- 异步:Kotlin 协程(禁止使用 RxJava)
- UI:Jetpack Compose(禁止新增 XML 布局)
- 架构:MVI + Clean Architecture
- 最低 SDK:API 24
## 代码规范
- 所有公共 API 必须添加 KDoc 注释
- ViewModel 不得持有 View 引用
- Repository 层不得直接调用 UI 相关 API
- 网络请求必须有超时和错误处理
## 命名规范
- 文件名:PascalCase
- 变量名:camelCase
- 常量:UPPER_SNAKE_CASE
- 协程 Flow 变量以 Flow 结尾
## 测试要求
- 核心业务逻辑必须有单元测试
- ViewModel 逻辑必须可测试
2.7 系统架构设计能力 —— AI 无法替代的核心壁垒
2.7.1 为什么架构是最坚实的护城河
架构决策依赖以下 AI 永远无法独立掌握的信息:
✗ 团队现状与组织结构(AI 不知道)
✗ 业务约束与监管要求(AI 不了解)
✗ 历史包袱与迁移成本(AI 看不到全局)
✗ 团队技能储备(AI 无法评估)
✗ 产品未来方向(AI 无法预测)
2.7.2 必须掌握的架构能力矩阵
|
|
|
|
|---|---|---|
| 架构模式 |
|
|
| 端侧架构 |
|
|
| 系统设计 |
|
|
| 架构原则 |
|
|
| 技术债管理 |
|
|
2.7.3 架构能力的培养方法
1. 阅读优秀开源项目的架构设计(而不只是代码)
2. 系统性学习高并发/高可用系统设计(推荐:DDIA 书籍)
3. 参与真实项目的架构评审,学习他人决策思路
4. 记录每次架构决策的背景、权衡、结果(架构日志)
5. 复盘线上故障,分析架构层面的根因
三、实践层:具体行动路线图
阶段 1:AI 工具深度集成
□ 100% 使用 Cursor 进行日常编码,掌握 @codebase、Composer 等高级用法
□ 整理个人 Prompt 模板库(至少 10 个高频场景)
□ 为当前项目配置 .cursorrules
□ 尝试让 AI 完成一次完整的功能开发任务(从需求到单元测试)
□ 每次使用 AI 后主动 review,记录错误模式
阶段 2:AI 应用开发能力
□ 使用 LangGraph 实现一个简单的 Android 开发辅助 Agent
□ 搭建基于工作区技术文档的 RAG 知识库问答系统
□ 开发一个 MCP Server,扩展 Cursor 的 Android 开发能力
□ 完成一个端侧 AI 推理 Demo(用 ONNX Runtime 或 MNN 跑一个模型)
□ 在 Android 项目中集成一个 AI 功能(如:智能搜索 / 内容理解)
阶段 3:建立专精壁垒
□ 在端侧 AI 推理方向深度专精(选择 MNN 或 ONNX Runtime 深入研究)
□ 构建一个完整的 Android AI 功能(含模型优化、硬件加速、性能调优)
□ 参与一个 AI 相关的开源项目(贡献真实有价值的 PR)
□ 输出 5 篇以上有深度洞察的技术文章
□ 在团队中推广 AI 工程化实践,成为 AI 工具布道者
四、警惕的反模式
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
五、AI 时代工程师的核心公式
顶级工程师 =
深厚技术根基(不可省略,是判断力的来源)
× AI 工具放大效应(效率 10x 提升)
+ 系统架构能力(差异化竞争壁垒)
+ 跨领域协作能力(不可被替代的人类价值)
+ 持续学习适应能力(长期竞争力)
最核心的一句话:AI 不会取代工程师,但会用 AI 的工程师会取代不会用的工程师。
更进一步:能用 AI 放大自己判断力的工程师,才是真正稀缺的。
夜雨聆风