Files
2026_DesignAI/officefile/md/supplements/00-introduction/00.4-claude-code-as-scaffold.md
T
pengxiao a90f7adfa1 refactor(officefile): 按 md/latex/word 三层结构重组文档目录
将 Markdown 源文件移入 md/,LaTeX 工作目录保留在 latex/,
Word 导出移入 word/;删除临时脚本、调试截图和空 stub。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 14:25:21 +08:00

12 KiB
Raw Blame History

00.4 Claude Code作为脚手架

核心问题

为什么选择Claude Code作为学习工具? 如何"借力打力",用AI来学习AI? 工具更新换代时,如何保持知识的可迁移性?


概念讲解

Claude Code是什么

Claude Code是Anthropic推出的命令行AI开发助手,但它本质上是一个学习工具

核心特点

┌─────────────────────────────────────────────────────────────┐
│                    Claude Code 架构                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   用户 ──→ [Claude Code CLI] ──→ Claude API ──→ 响应       │
│      │                                              │       │
│      │                                              │       │
│      └──── 三个核心概念 ────────────────────────────┘       │
│                                                             │
│   ┌─────────────┐  ┌─────────────┐  ┌─────────────┐       │
│   │   Agent     │  │    Skill    │  │    Hook     │       │
│   │  (智能体)    │  │   (技能)     │  │   (钩子)     │       │
│   └─────────────┘  └─────────────┘  └─────────────┘       │
│                                                             │
└─────────────────────────────────────────────────────────────┘

对比其他工具

维度 Copilot ChatGPT Claude Code
主要界面 IDE插件 Web界面 命令行
工作方式 代码补全 对话 对话+执行
可扩展性 有限 有限 高(Skill系统)
透明度 高(显示思考)
工具链集成 IDE内 需复制粘贴 直接执行

为什么选择Claude Code

1. 透明性

Claude Code可以看到AI的思考过程:

用户: 帮我分析这个生态网络

Claude Code:
思考: 用户想要分析生态网络,我需要:
1. 识别这是一个空间分析任务
2. 确定需要的数据类型
3. 选择合适的分析方法
4. 调用相关技能

动作: 调用 skill:ecological-analysis
输入: {...}
结果: {...}

这种透明性对学习很重要——你可以看到AI如何分解问题

2. 可扩展性

# .claude/skills/spatial-analysis.md
---
description: 空间分析技能
---

当用户需要进行空间分析时:
1. 确定分析类型(缓冲区分析、叠加分析等)
2. 检查所需数据
3. 执行分析
4. 可视化结果

你可以定义自己的技能,学习如何将领域知识编码为AI可以理解和执行的形式。

3. 工具中性

Claude Code
    │
    ├─ 可以调用 QGIS
    ├─ 可以调用 ArcGIS
    ├─ 可以调用 Python脚本
    └─ 可以调用任何命令行工具

学习的是如何编排工具,而不是特定工具的用法。

三个核心概念

1. Agent(智能体)

Agent是具有目标、能自主行动的系统:

# Agent的抽象结构
class Agent:
    def __init__(self, goal, tools, memory):
        self.goal = goal          # 目标
        self.tools = tools        # 可用工具
        self.memory = memory      # 记忆

    def perceive(self, observation):
        """感知环境"""
        pass

    def decide(self):
        """决定下一步行动"""
        pass

    def act(self):
        """执行行动"""
        pass

    def reflect(self):
        """反思和学习"""
        pass

设计问题

  • Agent应该有多大的自主性?
  • 如何让Agent的目标与人类意图对齐?
  • 如何处理Agent的失败?

2. Skill(技能)

Skill是能力的封装:

# skill示例
---
name: extract-ecological-sources
description: 从土地利用数据中提取生态源地
parameters:
  - landcover_data: GeoDataFrame
  - min_patch_size: float
  - suitability_threshold: float
returns:
  - sources: GeoDataFrame
  - statistics: dict
---

## 执行逻辑

1. 读取土地利用数据
2. 计算每个斑块的适宜性
3. 筛选满足条件的斑块
4. 按面积排序,选择前N个

设计问题

  • 如何定义技能的边界?
  • 技能之间如何组合?
  • 如何让技能可复用?

3. Hook(钩子)

Hook是事件驱动的扩展点:

# hook示例
---
name: pre-tool-use
description: 在工具调用前执行
trigger:
  - event: ToolUse
condition: tool_name == "ecological-analysis"
action: |
  1. 验证输入数据的坐标系
  2. 检查数据完整性
  3. 记录分析参数用于审计
---

## 价值
- 防止错误的分析
- 建立可追溯性
- 注入质量控制

设计问题

  • 哪些事件需要hook
  • 如何在自动化和控制之间平衡?
  • 如何避免过度使用hook导致系统僵化?

设计原理

工具中性原则

核心思想:学习的是设计模式,而非特定工具。

指月之辨:工具与真理的关系

禅宗寓言:佛经记载,佛法如标指,真理如明月。指非月也,是指月之指也。

寓意

  • 手指(工具)指向月亮(真理/原理)
  • 我们需要借助手指才能看到月亮
  • 但手指不是月亮本身,不要执着于手指

对应到学习

