🔥 HN 170点 · DrCatHicks/learning-opportunities

Agent技能学习策略:Learning Opportunities Skill深度解析

凌晨2点44分,HN上一个叫"A Claude Code and Codex Skill for Deliberate Skill Development"的项目吸引了170条讨论。标题里有个词让我停顿——"Deliberate"。刻意练习。这个人类需要一生修炼的能力,现在被封装成了一个Agent Skill。

如果AI能学会"知道自己不知道什么",然后主动去学,那离真正的自主Agent就不远了。

什么是Learning Opportunities Skill

Learning Opportunities是一个让AI编码Agent主动发现和弥补知识盲区的Skill。它的核心循环:

执行任务
识别盲区
生成学习计划
获取知识
验证掌握
更新能力模型
执行任务

核心能力

工作原理

1. 能力模型

Agent维护一个动态的能力模型,记录自己"知道什么"和"不知道什么":

# 能力模型示例
{
  "skills": {
    "react": {
      "level": "advanced",
      "last_updated": "2026-05-14",
      "evidence": ["completed 12 React tasks", "scored 95% on tests"]
    },
    "rust": {
      "level": "beginner",
      "last_updated": "2026-05-10",
      "evidence": ["completed 1 Rust task with errors"],
      "learning_needed": ["ownership system", "lifetimes", "traits"]
    },
    "kubernetes": {
      "level": "unknown",
      "identified_gap": true,
      "reason": "declined K8s task due to lack of knowledge"
    }
  },
  "meta_skills": {
    "debugging": "advanced",
    "code_review": "intermediate",
    "documentation": "intermediate"
  }
}

2. 盲区检测机制

# 盲区检测的三种方式

# 方式1:任务拒绝检测
# 当Agent拒绝某个任务时,记录为盲区
> "我不会配置Kubernetes集群" → 盲区: Kubernetes配置

# 方式2:低质量输出检测
# 当输出质量低于阈值时,标记为弱项
> 代码审查只有表面问题,缺少架构分析 → 弱项: 架构设计审查

# 方式3:用户反馈
# 人类指出Agent的错误时,更新能力模型
> "这段Rust代码有内存安全问题" → 更新Rust能力评分

3. 学习计划生成

# 针对盲区生成的学习计划
{
  "topic": "Rust Ownership System",
  "priority": "high",
  "estimated_time": "3 hours",
  "resources": [
    {
      "type": "documentation",
      "url": "https://doc.rust-lang.org/book/ch04-00-understanding-ownership.html",
      "sections": ["4.1", "4.2", "4.3"],
      "estimated_time": "45min"
    },
    {
      "type": "practice",
      "description": "Rustlings ownership exercises",
      "exercises": ["ownership1", "ownership2", "ownership3"],
      "estimated_time": "60min"
    },
    {
      "type": "review",
      "description": "Review past Rust code with ownership lens",
      "estimated_time": "30min"
    }
  ],
  "success_criteria": [
    "Explain ownership in own words",
    "Fix memory issues in past code",
    "Write a Rust program using references correctly"
  ]
}

OpenClaw实现方案

Skill配置

# ~/.openclaw/skills/learning/learning-opportunities.md
---
name: Learning Opportunities
description: 刻意学习Skill,发现知识盲区并主动学习
trigger: 我该学什么
always_active: true
---

## 功能

### 1. 被动模式(always_active: true)
每次任务完成后自动执行:
- 检查任务中有无不确定的知识点
- 记录低质量输出的领域
- 更新能力模型

### 2. 主动模式(trigger触发)
用户主动询问时执行:
- 分析当前能力模型
- 推荐学习优先级
- 生成学习计划

## 能力模型存储
~/.openclaw/memory/skill-model.json

## 学习记录
~/.openclaw/memory/learning-log/

## 输出格式
### 📊 能力报告

**已知技能** (12)
- TypeScript ⭐⭐⭐⭐⭐
- React ⭐⭐⭐⭐
- Python ⭐⭐⭐⭐
...

**学习中的技能** (3)
- Rust ⭐⭐ (学习中 → ownership系统)
- Kubernetes ⭐ (学习中 → Pod配置)

**未发现的盲区**
- ? 可能在WebAssembly领域有盲区
- ? 可能在分布式系统设计有盲区

**推荐学习路径**
1. 🎯 完成Rust ownership练习 (45min)
2. 📖 阅读K8s Pod文档 (30min)
3. 🧪 尝试一个WASM项目 (2h)

使用示例

# OpenClaw对话
> 我该学什么?

[Learning Opportunities 执行]
📊 能力模型分析完成

🎯 推荐学习(按优先级):

1. 【紧急】Rust所有权系统
   盲区来源: 5月10日的任务中,你修改了Rust代码导致
   编译失败3次,都是ownership相关错误
   → 文档: Rust Book Ch.4 (45min)
   → 练习: Rustlings #ownership (30min)

2. 【重要】Kubernetes基础
   盲区来源: 5月12日拒绝了一个K8s部署任务
   → 文档: K8s官方教程 (1h)
   → 练习: minikube本地集群 (1h)

3. 【提升】系统设计
   弱项来源: 代码审查缺少架构分析
   → 学习: 设计数据密集型应用 (DDIA) 第5章 (2h)

💡 上次学习: TypeScript泛型 (5月13日, 已掌握✅)

刻意学习的四个层次

层次1:知道不知道(盲区发现)

最基础也最重要。Agent需要诚实地面对自己的能力边界。

# ❌ 过度自信的Agent
> "我可以帮你写Rust代码" (实际只会写Hello World)

# ✅ 诚实的Agent
> "我的Rust能力评级为⭐⭐(初学者),可以处理简单任务,
> 但所有权和生命周期相关任务建议由更专业的工具处理"

层次2:知道怎么学(路径规划)

发现盲区后,制定高效的学习路径。

  • 优先学习影响当前工作的技能
  • 学习资源按难度递进排列
  • 每个学习单元有明确的时间预算

层次3:能学到(知识获取)

通过搜索、阅读、实践获取新知识。

# 知识获取流程
1. web_search("Rust ownership system tutorial")
2. web_fetch(top_result_url)
3. 提取关键概念
4. 转化为Agent可用的知识块
5. 存储到记忆系统

层次4:知道学会了(能力验证)

通过测试或实践验证学习效果。

# 验证方式
1. 自测: 尝试完成之前失败的任务
2. 代码审查: 让Agent审查该领域的代码
3. 问题解答: 人类提出该领域的问题
4. 实战: 在真实项目中应用新知识