
这个系列前面写了四篇,从开源模型部署到模型调优,从测试安全数据岗位的AI方案到全链路AI实战。但有个问题一直没聊透:你天天用AI干活,用的时候挺爽,用完之后呢?那些踩过的坑、摸索出来的prompt技巧、验证过的方案路径——它们去哪了? 大部分人的答案是:没了。下次遇到类似问题,从头再踩一遍坑。这篇文章就聊聊怎么把AI使用过程中的经验沉淀下来,变成可复用的工程资产。
先说个我自己经历的事。
去年我们团队开始用AI辅助做代码审查,我花了大概两周时间摸索出了一套效果不错的prompt模板——怎么描述审查规则、怎么让模型输出结构化结果、怎么处理不同语言的差异。效果挺好,准确率从60%提到了85%左右。
然后我休了两周年假。
回来之后发现:团队里另外两个同学也在做代码审查的AI方案,各自从零开始摸索prompt,一个用的模板跟我之前调的差不多但少了几个关键约束,另一个干脆走了弯路。我问他们为啥不看我之前的方案,回答是:"你的方案在哪?"
在哪儿呢?在我本地的一个markdown文件里,文件名叫prompt_test_v3_final_真的final.md。
这不是个例。我调研过身边十几个用AI比较多的技术团队,发现一个普遍现象:每个人都在用AI,每个人都在踩坑,但几乎没有人在系统性地沉淀经验。偶有几个好习惯的人,把prompt存在备忘录里、把踩坑记录写在飞书文档里,但这些都是碎片化的、个人化的、不可检索的。
经验在蒸发,而且蒸发得比你想象的快。
别急着写代码,先想清楚要沉淀什么。我把AI使用经验分成四类,每类的沉淀方式不同。
这四类经验有个共同特点:它们都是在真实业务中产生的,不是从文档里抄来的。文档里能查到vLLM怎么安装,但查不到"我们的场景下vLLM的gpu-memory-utilization设0.85最稳定"这种实战经验。这种经验才是真正有价值的,也是最容易丢的。
Prompt是AI使用中最频繁产生、也最容易丢失的经验。大多数人写prompt的方式是:打开聊天框→临时想一段→发出去→效果还行就用→关掉窗口→下次重写。
正确的做法是把有效的prompt当代码来管理——版本控制、结构化存储、可检索复用。下面是我团队在用的一个prompt管理工具:
import os
import json
import hashlib
from datetime import datetime
from pathlib import Path
class PromptRegistry:
"""Prompt模板注册中心——把prompt当代码管"""
def __init__(self, storage_dir="./prompt_registry"):
self.storage_dir = Path(storage_dir)
self.storage_dir.mkdir(parents=True, exist_ok=True)
self.index_file = self.storage_dir / "index.json"
self._load_index()
def _load_index(self):
if self.index_file.exists():
with open(self.index_file, 'r', encoding='utf-8') as f:
self.index = json.load(f)
else:
self.index = {"prompts": []}
def _save_index(self):
with open(self.index_file, 'w', encoding='utf-8') as f:
json.dump(self.index, f, ensure_ascii=False, indent=2)
def register(self, name: str, template: str, metadata: dict):
"""注册一个新的prompt模板"""
prompt_hash = hashlib.md5(template.encode()).hexdigest()[:8]
entry = {
"id": f"prompt_{prompt_hash}",
"name": name,
"template": template,
"metadata": {
**metadata,
"created_at": datetime.now().isoformat(),
"version": metadata.get("version", "1.0.0"),
},
"tags": metadata.get("tags", []),
"scene": metadata.get("scene", "general"),
"model": metadata.get("model", "Qwen2.5-7B"),
"effectiveness_score": metadata.get("effectiveness_score", None),
"notes": metadata.get("notes", ""),
}
# 检查是否已有同名模板
existing = [p for p in self.index["prompts"] if p["name"] == name]
if existing:
# 版本对比:如果内容变了,新增版本记录
old = existing[-1]
if old["template"] != template:
old["metadata"]["superseded_at"] = datetime.now().isoformat()
old["metadata"]["superseded_by"] = entry["id"]
self.index["prompts"].append(entry)
self._save_index()
# 同时保存独立文件(方便git diff)
prompt_file = self.storage_dir / f"{entry['id']}.md"
with open(prompt_file, 'w', encoding='utf-8') as f:
f.write(f"# {name}\n\n")
f.write(f"- **场景**: {metadata.get('scene', 'general')}\n")
f.write(f"- **模型**: {metadata.get('model', 'N/A')}\n")
f.write(f"- **效果评分**: {metadata.get('effectiveness_score', 'N/A')}/10\n")
f.write(f"- **版本**: {metadata.get('version', '1.0.0')}\n\n")
f.write(f"## Template\n\n```\n{template}\n```\n")
if metadata.get("notes"):
f.write(f"\n## Notes\n\n{metadata['notes']}\n")
return entry["id"]
def search(self, query: str = None, tag: str = None, scene: str = None):
"""检索prompt模板"""
results = self.index["prompts"]
# 只看最新版本
latest = {}
for p in results:
if p["name"] not in latest:
latest[p["name"]] = p
elif p["metadata"]["created_at"] > latest[p["name"]]["metadata"]["created_at"]:
latest[p["name"]] = p
results = list(latest.values())
if scene:
results = [p for p in results if p["scene"] == scene]
if tag:
results = [p for p in results if tag in p["tags"]]
if query:
results = [p for p in results
if query.lower() in p["name"].lower()
or query.lower() in p["template"].lower()
or query.lower() in p.get("notes", "").lower()]
return results
def get_by_name(self, name: str):
"""按名称获取最新版prompt"""
matches = [p for p in self.index["prompts"] if p["name"] == name]
if not matches:
return None
return sorted(matches, key=lambda x: x["metadata"]["created_at"])[-1]
# ---- 使用示例 ----
if __name__ == "__main__":
registry = PromptRegistry("./prompt_registry")
# 注册一个代码审查prompt(第一次版本)
v1 = registry.register(
name="code_review_python",
template="你是一个代码审查专家,请审查以下Python代码:\n{code}",
metadata={
"scene": "code_review",
"tags": ["python", "review"],
"model": "Qwen2.5-7B-Instruct",
"effectiveness_score": 6,
"notes": "基础版本,能识别简单问题但漏报较多",
"version": "1.0.0",
}
)
# 调优后注册第二个版本
v2 = registry.register(
name="code_review_python",
template="""你是一位资深Python代码审查专家,精通PEP 8和常见安全漏洞。
请审查以下代码,重点关注:
1. 逻辑正确性和边界条件
2. SQL注入/XSS等安全问题
3. 异常处理是否完善
4. 性能问题(N+1查询、不必要循环)
以JSON格式输出:issues数组,每个issue含severity/file/line/description/suggestion。
代码:
{code}""",
metadata={
"scene": "code_review",
"tags": ["python", "review", "security"],
"model": "Qwen2.5-7B-Instruct",
"effectiveness_score": 8.5,
"notes": "增加结构化输出和安全审查维度,准确率提升明显。temperature=0.1效果最佳",
"version": "2.0.0",
}
)
# 检索
results = registry.search(scene="code_review")
for r in results:
print(f"[{r['metadata']['version']}] {r['name']} - 评分: {r['effectiveness_score']}/10")
print(f" 备注: {r['notes']}")这套系统的核心理念是:prompt是有版本的、可追溯的、可评估的。每次调优都记录下来——改了什么、为什么改、效果变化多少。半年后你回头看,能看到一条清晰的prompt演化路径,这对新人来说价值极大。
prompt不是写完就结束了,它有自己的生命周期。下面这个流程描述了一个prompt从"灵光一现"到"团队标准"的完整过程:

