惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
L
LangChain Blog
人人都是产品经理
人人都是产品经理
D
DataBreaches.Net
WordPress大学
WordPress大学
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
小众软件
小众软件
The Register - Security
The Register - Security
C
Check Point Blog
Engineering at Meta
Engineering at Meta
The GitHub Blog
The GitHub Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
爱范儿
爱范儿
有赞技术团队
有赞技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
Vercel News
Vercel News
Google DeepMind News
Google DeepMind News
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
美团技术团队
P
Proofpoint News Feed
IT之家
IT之家
Martin Fowler
Martin Fowler
云风的 BLOG
云风的 BLOG
V
Visual Studio Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
V
V2EX
MyScale Blog
MyScale Blog
Y
Y Combinator Blog
博客园 - 【当耐特】
Stack Overflow Blog
Stack Overflow Blog
Microsoft Security Blog
Microsoft Security Blog
S
Schneier on Security
G
Google Developers Blog
Hugging Face - Blog
Hugging Face - Blog
F
Full Disclosure
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - Franky
T
The Exploit Database - CXSecurity.com
罗磊的独立博客
Spread Privacy
Spread Privacy
D
Darknet – Hacking Tools, Hacker News & Cyber Security
The Cloudflare Blog
Latest news
Latest news
GbyAI
GbyAI
P
Privacy International News Feed
Last Week in AI
Last Week in AI
T
The Blog of Author Tim Ferriss
H
Hacker News: Front Page
K
Kaspersky official blog

掘金

