Java Edition · JDK 1.8

Learn Claude Code

learn_claude_code_by_java v1.0

Created by arrayadd

12 节渐进式课程,从一个 while 循环到完整的多 Agent 团队系统。
每一课都是独立的 main() 方法,运行即学。

Core Philosophy 核心哲学

Agent 是模型。不是框架。不是提示词链。不是拖拽式工作流。

模型做决策,Harness 执行。模型做推理,Harness 提供上下文。模型是驾驶者,Harness 是载具。 你不是在编写智能——你是在构建智能栖居的世界。

Claude Code 是我们所见过的最优雅的 agent harness 实现。它没有试图成为 agent 本身,没有强加僵化的工作流, 没有用决策树替模型做判断——它给模型提供了工具、知识、上下文管理和权限边界,然后让开了。

Harness = Tools + Knowledge + Observation + Action + Permissions 文件读写 产品文档 git diff CLI命令 沙箱隔离 Shell 领域资料 错误日志 API调用 审批流程 网络 API规范 浏览器状态 UI交互 信任边界

本教程的 12 节课,每一课在同一个 while 循环之上叠加一个 harness 机制。 循环属于 Agent,机制属于 Harness。循环始终不变——变的是你给 Agent 的能力边界。

"造好 Harness,Agent 会完成剩下的。"

Architecture Map 架构全景

一个 while 循环 + 12 层 Harness 机制 = 完整的 Agent 系统。下图展示核心循环与各机制的关系。

THE AGENT LOOP while stop_reason == "tool_use": LLM → Tools → Results → LLM 循环不变,机制在变 PHASE 1: FOUNDATIONS S01 Agent Loop 核心循环 "one loop is all you need" S02 Tool Dispatch 工具分发 "Map<name, handler>" S03 TodoWrite 任务追踪 S04 Subagent 子代理 "fresh context isolation" PHASE 2: MEMORY & STATE S05 Skill Loading 按需加载 S06 Context Compact 压缩 "3-layer compression" S07 Task System 任务持久化 S08 Background 后台执行 "fire and forget" PHASE 3: MULTI-AGENT S09 Teams JSONL 邮箱通信 S10 Protocols 协议 FSM S11 Autonomous 自主认领 "agent finds work itself" S12 Worktree 目录隔离 "isolate by dir, coord by ID" HARNESS = 🔧 Tools bash/read/write 📚 Knowledge skills/docs 👁 Observation git/logs ⚡ Action CLI/API 🔒 Permissions sandbox 🧠 Context compact/task 🤝 Teams inbox/protocol User messages[] LLM response tool_use? yes execute tools → append results → loop no return text VISION: Harness 模式可泛化到任何领域 💻 Coding Agent = Model + IDE + Terminal + FS 🌱 Agriculture Agent = Model + Sensor + Irrigation 🏧 Hotel Agent = Model + Booking + Channel 循环不变 · 工具在变 · 知识在变 · Agent 泛化一切
Phase 0: Prerequisites
Phase 1: Foundations
Phase 2: Memory & State
Phase 3: Multi-Agent

Quick Start

# 1. 编辑配置文件 src/main/resources/claude.properties
ANTHROPIC_API_KEY=sk-ant-xxxxx      # 填入你的 API Key
ANTHROPIC_BASE_URL=https://api.anthropic.com  # 或第三方代理地址
MODEL_ID=claude-sonnet-4-20250514   # 可选,默认即可

# 2. 在 IDE 中直接运行 main 方法(推荐)
打开任意课程的 Java 文件,点击 main() 旁的运行按钮即可