refactor(officefile): 按 md/latex/word 三层结构重组文档目录
将 Markdown 源文件移入 md/,LaTeX 工作目录保留在 latex/, Word 导出移入 word/;删除临时脚本、调试截图和空 stub。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,429 @@
|
||||
# 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. 可扩展性**
|
||||
|
||||
```yaml
|
||||
# .claude/skills/spatial-analysis.md
|
||||
---
|
||||
description: 空间分析技能
|
||||
---
|
||||
|
||||
当用户需要进行空间分析时:
|
||||
1. 确定分析类型(缓冲区分析、叠加分析等)
|
||||
2. 检查所需数据
|
||||
3. 执行分析
|
||||
4. 可视化结果
|
||||
```
|
||||
|
||||
你可以定义自己的技能,学习如何将领域知识编码为AI可以理解和执行的形式。
|
||||
|
||||
**3. 工具中性**
|
||||
|
||||
```
|
||||
Claude Code
|
||||
│
|
||||
├─ 可以调用 QGIS
|
||||
├─ 可以调用 ArcGIS
|
||||
├─ 可以调用 Python脚本
|
||||
└─ 可以调用任何命令行工具
|
||||
```
|
||||
|
||||
学习的是**如何编排工具**,而不是特定工具的用法。
|
||||
|
||||
### 三个核心概念
|
||||
|
||||
#### 1. Agent(智能体)
|
||||
|
||||
Agent是具有目标、能自主行动的系统:
|
||||
|
||||
```python
|
||||
# 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是能力的封装:
|
||||
|
||||
```yaml
|
||||
# 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是事件驱动的扩展点:
|
||||
|
||||
```yaml
|
||||
# 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基础操作
|
||||
|
||||
```bash
|
||||
# 1. 启动Claude Code
|
||||
claude
|
||||
|
||||
# 2. 基本对话
|
||||
> 你好,请介绍一下空间智能的概念
|
||||
|
||||
# 3. 执行命令
|
||||
> 列出当前目录的文件
|
||||
# Claude会自动执行 ls 命令
|
||||
|
||||
# 4. 读取文件
|
||||
> 读取 README.md 的内容
|
||||
|
||||
# 5. 使用技能
|
||||
> /spatial-analysis 分析这个区域的生态网络
|
||||
|
||||
# 6. 创建新技能
|
||||
> 创建一个名为"buffer-analysis"的技能
|
||||
```
|
||||
|
||||
### 创建一个简单的技能
|
||||
|
||||
文件:`.claude/skills/hello-spatial.md`
|
||||
|
||||
```yaml
|
||||
---
|
||||
name: hello-spatial
|
||||
description: 向用户问好并介绍空间分析基础
|
||||
---
|
||||
|
||||
当用户请求空间分析入门介绍时,使用此技能。
|
||||
|
||||
## 执行步骤
|
||||
|
||||
1. 询问用户的空间分析背景
|
||||
2. 根据背景调整解释深度
|
||||
3. 提供一个简单的空间分析示例
|
||||
4. 推荐进一步学习资源
|
||||
|
||||
## 示例对话
|
||||
|
||||
用户: "我是空间分析的初学者"
|
||||
AI: "欢迎!空间分析是关于..."
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 实践示例:Claude Code的第一个空间任务
|
||||
|
||||
```bash
|
||||
# 场景:用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**
|
||||
```bash
|
||||
npm install -g @anthropic/claude-code
|
||||
```
|
||||
|
||||
2. **创建你的第一个技能**
|
||||
- 选择你熟悉的领域
|
||||
- 定义技能的输入输出
|
||||
- 编写执行逻辑
|
||||
|
||||
3. **与Claude对话**
|
||||
- 询问一个你不懂的AI概念
|
||||
- 让它用多种方式解释
|
||||
- 测试你的理解
|
||||
|
||||
### 延伸阅读
|
||||
|
||||
- **[Claude Code官方文档](https://claudecode.io/zh)** - 最权威的参考资料
|
||||
- **"Tools for Thought"** (Richard Wurman) - 思考工具的历史
|
||||
- **"Building Software with AI"** - AI辅助软件开发的实践
|
||||
|
||||
---
|
||||
|
||||
## 关键要点
|
||||
|
||||
1. **Claude Code是学习工具**,不只是生产力工具
|
||||
2. **透明性、可扩展性、工具中性**是其核心优势
|
||||
3. **Agent、Skill、Hook**三个概念构成核心抽象
|
||||
4. **关注抽象层**的知识,实现层会变化
|
||||
5. **借力打力**:用AI来学习AI是最高效的方式
|
||||
Reference in New Issue
Block a user