Win 安装Claude Code FastAPI 的 CORSMiddleware 跨域中间件 Java 自研 ReAct Agent 半年后,我用 LangGraph 验证了这些设计取舍 🚀AI编程工作流终极形态:GitNexus!零Token消耗实现代码知识图谱化!让Claude Code和Codex拥有上帝视角彻底告别盲目改代码,复杂项目重 LeetCode 72. 编辑距离:动态规划经典题解 被The Graph的GraphQL查询坑了三天,我用一个真实DeFi项目把链上数据索引彻底搞懂了 (AI) 编写简单 AI 助手 (ds-agent) 别再让 pnpm 跟着 nvm 跑了!独立安装终极指南 Claude Code 为什么这么顺?Anthropic 最新复盘:真正撑住它的不是模型,而是缓存 从 /simplify 指令深挖 Claude Code 多 Agent 协同机制 Function-Calling与工具使用 新手上路(六):Claude code装上ECC全家桶:38 个子代理、156 个技能、生产级 Hooks 与 Rules 体系 我在 Claude、Kimi、opencode 三个 AI 之间搭了一条自动协作管道 【技能篇】OpenClaw Skill 详解:给 AI 装上"专业外挂" wagmi v2 多链钱包切换:一个 Uniswap 仿盘项目让我踩了三天坑 两周浅学 RAG 我把 Python re 模块比喻成摸金手套 新手上路(三):Claude Code Skills 装了一堆没用?20+ 个 Skill 横向对比 + 三套组合方案,按需抄 K2.6、DeepSeek V4、GPT-5.5 都来了,组合拳打起来 Claude Code 进阶之路:从记忆系统到子代理编排 [java] 编译之后的记录类(Record Classes)长什么样子(上) 国产大模型能力大比拼,社区有话说 我研读了 500 个 Spring Boot 生产级代码库,90% 都犯了这 7 个致命错误 JAVA重点难点 转发-中央网信办部署开展“清朗·整治AI应用乱象”专项行动 合同同步逻辑 【合并已排序数组的三种实现策略,哪一种更可取?】 30天减20斤挑战:少一斤发100红包(2) 我竟然被JavaScript的隐式类型转换坑了三天! 二十五.Electron 初体验与进阶 本地到生产,解决 AI 全栈最后一公里——构建&部署&运维 程序员创业半年:顺的事、不顺的事,和我一直没想清楚的事 UI组件库elementplus 像使用 Redis 一样操作 LocalStorage 向量检索的流程是怎样的?Embedding 和 Rerank 各自的作用? LangChain DeepAgents 速通指南(七)—— DeepAgents使用Agent Skill 为什么越来越多的大厂抛弃MCP,转向CLI? 【节点】[SquareRoot节点]原理解析与实际应用 juejin.cn juejin.cn 从 “存得下” 到 “算得快”:工业物联网需要新一代时序数据平台越来越多工业用户开始意识到一个问题:**数据是存下来了, - 掘金 放弃 Claude 订阅?我用 8 年前的服务器,强跑 Google 最强开源模型 Gemma 4 真实测评! Python开发者狂喜!200+课时FastAPI全栈实战合集,10大模块持续更新中🔥 从 Claw-Code 看 AI 驱动的大型项目开发:2 人 + 10 个自治 Agent 如何产出 48K 行 Rust 代码 秒级创建实例,火山引擎 Milvus Serverless 让 AI Agent 开发更快更省火山引擎MilvusSer MediaPlayer 播放器架构:NuPlayer 的 Source/Decoder/Renderer 三驾马车 juejin.cn juejin.cn juejin.cn juejin.cn juejin.cn juejin.cn OrbStack:一键将你的 Mac 变为本地服务器 NginxPulse:Nginx日志监控革命!实时洞察Web流量与安全态势的智能利器引言:当Nginx日志成为运维的“数 - 掘金 juejin.cn 大V说’AI替代不了你’,但现实是——用AI的人正在替代你2026年是AI落地的元年,自从Claude Code爆火之后 - 掘金 juejin.cn 你以为是技术问题,其实是流程问题:工程效率的真相引言 在软件工程领域,效率问题始终是团队管理者和工程师们关注的焦点。当项 - 掘金 大模型工程三驾马车:Prompt Engineering、Context Engineering 与 Harness Engineering 深度解析 juejin.cn 4.响应式系统基础:从发布订阅模式的角度理解 Vue3 的数据响应式原理本文从发布订阅模式的核心思想出发,深入剖析了 V - 掘金 慌了!Android 17 取消图标文字,你的 App 可能要找不到了用户终于可以隐藏桌面图标下面的文字了。 这个功能在 juejin.cn 我用 AI 搓了一个"比谁更持久"的微信小游戏,AI实现只用了一天,微信审核却用了一个月!!!起因:一个沙雕想法的诞生 - 掘金 juejin.cn 第12章 工具(Tools)与函数调用(LangChain实战)在前几章中,我们搭建的RAG系统、对话链,核心能力局限 - 掘金 juejin.cn CmComposeUI —— 基于 Kotlin Multiplatform Compose 的 UI 组件库 Android 开发的 AI coding 与 AI debugging在目前整个行业都在大规模使用 AI coding juejin.cn juejin.cn juejin.cn juejin.cn 一文搞懂Harness Engineering与Meta-Harness 越用越强不是广告语:拆解 Hermes Agent 的三层学习机制 P2G-Python字符串方法完全指南-split、join、strip、replace的Python编程利器 AI 周刊【2026.04.06-04.12】:Anthropic 藏起最强模型、AI 社会矛盾激化、"欢乐马"登顶 从 AI Skills 学实战技能(六):让 AI 帮你总结网页、PDF、视频 关于10年工作经验的程序员对OpenClaw的实战经验分享以及看法 详解 karpathy 的 microgpt:实现一个浏览器运行的 gpt 不用 Tailscale:3 步把 Mac mini 通过 FRP 暴露到公网(稳定开机自启) P2B-Python可迭代对象完全指南-从列表到生成器的Python编程利器 手把手带你部署本地模型,让你Token自由(小白专属) juejin.cn 10分钟掌握 JSON-RPC 协议,面试加分、设计不踩坑 ReAct:让大模型学会边想边做 聊聊AI的发展史,AI的爆发并不是偶然 Python的列表推导式里藏了个坑,差点让我加班到凌晨 重排、重绘与合成——浏览器渲染性能的底层逻辑 podman与docker的区别和生产环境最佳实践 juejin.cn ConcurrentHashMap线程安全实现原理全解析 juejin.cn juejin.cn juejin.cn juejin.cn juejin.cn juejin.cn OpenAI Codex深度解析:终端里的AI代码特工,一个指令重构整个项目 UE5.6 Cesium 插件编译踩坑记录(UE 5.6 + MSVC 14.38 + CMake 3.31)
Prompt Engineering、Harness Engineering和Context Engineering
卷帘依旧 · 2026-05-27 · via 掘金

Context Engineering vs Harness Engineering vs Prompt Engineering

这三个概念构成了 LLM 应用开发的三层技术栈,从微观到宏观、从单次交互到系统架构层层递进。


一、Prompt Engineering(提示词工程)

概念

设计、优化输入给 LLM 的文本指令,以获取最佳输出。这是最基础、最微观的层次。

核心特点

  • 作用范围:单次 LLM 调用
  • 输入输出:文本 → 文本
  • 优化目标:输出质量、准确性、格式
  • 调试方式:人工调整提示词,观察输出变化

典型技术

// 1. 角色扮演
const prompt = `你是一位资深 Python 工程师,请审查以下代码...`;

// 2. 思维链(Chain of Thought)
const prompt = `请逐步推理:1. 首先... 2. 然后...`;

