薪火所有项目背后只有5 个核心概念:prompt、context、skill、agent、harness。 理解了它们 —— 你做项目时就不再是"照着步骤抄",而是知道为什么。 每个概念都按 8–10 / 11–14 / 15+ 三个层次讲,附带"三种品质 × 这个概念"对照 —— 看同一件工具,热爱驱动 / 同理心驱动 / 审美驱动的人会做出多么不同的东西。
所有 AI 互动的第一公里。你怎么"问",决定 AI 给你什么。 这不是"魔咒" —— 是一套可学、可改、可重复使用的方法。
"会写 prompt" = 会让 AI 给出你真正想要的东西,而不是平均水平的东西。
"prompt" = 你跟 AI 说的那段话。
"我超爱恐龙!"
"假装你是一只 9 岁的恐龙小专家,特别迷霸王龙的咬合力。讲一个霸王龙吃晚餐的故事。"
"我想给弟弟讲故事"
"假装你是恐龙小专家,给我 5 岁的弟弟讲一个霸王龙的故事,要简单、要有声音、不要吓到他。"
"我想要一个真的好故事"
"假装你是恐龙小专家。先写三个不同开头:神秘风、搞笑风、温柔风。我选一个让你接着写。"
"prompt engineering" = 写 + 改 + 测试 + 收藏好 prompt 的系统方法。它有 4 个常用招式。
你是一个 9 岁的恐龙迷小助手。 【任务】回答用户的恐龙问题。 【规则】 1. 只回答恐龙相关的问题。其他都说"这个我不会"。 2. 用 9 岁孩子能懂的话 —— 不要专业术语。 3. 如果不确定,老老实实说"我不确定"。 4. 输出格式:先一句话回答,然后一句"我为什么这么说"。 【例子】 问:霸王龙真的会跑吗? 答:能跑,但跑不快 —— 大概像我们快跑那么快。 我这么说是因为霸王龙腿很长但身体太重,跑快了腿会断。 问:今天天气怎么样? 答:这个我不会,我只懂恐龙。 【现在开始回答】
"我对恐龙懂得最多"
花一周整理 50 条只有自己知道的恐龙细节,做出全网最不"百度"的小专家。深度是它的招牌。
"我想给奶奶用"
prompt 里特别强调"奶奶视力不好、答案要短、不要专业词"。同样一个工具,她奶奶用着舒服。
"我要它读起来像一个真的迷"
在 examples 里精挑 3 段"听起来真有人味"的回答。AI 模仿的不只是事实 —— 是那种语气。
Prompt engineering 是 AI 工程的"前端"。核心动作:明确目标 → 设计模板 → 跑测试集 → 量化指标 → 迭代。它不是"凭感觉"。
.md 文件放进 git,每次改动都有 diff。# 任务定义 你是 [DOMAIN] 领域的助手。你的目标是 [GOAL]。 # 规则(按重要性降序) 1. [HARD RULE 1 — 必须遵守,违反就拒答] 2. [HARD RULE 2] 3. [STYLE RULE 1 — 偏好但可灵活] # 工具 你可以调用以下工具: - search_docs(query: str) → 返回相关文档片段 - run_code(code: str) → 执行 Python 代码 # 思考过程(强制) 对每个用户输入,按如下格式输出: <thinking> - 用户真实意图:... - 我需要的信息:... - 调用工具的计划:... </thinking> <answer> [结构化的最终答案] </answer> # 示例 [3 个 input → output 的完整示例] # 现在开始
"我要做我领域最好的"
优化领域知识深度 —— retrieval recall@5、专家盲评通过率。把 prompt 调成"懂行人才能写出"的样子。
"我要它对真用户友好"
优化用户体感 —— 用户重复使用率、SUS 评分、误操作率。把 prompt 调成具体那群人用着不别扭。
"我要它有一致的'味道'"
优化风格一致性 —— LLM-as-judge 风格分、人类盲评分布。让 AI 输出永远像同一个"它"。
AI 不只看你刚才说的那一句 —— 它看"上下文窗口"里所有的字。 什么进、什么出、按什么顺序进 —— 这是 prompt engineering 的下一层, 也是 2024-2025 年 AI 工程最热的话题。
不只是"问什么",而是"AI 看到什么"—— 包括它的角色设定、它的工具列表、它的记忆、它当前的对话历史。
每次你和 AI 说话,它能"记住"的字数是有限的 —— 像一个能装 5 个苹果的盘子。
每次开始一个长聊天,把最重要的事写在第一句话。比如:
"我是 9 岁。我在做一个关于恐龙的小报告。 请用我能懂的话回答下面的问题。 现在开始第一个问题:……"
这样后面就算聊很久,AI 还是知道你是 9 岁、在做恐龙报告。
"上下文工程"不只是"prompt 写好",而是设计 AI 看到的整个"信息环境"。每段对话 AI 看到的东西包括:
这些加起来不能超过模型的"上下文窗口"。Qwen 2.5 大约能装 32k token(约 5 万汉字),通义千问可达 128k。
[system prompt] 你是奶奶(72 岁北京老人)的口吻…… [动态注入:从用户的问题里识别"哪道菜"] 当前讨论的菜:糖醋排骨 背景资料: - 食材:… - 步骤:… - 奶奶诀窍:… [历史对话] [最近 5 轮] [当前用户输入] "火候到底怎么判断?"
Context engineering 是 2025 年 AI 应用工程的核心。大模型本身能力越来越接近 —— 真正决定产品好坏的是:你给模型看的哪些东西、按什么顺序、多新鲜。
def build_context(user_query, conversation_id):
# 1. 检索相关知识 (RAG)
docs = retriever.search(user_query, top_k=8)
docs = reranker.rerank(user_query, docs, top_k=3)
# 2. 加载长期记忆
memory = memory_store.get(user_id)
user_facts = summarize(memory, max_tokens=500)
# 3. 装载历史,必要时压缩
history = conversation_store.get(conversation_id, last=10)
if token_count(history) > 4000:
history = compress_history(history) # 用小模型总结
# 4. 构造完整 context
context = {
"system": SYSTEM_PROMPT,
"user_profile": user_facts,
"knowledge": docs,
"history": history,
"tools": TOOL_DEFINITIONS,
"output_format": OUTPUT_SCHEMA,
"current_query": user_query,
}
# 5. 严格控制总 token
assert token_count(context) < MODEL_CONTEXT_LIMIT * 0.8
return context
"技能"(skill)= 把一个 AI 固化成"懂某件事"的小专家的打包格式。 技能工坊整个学院都是教这个。
一段精心打磨的 system prompt + 几个例子 + 必要的背景资料 = 一个可以反复使用、给别人用的 AI 小专家。
"技能"就是给 AI 装上"懂这件事"的能力。
身份证:你是 9 岁孩子小美的恐龙小专家。 笔记本: - 霸王龙最重 9 吨,相当于一辆小卡车 - 三角龙的角是用来撞的,不是装饰 - 蛇颈龙不是恐龙,是海里的爬行动物 - ...(一共 50 条) 样题: 问:霸王龙能跑多快? 答:不太快 —— 大概像我们快跑那么快。它太重了。 问:今天天气怎么样? 答:这个我不会,我只懂恐龙。
"技能"在 2024-2025 是 AI 公司主推的产品形态:DeepSeek Skills、智谱清言 Assistants、Kimi Agents、通义千问 Tools —— 都是同一个思路。
# 奶奶饺子专家(v1.2) ## Identity 你是文文奶奶(72 岁,山东人)的口吻 AI 助手。 你只回答关于奶奶包饺子的问题。 ## Knowledge [50 条只有奶奶才知道的细节] - 和面:水温要 38℃,不烫手 - 馅料:肉和菜的比例是 6:4,不是 5:5 - 月牙边:捏 8 下,最后一下要"封口" - ... ## Examples 问:奶奶,水温多少合适? 答:嗯…… 你试试,38 度差不多 —— 手放进去不烫但能感觉到温。 水太凉了和不开,太热了面就死了。 问:明天天气怎么样? 答:哎呀这个我不懂,奶奶我就懂包饺子。 ## Boundaries - 只答饺子相关 - 不确定就说"我不太确定,你问问别人" - 永远不替用户做决定("放多少糖是看你口味") ## Tone - 用奶奶的话:"嗯……"、"哎呀"、"你听我说"、"差不多" - 不用书面语 - 鼓励对方多问"为什么"
"我懂得最多"
Knowledge 那一段写到500 条。其他人懒得收集的细节,他记得清清楚楚。这是独特性的源头。
"我为某个具体人做"
Boundaries 那一段写得最细 —— "如果用户是老人,先放慢语速"、"如果是小孩,加上 emoji"。用户体感是它的招牌。
"我要它读起来对"
Tone 和 Examples 那段精挑细选 —— 5 个例子里每一个都是"标杆"。AI 模仿出来的气质就是这种。
进阶版的 skill = 一个工程化的、可测试的、可演化的资产。它在仓库里有自己的目录,有版本号,有测试集,有 CI。
my-skill/ ├── README.md # 用户看的简介 ├── skill.md # system prompt(git-tracked,可 diff) ├── knowledge/ # 知识库(用 RAG 检索) │ ├── source-1.md │ └── source-2.md ├── examples/ # few-shot 示例 │ ├── good-1.json │ └── good-2.json ├── tests/ # 测试集 │ ├── functional.json # "应该答对"的 30 个题 │ ├── boundary.json # "应该拒答"的 20 个题 │ └── style.json # "应该用这种语气"的 10 个题 ├── eval/ │ ├── judge.md # LLM-as-judge 的 prompt │ └── metrics.py # 计算准确率/一致性/风格分 ├── .github/workflows/ │ └── skill-ci.yml # 每次 push 自动跑测试 └── CHANGELOG.md # 每次升级记录
tests/functional.json,至少 20 个 input → 期望 output 的对子。
用本地 Ollama 跑一遍,输出准确率。这就是 production-ready 的 skill 第一步。
"智能体" = 会自己做事的 AI。 它不止聊天 —— 它有"目标"、有"工具"、能"决定下一步"。 2025 年 AI 工业最热的方向。
能"做事"的 AI = 一个 LLM + 一组工具 + 一个"我接下来该干什么"的循环。
普通 AI 跟你聊天 —— 你问一句、它答一句。
智能体不一样:你给它一个目标,它自己想办法、自己做、自己决定下一步。
它能"做事" —— 也意味着它能做错事。 所以好的智能体一定要懂:
智能体的核心循环叫 ReAct(Reason + Act):
循环开始: 1. 想(Reason):"我现在该干什么?" 2. 做(Act):调用一个工具(搜索 / 计算 / 发邮件 / ...) 3. 看结果 4. 回到第 1 步 —— 直到目标达成 OR 我决定停下来问人 循环结束。
| 维度 | 普通 AI 聊天 | 智能体 |
|---|---|---|
| 输入 | 一个问题 | 一个目标 |
| 输出 | 一段文字 | 一连串动作 + 最终结果 |
| 能用的工具 | 无 | 搜索、计算、读写文件、发消息…… |
| 耗时 | 秒级 | 几十秒到几小时 |
| 风险 | 说错话 | 做错事 —— 不可逆 |
"我对'省钱'有研究"
智能体懂各种比价技巧:优惠券叠加、价格史、评论筛选。它在"买得聪明"这件事上深。
"我妈妈忙、视力不好"
智能体把"红线表"做得最细 —— 涉及健康/钱/隐私的事一定先问,确认时用大字。她妈妈用着安心。
"我要它做事'有品'"
智能体推荐时讲究选什么、不选什么的逻辑。同样东西它推 3 个选项 + 解释为什么这个最值。
2025 年的智能体格局:从单 agent 演进到 multi-agent,从 ReAct 演进到结构化的 plan-then-execute,从手写到框架化。
AI 时代最稀缺的能力:知道 AI 给的东西"够不够好",并把这个判断系统化。 Harness = LLM-as-judge + 评分标准 + 回归测试。
把"我觉得这个好"变成"AI 也能照着判的标准",然后用一个判官 AI 自动给输出打分。
"判官 AI"就是 —— 让一个 AI 帮你看另一个 AI 答得好不好。
这是关于"恐龙小专家答得好不好"的判官规则: 1. 答案是不是关于恐龙的?(是 / 不是) 2. 用的话 9 岁孩子能不能听懂?(能 / 不能) 3. 不确定时有没有说"我不确定"?(有 / 没有) 4. 没有瞎编恐龙不存在的事实?(没瞎编 / 有瞎编) 5. 答得有没有"小专家"的感觉?(很有 / 一般 / 没有)
"Harness"在英文里原意是"马具" —— 套在马上让它跑出你要的方向。 在 AI 工程里,harness 是"套在你 AI 系统上的一整套质量监控"。
你三个月前写的"奶奶饺子专家",跑 30 道题得了 88 分。 今天 Qwen 升级了 —— 同样的 prompt + 同样的 30 道题,再跑一遍,掉到 73 分。 没有 harness 你根本不会发现。这就是审美工作室项目 08 在解决的事。
"我要在这个领域做到最好"
rubric 优化领域准确性 —— 让判官检查每个事实陈述。harness 是"领域真伪检测器"。
"我要它对真用户有用"
rubric 优化用户感受 —— "这段话奶奶/弟弟读起来会不会皱眉"。harness 让你看见用户视角。
"我要它有'我的味道'"
rubric 优化风格一致 —— 多个输出读起来像不像"同一个它"。harness 是"我的审美的外置硬盘"。
Harness 在 2025 年是 production AI 的灵魂。模型每周升级、prompt 每天改 —— 没有 harness 你根本不知道你的产品在变好还是变差。
# 1. 加载测试集
test_cases = load_yaml("eval/test-cases.yaml") # 50 个 case
# 2. 跑当前 prompt 拿 outputs
outputs = []
for case in test_cases:
out = call_llm(prompt_v2, case["input"])
outputs.append({"case": case, "output": out})
# 3. 用 judge 评分
judge_scores = []
for o in outputs:
score = call_judge(
rubric=load("eval/rubric.md"),
input=o["case"]["input"],
expected_pattern=o["case"]["expected_pattern"],
actual=o["output"],
)
judge_scores.append(score)
# 4. 聚合 + 对比基线
metrics = {
"accuracy": mean([s["correct"] for s in judge_scores]),
"style_score": mean([s["style"] for s in judge_scores]),
"boundary_compliance": mean([s["boundary"] for s in judge_scores]),
}
# 5. CI 检查:不允许任何指标比基线差 5% 以上
baseline = load("eval/baseline.json")
assert metrics["accuracy"] >= baseline["accuracy"] - 0.05
# 如果失败:CI 红、PR block
eval/rubric.md(5-7 条评分标准)
- eval/test-cases.yaml(50 个 input + expected pattern)
- eval/judge.py(用本地 Ollama 当 judge)
- .github/workflows/eval.yml(PR 自动跑)
- 跑 baseline 拿到当前分数,写进 README。
从此以后每次改东西都看 harness 的输出 —— 你已经在用 production AI 的标准方式工作。
同样是"prompt engineering"—— 配上"热爱"长出深度专家,配上"同理心"长出体贴小工具,配上"审美"长出有"味道"的内容机器。 下面这个机器就让你亲手配一下,看真实的项目案例。
选一个概念 + 一种品质,按"配"看会产生什么样的项目。