┌─────────────────────────────────────────────────────────────┐
│                                                             │
│   手指 (指)              月亮 (月)                            │
│    ↓                       ↓                                 │
│   工具                   原理/真理                              │
│   - Claude Code          - 状态机设计                           │
│   - LangGraph             - 模块化思维                           │
│   - 具体框架               - 设计模式                              │
│   - 命令语法               - AI本质                               │
│                                                             │
└─────────────────────────────────────────────────────────────┘

实践启示

  1. 借指观月,而非指为月

    • 通过工具学习原理,而非学习工具本身
    • Claude Code 是"指",帮助我们指向"月"AI原理)
  2. 手指过河,筏喻登山

    • 工具如竹筏,渡河后应舍弃
    • 学会原理后,工具可以更换
  3. 莫执着于一指

    • 不固守单一工具
    • 不同工具可指向同一真理
    • 工具中性:多工具对比学习

"授人以鱼不如授人以渔。但更重要的是:不要把渔具当成目的。 渔具是指向智慧之鱼的'指',真正的'月'是理解如何独立思考、 如何在新工具出现时快速学习、如何构建持久的认知框架。"

┌─────────────────────────────────────────────────────────────┐
│                  抽象层(持久知识)                          │
│                                                             │
│   工作流编排 │ 状态管理 │ 技能组合       │
│                                                             │
├─────────────────────────────────────────────────────────────┤
│                  实现层(易变知识)                          │
│                                                             │
│   Claude Code │ LangGraph │ LangChain │ ...                │
│                                                             │
└─────────────────────────────────────────────────────────────┘

实践方法

  1. 学习概念,而非命令

    • 理解"状态机"比记住LangGraph的语法更重要
    • 理解"技能抽象"比记住Skill格式更重要
  2. 关注接口,而非实现

    • 定义清晰的输入输出
    • 理解组件之间的交互模式
  3. 多工具对比

    • 用不同工具实现同一任务
    • 理解不同设计的trade-off

借力打力:用AI学习AI

你的学习路径

1. 向Claude Code提问
   "解释一下状态机在Agent系统中的作用"

2. 让它生成示例
   "给我一个简单的状态机示例代码"

3. 让它解释代码
   "逐行解释这段代码在做什么"

4. 让它出题测试
   "出几道关于状态机的问题测试我的理解"

5. 让它点评你的答案
   "这是我的理解,请点评并指出不足"

代码示例

Claude Code基础操作

# 1. 启动Claude Code
claude

# 2. 基本对话
> 你好,请介绍一下空间智能的概念

# 3. 执行命令
> 列出当前目录的文件
# Claude会自动执行 ls 命令

# 4. 读取文件
> 读取 README.md 的内容

# 5. 使用技能
> /spatial-analysis 分析这个区域的生态网络

# 6. 创建新技能
> 创建一个名为"buffer-analysis"的技能

创建一个简单的技能

文件:.claude/skills/hello-spatial.md

---
name: hello-spatial
description: 向用户问好并介绍空间分析基础
---

当用户请求空间分析入门介绍时,使用此技能。

## 执行步骤

1. 询问用户的空间分析背景
2. 根据背景调整解释深度
3. 提供一个简单的空间分析示例
4. 推荐进一步学习资源

## 示例对话

用户: "我是空间分析的初学者"
AI: "欢迎!空间分析是关于..."

实践示例:Claude Code的第一个空间任务

# 场景:用Claude Code分析一个简单的空间问题

> 我有一个包含公园位置的CSV文件,想找出距离每个居民区最近的车公园

# Claude Code的响应过程:
# 1. 理解任务 - 这是一个最近邻分析问题
# 2. 确定工具 - 使用geopandas和scipy
# 3. 编写代码 - 生成Python脚本
# 4. 执行分析 - 运行脚本
# 5. 展示结果 - 可视化输出

让我帮您完成这个最近邻分析。

首先,让我读取您的数据:
[读取 parks.csv]

然后,我将:
1. 计算每个居民区到所有公园的距离
2. 找出最近的车公园
3. 计算平均服务距离
4. 生成可视化地图

[生成并执行 Python 代码]

结果:
- 平均最近距离:850米
- 服务覆盖率:78%
- 需要新建公园的区域:[列表]

反思与延伸

思考问题

  1. 工具选择:你目前使用的AI工具是什么?它在哪些方面帮助/阻碍了你的学习?

  2. 知识迁移:如果Claude Code不再维护,你学到的哪些知识可以迁移到其他工具?

  3. 透明性:你认为AI系统应该有多透明?完全透明是否会降低效率?

  4. 自主性:在使用AI工具时,你希望在多大程度上保持控制权?

实践练习

  1. 安装Claude Code

    npm install -g @anthropic/claude-code
    
  2. 创建你的第一个技能

    • 选择你熟悉的领域
    • 定义技能的输入输出
    • 编写执行逻辑
  3. 与Claude对话

    • 询问一个你不懂的AI概念
    • 让它用多种方式解释
    • 测试你的理解

延伸阅读

  • Claude Code官方文档 - 最权威的参考资料
  • "Tools for Thought" (Richard Wurman) - 思考工具的历史
  • "Building Software with AI" - AI辅助软件开发的实践

关键要点

  1. Claude Code是学习工具,不只是生产力工具
  2. 透明性、可扩展性、工具中性是其核心优势
  3. Agent、Skill、Hook三个概念构成核心抽象
  4. 关注抽象层的知识,实现层会变化
  5. 借力打力:用AI来学习AI是最高效的方式