// 3. Few-shot 示例
const prompt = `示例1: ... → ...\n示例2: ... → ...\n现在处理:`;

// 4. 输出格式约束
const prompt = `以 JSON 格式输出:{"field1": "", "field2": ""}`;

局限性

  • ❌ 无状态管理(每次调用独立)
  • ❌ 无法处理超长上下文
  • ❌ 不能调用外部工具
  • ❌ 无错误恢复机制

二、Harness Engineering(脚手架工程)

概念

构建 LLM 应用的外部系统和工具链,包括工具定义、状态管理、错误处理、成本控制等。这是中间层,负责"编排"。

核心特点

  • 作用范围:整个 Agent/应用会话
  • 主要组件:工具、状态、缓存、降级、监控
  • 优化目标:系统可靠性、成本控制、用户体验
  • 调试方式:日志、链路追踪、A/B 测试

核心组件

class Harness {
  // 1. 工具定义(让 LLM 调用外部能力)
  tools = {
    read_file: { handler: async (path) => {...} },
    execute_bash: { handler: async (cmd) => {...} },
    search_web: { handler: async (query) => {...} }
  };
  
  // 2. 状态管理(上下文窗口控制)
  manageContext() {
    if (tokenCount > 0.75 * maxTokens) {
      this.compress();  // 压缩历史
    }
  }
  
  // 3. 缓存策略(降低成本)
  setupCache() {
    // 标记稳定前缀,复用 KV Cache
    this.cachePrefix = [systemPrompt, toolDefinitions];
  }
  
  // 4. 错误处理与降级
  async callWithFallback(prompt) {
    try {
      return await callModel('opus', prompt);
    } catch {
      return await callModel('sonnet', prompt);  // 降级
    }
  }
  
  // 5. 成本控制
  estimateCost(messages) {
    return countTokens(messages) * 0.015 / 1000;
  }
}

解决的核心问题

问题Harness 解决方案
上下文溢出压缩、摘要、滑动窗口
工具调用失败重试、降级、超时控制
成本失控Token 计数、缓存、模型路由
响应不稳定多次采样、投票机制
安全风险工具白名单、沙箱执行

三、Context Engineering(上下文工程)

概念

设计、管理、优化 LLM 在整个任务生命周期中能看到的所有信息。这是最宏观的层次,关注"信息生态"。

核心特点

  • 作用范围:跨会话、跨 Agent、长期任务
  • 主要对象:信息选择、压缩、记忆、共享
  • 优化目标:信息密度、长期一致性、知识复用
  • 调试方式:信息检索评估、记忆召回率

上下文的层次结构

Level 4: 长期记忆(跨会话)
         ├─ 向量数据库
         ├─ 知识图谱
         └─ 用户偏好

Level 3: 工作区上下文(项目级)
         ├─ CLAUDE.md / README
         ├─ 项目结构
         └─ 近期修改

Level 2: 会话上下文(本次对话)
         ├─ 历史消息
         ├─ 已执行操作
         └─ 中间决策

Level 1: 瞬时上下文(当前消息)
         ├─ 用户最新输入
         └─ 临时工具结果

关键技术

// 1. 信息选择(只加载相关内容)
class ContextSelector {
  async select(query, codebase) {
    // 从 10 万行代码中检索最相关的 5 个文件
    const relevant = await vectorDB.search(query, { topK: 5 });
    // 每个文件只提取相关函数(而非全部)
    return relevant.map(f => this.extractRelevantSnippets(f));
  }
}

// 2. 信息压缩(有损但保留关键结构)
class ContextCompressor {
  compress(code, level) {
    if (level === 1) return this.extractSignatures(code);     // 只剩函数名
    if (level === 2) return this.extractSignaturesAndComments(code);
    return this.simplifyImplementation(code);                  // 保留逻辑但简化
  }
}

// 3. 长期记忆(跨会话存储)
class LongTermMemory {
  async memorize(decision) {
    await vectorDB.add(decision.embedding, decision.summary);
    await knowledgeGraph.createRelation(decision.from, decision.to);
  }
  
  async recall(question) {
    return await vectorDB.search(question);  // 语义检索
  }
}

三者的核心区别

对比表格

维度Prompt EngineeringHarness EngineeringContext Engineering
作用范围单次 LLM 调用Agent 会话生命周期跨会话、跨 Agent
时间尺度毫秒级分钟-小时级天-周级
主要对象文本指令工具、状态、错误信息选择、压缩、记忆
优化目标输出质量系统可靠性、成本信息密度、长期一致性
典型问题"怎么让模型理解意图?""Agent卡住了怎么办?""如何记住上周的决定?"
失败后果回答质量差系统崩溃、成本失控重复工作、决策矛盾
调试方式人工调整提示词日志、链路追踪检索评估、召回率
依赖关系独立依赖好的 Prompt依赖 Harness 提供存储