图里有个关键节点是"反复使用3次以上"——这是经验从"偶发灵感"升级为"可沉淀经验"的门槛。低于这个次数的,记在个人笔记里就够了,没必要上升到团队层面。这个判断标准帮我们过滤掉了大量低价值的碎片,让团队标准prompt库保持精炼。
技术人用AI的过程中会踩很多坑——模型不按格式输出、推理速度突然变慢、RAG检索结果不对、微调后效果反而变差……这些坑踩完之后如果不记录,下次自己或者同事还会踩。
但传统的"踩坑记录"写法有个问题:写得太随意,搜索的时候找不到。比如你写了个标题叫"vLLM报错处理",三个月后你搜"vLLM OOM",根本搜不到这条记录。
解决方法是结构化记录——每条踩坑记录都包含固定的字段,方便后续检索和关联:
import json
from datetime import datetime
from pathlib import Path
class IncidentKnowledgeBase:
"""AI工程踩坑知识库"""
# 标准化的故障记录模板
RECORD_TEMPLATE = {
"id": "",
"title": "",
"category": "", # deployment / performance / prompt / rag / finetune / integration
"severity": "", # blocker / major / minor
"symptoms": [], # 表象:报错信息/异常行为
"root_cause": "", # 根因分析
"solution": "", # 解决方案
"solution_code": "", # 解决方案代码(如有)
"environment": { # 环境信息
"model": "",
"framework": "",
"gpu": "",
"os": "",
},
"tags": [],
"related_incidents": [], # 关联的其他记录ID
"created_at": "",
"verified_at": "", # 最后验证有效的时间
"status": "active", # active / outdated / deprecated
}
def __init__(self, storage_path="./ai_incidents_kb.json"):
self.storage_path = Path(storage_path)
if self.storage_path.exists():
with open(self.storage_path, 'r', encoding='utf-8') as f:
self.records = json.load(f)
else:
self.records = []
def add(self, title: str, category: str, severity: str,
symptoms: list, root_cause: str, solution: str,
environment: dict = None, tags: list = None,
solution_code: str = ""):
"""添加一条踩坑记录"""
record = {
"id": f"INC-{len(self.records)+1:04d}",
"title": title,
"category": category,
"severity": severity,
"symptoms": symptoms,
"root_cause": root_cause,
"solution": solution,
"solution_code": solution_code,
"environment": environment or {},
"tags": tags or [],
"related_incidents": [],
"created_at": datetime.now().isoformat(),
"verified_at": datetime.now().isoformat(),
"status": "active",
}
self.records.append(record)
self._save()
return record["id"]
def search(self, query: str = None, category: str = None,
severity: str = None, tags: list = None):
"""多维度检索"""
results = [r for r in self.records if r["status"] == "active"]
if category:
results = [r for r in results if r["category"] == category]
if severity:
results = [r for r in results if r["severity"] == severity]
if tags:
results = [r for r in results if any(t in r["tags"] for t in tags)]
if query:
q = query.lower()
results = [r for r in results
if q in r["title"].lower()
or q in r["root_cause"].lower()
or q in " ".join(r["symptoms"]).lower()
or q in r["solution"].lower()]
return results
def link_incidents(self, id1: str, id2: str):
"""关联两条记录(同类根因/连锁反应)"""
for r in self.records:
if r["id"] == id1 and id2 not in r["related_incidents"]:
r["related_incidents"].append(id2)
if r["id"] == id2 and id1 not in r["related_incidents"]:
r["related_incidents"].append(id1)
self._save()
def _save(self):
with open(self.storage_path, 'w', encoding='utf-8') as f:
json.dump(self.records, f, ensure_ascii=False, indent=2)
# ---- 使用示例 ----
if __name__ == "__main__":
kb = IncidentKnowledgeBase("./ai_incidents_kb.json")
# 记录一个真实踩坑:vLLM显存OOM
inc1 = kb.add(
title="vLLM并发请求时CUDA Out of Memory",
category="deployment",
severity="blocker",
symptoms=[
"vLLM服务启动正常,低并发时运行正常",
"并发请求>10时报错: CUDA error: out of memory",
"nvidia-smi显示显存占用接近100%",
],
root_cause="vLLM默认gpu-memory-utilization=0.9,预分配KV Cache过大。"
"高并发时多个请求的KV Cache叠加,超出显存上限。",
solution="降低gpu-memory-utilization到0.85,同时限制max-num-seqs控制并发批次大小",
solution_code="""python -m vllm.entrypoints.openai.api_server \\
--model Qwen/Qwen2.5-7B-Instruct \\
--gpu-memory-utilization 0.85 \\
--max-num-seqs 16 \\
--max-model-len 4096""",
environment={
"model": "Qwen2.5-7B-Instruct",
"framework": "vLLM 0.6.0",
"gpu": "RTX 4090 24GB",
"os": "Ubuntu 22.04",
},
tags=["vllm", "oom", "gpu-memory", "concurrency"],
)
# 记录另一个关联问题:量化后精度下降
inc2 = kb.add(
title="AWQ量化后模型输出质量明显下降",
category="performance",
severity="major",
symptoms=[
"量化前回答准确率88%",
"AWQ量化后准确率降至72%",
"模型出现格式错乱和重复输出",
],
root_cause="使用的是社区版AWQ量化模型,量化校准数据集与业务领域不匹配。"
"通用校准数据对中文业务场景覆盖不足。",
solution="使用业务领域数据自行做AWQ量化校准,或改用GPTQ量化(对本场景影响更小)",
environment={
"model": "Qwen2.5-7B-Instruct",
"framework": "vLLM 0.6.0 + AutoAWQ",
"gpu": "RTX 4090 24GB",
},
tags=["quantization", "awq", "accuracy", "quality"],
)
# 关联两条记录
kb.link_incidents(inc1, inc2)
# 搜索
results = kb.search(query="显存")
for r in results:
print(f"[{r['id']}] {r['title']}")
print(f" 根因: {r['root_cause'][:60]}...")
print(f" 方案: {r['solution'][:60]}...")这个知识库的关键设计是多维度检索。你可以按类别搜(deployment/performance/prompt)、按严重程度搜(blocker/major/minor)、按关键词搜、按标签搜。当新人遇到问题时,第一反应不是"去问谁",而是"先搜知识库"。
光记录还不够,记录要有人维护、有生命周期。下面是踩坑记录从发现到沉淀的完整流转:

图里有个"定期维护"的环节特别重要。技术栈在变、模型版本在更新,半年前的解决方案可能已经不适用了。如果不定期清理,知识库会变成"历史博物馆"——信息很全但大部分过时了,反而降低了检索效率。我们团队的做法是每季度做一次review,把过时的标记为outdated,把仍然有效的更新verified_at时间。
技术方案落地之后,大家看到的是最终的架构和代码。但为什么选A不选B、为什么用这个参数不用那个参数——这些决策过程是最难传承的隐性知识。
很多团队的技术文档只写了"我们用了vLLM部署Qwen模型",但没写"我们评估了vLLM/TGI/Ollama三个方案,选vLLM是因为PagedAttention在我们的高并发场景下吞吐量高出40%"。后者才是真正有价值的决策信息。
我团队的做法是用一个简单的ADR(Architecture Decision Record)模板来记录每次技术决策:
from datetime import datetime
from pathlib import Path
import json
class DecisionRecord:
"""技术决策记录(ADR)——记录为什么这么做"""
TEMPLATE = """# {title}
## 状态
{status} # proposed / accepted / deprecated / superseded
## 背景
{context}
## 决策
{decision}
## 方案对比
{alternatives}
## 理由
{rationale}
## 影响
{consequences}
## 验证
{validation}
---
- 决策时间: {date}
- 决策参与者: {participants}
- 关联文档: {related}
"""
def __init__(self, storage_dir="./decisions"):
self.storage_dir = Path(storage_dir)
self.storage_dir.mkdir(parents=True, exist_ok=True)
def create(self, title: str, context: str, decision: str,
alternatives: str, rationale: str,
consequences: str = "", validation: str = "",
participants: list = None, related: list = None):
"""创建一条决策记录"""
date_str = datetime.now().strftime("%Y-%m-%d")
file_name = f"{date_str}_{title[:20].replace(' ', '_')}.md"
file_path = self.storage_dir / file_name
content = self.TEMPLATE.format(
title=title,
status="accepted",
context=context,
decision=decision,
alternatives=alternatives,
rationale=rationale,
consequences=consequences,
validation=validation,
date=date_str,
participants=", ".join(participants or []),
related=", ".join(related or []),
)
with open(file_path, 'w', encoding='utf-8') as f:
f.write(content)
return file_path
# 使用示例
dr = DecisionRecord("./decisions")
dr.create(
title="推理框架选型: vLLM vs TGI vs Ollama",
context="""团队需要部署Qwen2.5-7B-Instruct作为内部AI服务的推理引擎。
预估日均调用量5万次,峰值QPS约50,要求P99延迟<3秒。
部署环境: 单台A10(24GB) GPU服务器。""",
decision="选择vLLM作为推理框架",
alternatives="""### 方案A: vLLM
- 优势: PagedAttention技术,高并发吞吐量最优;OpenAI API兼容
- 劣势: 社区相对年轻,偶有bug;配置参数较多
### 方案B: HuggingFace TGI
- 优势: 生态成熟,与transformers库无缝对接;文档完善
- 劣势: 吞吐量比vLLM低约30%(实测);启动慢
### 方案C: Ollama
- 优势: 部署极简,一行命令搞定;适合个人/小团队
- 劣势: 不支持高并发;无 batching;不适合生产环境""",
rationale="""核心决策因素是高并发吞吐量。压测结果:
- vLLM: QPS=50时P99=2.1s,吞吐量1200 tokens/s
- TGI: QPS=50时P99=3.8s,吞吐量850 tokens/s
- Ollama: QPS=10时P99=4.5s,无法满足50 QPS需求
vLLM在吞吐量和延迟上都明显领先,且API兼容OpenAI格式,
团队现有代码迁移成本最低。""",
consequences="""正面:
- 满足性能SLA要求
- API兼容性好,迁移成本低
负面:
- 需要关注vLLM版本更新,偶有breaking change
- 需要专人维护vLLM配置参数调优""",
validation="""部署后压测: QPS=50, P99=2.3s, 吞吐量1150 tokens/s
与预估基本一致,SLA达标。连续运行7天无异常。""",
participants=["架构师A", "后端负责人B", "运维C"],
related=["部署架构设计文档", "vLLM配置参数调优记录"],
)核心在于经验不是存进去就完了,它有生命周期。从产生到采集、从加工到消费、从消费到反馈,形成一个持续运转的飞轮。飞轮转得越快,团队的知识资产就越厚。
AI方案的效果评估是最容易被糊弄的环节。"感觉好多了"、"看起来不错"——这些主观判断没办法传承,也没办法对比。
真正有价值的评估经验是建立基准数据集和量化指标,每次方案迭代都用同一套基准来衡量:
import json
import time
from datetime import datetime
from openai import OpenAI
class EvaluationBenchmark:
"""AI方案效果评估基准"""
def __init__(self, benchmark_path="./benchmarks"):
self.benchmark_path = benchmark_path
self.client = OpenAI(base_url="http://localhost:8000/v1", api_key="empty")
self.benchmarks = self._load_benchmarks()
def _load_benchmarks(self):
"""加载评估数据集"""
path = f"{self.benchmark_path}/golden_set.json"
try:
with open(path, 'r', encoding='utf-8') as f:
return json.load(f)
except FileNotFoundError:
return {"test_cases": []}
def add_test_case(self, question: str, expected_answer: str,
category: str, keywords: list = None):
"""添加评估用例(黄金标准QA对)"""
case = {
"id": f"TC-{len(self.benchmarks['test_cases'])+1:03d}",
"question": question,
"expected_answer": expected_answer,
"category": category,
"keywords": keywords or [],
"added_at": datetime.now().isoformat(),
}
self.benchmarks["test_cases"].append(case)
self._save_benchmarks()
def run_evaluation(self, model_name: str, prompt_template: str = ""):
"""对指定模型+prompt运行评估"""
results = []
for case in self.benchmarks["test_cases"]:
start_time = time.time()
messages = [
{"role": "system", "content": prompt_template or "你是技术助手"},
{"role": "user", "content": case["question"]},
]
try:
response = self.client.chat.completions.create(
model=model_name,
messages=messages,
temperature=0.0,
max_tokens=512,
)
answer = response.choices[0].message.content
latency = time.time() - start_time
# 自动评分:关键词覆盖率
keyword_coverage = self._calc_keyword_coverage(
answer, case.get("keywords", [])
)
results.append({
"case_id": case["id"],
"category": case["category"],
"question": case["question"],
"expected": case["expected_answer"],
"actual": answer,
"keyword_coverage": keyword_coverage,
"latency_ms": round(latency * 1000, 1),
"status": "pass" if keyword_coverage >= 0.6 else "review",
})
except Exception as e:
results.append({
"case_id": case["id"],
"status": "error",
"error": str(e),
})
# 汇总指标
summary = self._summarize(results, model_name)
return summary
def _calc_keyword_coverage(self, answer: str, keywords: list):
"""计算关键词覆盖率"""
if not keywords:
return 1.0
hit = sum(1 for kw in keywords if kw.lower() in answer.lower())
return hit / len(keywords)
def _summarize(self, results: list, model_name: str):
passed = [r for r in results if r["status"] == "pass"]
review = [r for r in results if r["status"] == "review"]
errors = [r for r in results if r["status"] == "error"]
latencies = [r["latency_ms"] for r in results if "latency_ms" in r]
return {
"model": model_name,
"total_cases": len(results),
"passed": len(passed),
"needs_review": len(review),
"errors": len(errors),
"pass_rate": round(len(passed) / max(len(results), 1) * 100, 1),
"avg_latency_ms": round(sum(latencies) / max(len(latencies), 1), 1) if latencies else 0,
"p99_latency_ms": round(sorted(latencies)[int(len(latencies)*0.99)] if latencies else 0, 1),
"evaluated_at": datetime.now().isoformat(),
"details": results,
}
def _save_benchmarks(self):
path = f"{self.benchmark_path}/golden_set.json"
import os
os.makedirs(self.benchmark_path, exist_ok=True)
with open(path, 'w', encoding='utf-8') as f:
json.dump(self.benchmarks, f, ensure_ascii=False, indent=2)
def save_result(self, result: dict, name: str):
"""保存评估结果用于历史对比"""
path = f"{self.benchmark_path}/results/{name}_{datetime.now().strftime('%Y%m%d_%H%M%S')}.json"
import os
os.makedirs(os.path.dirname(path), exist_ok=True)
with open(path, 'w', encoding='utf-8') as f:
json.dump(result, f, ensure_ascii=False, indent=2)
print(f"评估结果已保存: {path}")
# 使用示例
bench = EvaluationBenchmark("./benchmarks")
# 添加黄金标准测试用例(从业务真实QA中精选)
bench.add_test_case(
question="公司的退换货政策是什么?",
expected_answer="7天无理由退货,15天质量问题换货",
category="policy",
keywords=["7天", "无理由", "退货", "15天", "换货"],
)
bench.add_test_case(
question="如何修改收货地址?",
expected_answer="在订单详情页点击修改地址,已发货订单不可修改",
category="operation",
keywords=["订单详情", "修改地址", "已发货", "不可修改"],
)
# 运行评估
result = bench.run_evaluation(
model_name="Qwen/Qwen2.5-7B-Instruct",
prompt_template="你是XX电商平台的客服助手,基于参考资料回答用户问题。",
)
bench.save_result(result, "qwen25_7b_baseline")
print(f"通过率: {result['pass_rate']}%")
print(f"平均延迟: {result['avg_latency_ms']}ms")
print(f"P99延迟: {result['p99_latency_ms']}ms")这套评估体系的价值不在于某一次的评分,而在于历史对比。每次模型升级、prompt调整、RAG优化之后,跑一遍同一套基准,你能清楚地看到效果是变好了还是变差了。这些对比数据本身就是最硬的经验沉淀。
前面讲的都是在"存"经验,但经验存了不用等于没存。最后一步是把验证过的经验提炼成SOP(标准操作流程),让新人能照着做、让工具链能自动化执行。
这个闭环的逻辑是:碎片经验→结构化存储→标准化输出→自动/人工执行→产生新的碎片经验。每一轮循环都让团队的工程资产更厚一层。
几个实操建议:
1. SOP不是写出来的,是跑出来的。 别坐在会议室里编SOP文档,从实际项目中提炼。每次项目做完,问自己三个问题:这次哪些做法要固化成标准?哪些坑要加到检查清单里?哪些决策值得记录成ADR?
2. 能自动化的别靠人记。 Prompt标准库接入工具链、部署检查清单做成CI/CD的自动校验脚本、故障应急手册接入值班告警系统。人是最不可靠的执行环节,能交给机器的就交给机器。
3. 定期清理比持续添加更重要。 知识库不清理就会变成垃圾场。我们团队每季度做一次清理:过时的prompt标记deprecated、不再适用的解决方案标记outdated、已被新方案替代的ADR标记superseded。保持知识库的"信噪比"比增加条目数重要得多。
4. 让经验消费变得无感。 最好的经验沉淀是"你不需要刻意去查,它就在你手边"。比如开发同学提交PR时,AI审查工具自动加载团队标准prompt;值班同学收到告警时,诊断报告自动关联历史相似案例。经验嵌入到工具链里,用的人甚至感觉不到它的存在,但它一直在发挥作用。
写了这么多,核心其实就一句话:经验不是用完就扔的消耗品,是越用越厚的资产。
AI技术迭代太快了,半年前的最佳实践半年后可能就过时了。但有些东西不会过时——你踩坑后总结的排查思路、你做技术选型时的评估框架、你调prompt时的方法论。这些是"渔"不是"鱼",是真正值得沉淀的东西。
团队层面,建议从最小处着手:先建一个Prompt Registry,把大家用得好的prompt存进去。就这么简单的一步,就能让你的团队在AI使用上从"各自为战"变成"经验共享"。等这个习惯养成了,再逐步加上Incident KB、ADR、评估基准。别一上来就想搞个大平台,工具不在多,在于用起来。
个人层面,养成一个习惯:每次用AI解决了一个非平凡的问题,花两分钟记录下来——什么场景、什么问题、怎么解决的、效果如何。这两分钟的投入,未来会以十倍百倍的效率回报你。
AI是工具,经验是资产。工具会更新换代,资产会持续增值。把每天和AI打交道的过程当成经验积累的过程,长期来看,这比任何单一的技术方案都有价值。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。