一句话总结

  • Prompt Engineering怎么说(微观表达)
  • Harness Engineering怎么做(中观系统)
  • Context Engineering知道什么(宏观信息)

协作关系图

用户需求
    ↓
┌─────────────────────────────────────────┐
│  Context Engineering(宏观)             │
│  "应该加载哪些历史决策?"                 │
│  "如何压缩10万行代码到2000 token?"       │
│  "如何记住上周的架构决策?"               │
└─────────────┬───────────────────────────┘
              ↓ 提供精选/压缩后的信息
┌─────────────────────────────────────────┐
│  Harness Engineering(中观)            │
│  "如何定义工具让Agent调用?"              │
│  "上下文快满了,要不要压缩?"             │
│  "工具调用失败,重试还是降级?"           │
└─────────────┬───────────────────────────┘
              ↓ 构建请求、管理状态
┌─────────────────────────────────────────┐
│  Prompt Engineering(微观)              │
│  "系统提示词怎么写?"                     │
│  "这个工具描述怎么让模型理解?"            │
│  "如何用few-shot示例引导输出格式?"       │
└─────────────┬───────────────────────────┘
              ↓ 构造最终 Prompt
           LLM 调用

实际案例对比

场景:构建一个代码审查 Agent

// ========== 1. Prompt Engineering ==========
// 关注:如何让模型输出高质量审查意见

const reviewPrompt = `
你是一位资深代码审查专家。审查以下代码:

规则:
1. 安全性:检查 SQL 注入、XSS
2. 性能:检查 N+1 查询
3. 可维护性:检查命名、注释

输出格式:
- 🔴 严重问题
- 🟡 建议改进

代码:
${code}
`;

// ========== 2. Harness Engineering ==========
// 关注:如何让 Agent 稳定运行、控制成本

class CodeReviewHarness {
  async review(prUrl) {
    // 工具定义
    const tools = {
      get_diff: () => fetchDiff(prUrl),
      run_linter: (code) => eslint(code),
      get_file_history: (path) => gitLog(path)
    };
    
    // 状态管理:避免上下文溢出
    let context = { reviewedFiles: [], comments: [] };
    
    // 错误处理:工具调用失败时降级
    try {
      const diff = await tools.get_diff();
      for (const file of diff.files) {
        const issues = await this.reviewFile(file);
        context.comments.push(...issues);
      }
    } catch (error) {
      // 降级:只做静态分析
      return this.staticAnalysisOnly();
    }
    
    // 成本控制:预估 token 消耗
    if (this.estimateCost(context) > 0.5) {
      await this.compressHistory();
    }
    
    return context;
  }
}

// ========== 3. Context Engineering ==========
// 关注:应该加载哪些信息?如何压缩?如何记忆?

class CodeReviewContext {
  async buildContext(pr) {
    return {
      // 当前 PR 的变更
      currentDiff: await this.getDiff(pr),
      
      // 相关历史决策(从向量库检索)
      pastDecisions: await this.vectorDB.search(
        pr.description, 
        { filter: { type: 'architectural', limit: 5 } }
      ),
      
      // 项目规范(从 CLAUDE.md 加载)
      projectRules: await this.loadClaudeMd(),
      
      // 压缩策略:只保留关键信息
      compressedHistory: this.compress(pastDecisions, {
        keepSignatures: true,
        dropImplementation: true
      })
    };
  }
}

发展路径

const learningPath = {
  beginner: "只做 Prompt Engineering",
  intermediate: "Prompt + Harness(工具、状态、错误处理)",
  advanced: "完整三层(重点是 Context Engineering)"
};

// 投入产出比
const roi = {
  promptEngineering: "低成本、高回报(适合简单任务)",
  harnessEngineering: "中成本、中回报(适合生产环境)",
  contextEngineering: "高成本、高回报(适合复杂长期任务)"
};

总结

核心区别

层次核心问题关键产出
Prompt如何表达意图?高质量的单次回复
Harness如何构建可靠系统?稳定运行的 Agent
Context如何管理信息生态?长期一致的知识体系

现代 LLM 应用的竞争壁垒

2023 年:Prompt Engineering 是核心技能
2024 年:Harness Engineering 成为标配
2025 年:Context Engineering 是真正的护城河

原因:当基础能力(提示词、工具调用)被模型内置后,真正区分产品优劣的是如何管理信息——知道保留什么、丢弃什么、从哪里检索、如何压缩。这也是 Claude Code、Cursor 等产品的核心竞争力所在。