首页 › tutorials › 首课:装Claude Code造命令行记账本

概述

本教程面向从未用过 Claude Code 的零基础学习者,目标是用一个下午完成三件事:把 Claude Code 装通并登录、搞懂三种核心工作模式与项目记忆机制、亲手从零造出一个能真正用的命令行记账本 CLI。读完你将掌握安装、认证、CLAUDE.md 立规矩、权限配置与一条完整的"需求 → 对话 → 改代码 → 跑通"工作流。

前置条件


第一步:把 Claude Code 装进电脑

2026 年安装 Claude Code 有两条路径,新手二选一即可。

路径 A:原生安装器(推荐,不依赖 Node.js)

原生安装器把可执行文件直接下到本机,干净、启动快、不与全局 npm 包冲突。

macOS / Linux:

curl -fsSL https://claude.ai/install.sh | bash

Windows(PowerShell):

irm https://claude.ai/install.ps1 | iex

路径 B:npm 全局安装(需要 Node.js 18+)

npm install -g @anthropic-ai/claude-code

验证安装

claude --version

预期输出形如 2.x.x(版本号随时间增长)。看到版本号即装通。

常见问题

现象 原因 解决
command not found: claude PATH 未刷新 新开一个终端窗口;或手动把安装目录加入 PATH
npm 报权限错误 EACCES 全局目录无写权限 macOS/Linux 用 sudo 或修复 npm 前缀;更推荐改用路径 A
公司网络下载失败 代理拦截 设置 HTTPS_PROXY 环境变量后再装
Windows 提示脚本执行被禁用 默认执行策略 PowerShell 里跑 Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

第二步:首次启动与登录认证

进入一个任意空文件夹(先别碰真实项目,避免误改):

mkdir claude-first && cd claude-first
claude

首次启动会进入交互式引导,依次完成:

  1. 选主题(亮/暗,随便选)
  2. 登录:浏览器跳转,用 Claude 订阅账号授权;若用 API Key,则选 API 方式并粘贴 Key
  3. 信任当前目录:选择 Yes,Claude 才能在此目录读写文件

登录成功后,终端底部会出现输入框,左侧常驻显示当前模式和当前模型。这时它已准备好干活。

一个新手最容易踩的坑:在 ~(家目录)直接启动 Claude。它会把家目录当成项目,扫描一堆无关文件、上下文迅速膨胀。永远先 cd 进项目目录再启动。


第三步:认识三种核心工作模式

Claude Code 的"自动化程度"由模式控制,用 Shift + Tab 循环切换(终端底部会实时显示当前模式名)。

flowchart LR
    A[默认模式<br/>手动批准] -->|Shift+Tab| B[自动编辑模式<br/>Auto-edit]
    B -->|Shift+Tab| C[计划模式<br/>Plan]
    C -->|Shift+Tab| A
    A1["改文件/跑命令<br/>每次都问你"]
    B1["自动改文件<br/>命令仍需批准"]
    C1["只出方案<br/>不落地任何改动"]
    A -.- A1
    B -.- B1
    C -.- C1
模式 改文件 跑命令 适合场景
默认模式 每处改动都弹批准 每条都问 新手、不熟悉的代码库、有风险的操作
自动编辑模式(Auto-edit) 自动写入 仍需批准 信任 Claude 的方向,想加快迭代
计划模式(Plan) 不改任何东西 不执行 先看方案、评审架构、决定要不要做

还有两个辅助开关叠在上面:

新手第一条纪律:默认模式起步,看不懂的命令一律按 n 拒绝。等用熟了、信任建立后,再逐步放权到自动编辑模式。计划模式非常适合"先让我看看你想怎么干"。


第四步:用 CLAUDE.md 给项目立规矩

Claude Code 进入一个目录后,会自动寻找名为 CLAUDE.md 的文件并读进上下文——这就是它的项目记忆。你把规矩、技术栈、编码偏好写进去,它每次都遵守,不用反复叮嘱。

最快的创建方式是用斜杠命令:

/init

它会扫描当前目录、问你几个问题,自动生成一份 CLAUDE.md 草稿。你也可以直接手写一个最小版本。对于本教程的记账本项目,建好如下 CLAUDE.md:

# 项目:命令行记账本 expense

## 技术栈
- Node.js,单文件实现,零第三方依赖
- 数据持久化用 JSON 文件,存在 ./data/expenses.json

## 编码规范
- 中文注释,英文标识符
- 所有金额以"元"为单位,浮点数;展示时保留两位小数并加 ¥
- 日期格式统一 YYYY-MM-DD
- 命令行入口用 process.argv 解析,不引入 commander 等库

## 不要做的事
- 不要安装任何 npm 依赖
- 不要把 data/ 目录里的真实账单提交到 git

配置体系的层级:用户级 ~/.claude/CLAUDE.md(全局偏好)→ 项目级 ./CLAUDE.md(本项目规矩)→ 子目录级 ./子目录/CLAUDE.md。三层会自动合并,越具体优先级越高。


第五步:动手造第一个项目 —— 命令行记账本

接下来全程在交互式 Claude Code 里用自然语言驱动。先在输入框里发出第一个需求(注意:我在引导你"怎么提需求",实际开发中你会换成自己的真实需求):

帮我建一个 Node.js 命令行记账工具 expense,要求:用 node expense.js 运行,零依赖,数据存 JSON;支持 add / list / summary / export 四个子命令。先读 CLAUDE.md,按里面的规范来。

5.1 预期结果

Claude(在默认模式下)会先展示它打算创建/修改的文件清单并请求批准。批准后它会写出 package.json 和 expense.js。下面是它产出的核心代码——完整可运行:

expense.js

#!/usr/bin/env node
const fs = require('fs');
const path = require('path');

// 数据存储位置:项目根目录下的 data/expenses.json
const DATA_DIR = path.join(__dirname, 'data');
const DATA_FILE = path.join(DATA_DIR, 'expenses.json');

// 读取全部记录,文件不存在则返回空数组
function load() {
  if (!fs.existsSync(DATA_FILE)) return [];
  return JSON.parse(fs.readFileSync(DATA_FILE, 'utf8'));
}

// 写入全部记录,自动创建 data 目录
function save(records) {
  if (!fs.existsSync(DATA_DIR)) fs.mkdirSync(DATA_DIR, { recursive: true });
  fs.writeFileSync(DATA_FILE, JSON.stringify(records, null, 2));
}

// 把 ['--amount','38','--note','午餐'] 解析成 {amount:'38', note:'午餐'}
function parseArgs(arr) {
  const obj = {};
  for (let i = 0; i < arr.length; i++) {
    if (arr[i].startsWith('--')) obj[arr[i].slice(2)] = arr[++i];
  }
  return obj;
}

// 帮助信息
function usage() {
  console.log(`命令行记账本 expense
  node expense.js add    --amount 38 --category 餐饮 --note 午餐 [--date 2026-07-07]
  node expense.js list   [--category 餐饮] [--month 2026-07]
  node expense.js summary[--month 2026-07]
  node expense.js export expenses.csv`);
}

const [cmd, ...rest] = process.argv.slice(2);

if (cmd === 'add') {
  const o = parseArgs(rest);
  const amount = parseFloat(o.amount);
  if (!amount || amount <= 0) { console.error('错误:--amount 必须为正数'); process.exit(1); }
  const record = {
    id: Date.now(),
    date: o.date || new Date().toISOString().slice(0, 10),
    amount,
    category: o.category || '其他',
    note: o.note || ''
  };
  const records = load();
  records.push(record);
  save(records);
  console.log(`✅ 已记账:${record.date} ${record.category} ¥${record.amount.toFixed(2)} ${record.note}`);
}
else if (cmd === 'list') {
  const o = parseArgs(rest);
  let records = load();
  if (o.category) records = records.filter(r => r.category === o.category);
  if (o.month) records = records.filter(r => r.date.startsWith(o.month));
  if (!records.length) { console.log('(暂无记录)'); return; }
  console.log('日期         分类     金额      备注');
  records.forEach(r => {
    console.log(`${r.date}  ${r.category.padEnd(6)} ¥${r.amount.toFixed(2).padStart(7)}  ${r.note}`);
  });
}
else if (cmd === 'summary') {
  const o = parseArgs(rest);
  let records = load();
  if (o.month) records = records.filter(r => r.date.startsWith(o.month));
  const byCat = {};
  let total = 0;
  records.forEach(r => { byCat[r.category] = (byCat[r.category] || 0) + r.amount; total += r.amount; });
  console.log(`共 ${records.length} 笔,合计 ¥${total.toFixed(2)}`);
  Object.entries(byCat)
    .sort((a, b) => b[1] - a[1])
    .forEach(([cat, amt]) => console.log(`  ${cat.padEnd(6)} ¥${amt.toFixed(2).padStart(7)}`));
}
else if (cmd === 'export') {
  const file = rest[0] || 'expenses.csv';
  const records = load();
  const lines = ['id,date,amount,category,note'];
  records.forEach(r => lines.push([r.id, r.date, r.amount, r.category, `"${r.note.replace(/"/g, '""')}"`].join(',')));
  fs.writeFileSync(file, lines.join('\n'));
  console.log(`✅ 已导出 ${records.length} 条到 ${file}`);
}
else { usage(); }

package.json(关键片段,让 expense 成为可直接调用的命令)

{
  "name": "expense",
  "version": "1.0.0",
  "bin": { "expense": "expense.js" },
  "scripts": { "start": "node expense.js" }
}

5.2 跑起来验证

在终端(Claude Code 之外另开一个窗口,或先退出交互会话)执行:

node expense.js add --amount 38 --category 餐饮 --note 午餐
node expense.js add --amount 15.5 --category 交通 --note 地铁
node expense.js add --amount 99 --category 餐饮 --note 晚餐
node expense.js summary
node expense.js list --category 餐饮
node expense.js export expenses.csv

预期输出:

✅ 已记账:2026-07-07 餐饮 ¥38.00 午餐
✅ 已记账:2026-07-07 交通 ¥15.50 地铁
✅ 已记账:2026-07-07 餐饮 ¥99.00 晚餐
共 3 笔,合计 ¥152.50
  餐饮   ¥137.00
  交通   ¥ 15.50
日期         分类     金额      备注
2026-07-07  餐饮    ¥ 38.00  午餐
2026-07-07  餐饮    ¥ 99.00  晚餐
✅ 已导出 3 条到 expenses.csv

5.3 用自然语言继续迭代

回到 Claude Code 交互会话,继续提需求,让它增量改进:

给 summary 加一个"本月日均"输出,并支持按 --month 过滤;金额展示统一两位小数对齐。

批准它的改动后,重新 node expense.js summary --month 2026-07 即可看到新效果。这就是 Claude Code 的核心循环:提需求 → 看方案 → 批准 → 跑验证 → 再提需求。

5.4 常见问题


第六步:权限与配置(settings.json)

到这一步你会发现:每次跑命令都要批准,挺烦。但完全放权又危险。正确做法是用配置文件做白名单,把确定安全的操作预先放行。

Claude Code 读两层配置:

一个适合本项目的 ./.claude/settings.json 示例:

{
  "permissions": {
    "allow": [
      "Bash(node expense.js *)",
      "Bash(npm test)",
      "Bash(cat *)",
      "Read(./**)",
      "Edit(./**)"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Read(./data/expenses.json)"
    ]
  }
}

含义:

跑了 /permissions 可以在交互界面可视化地增删规则;改完文件新开一个会话才完全生效(旧会话已加载旧规则)。


第七步:常用斜杠命令与快捷键速查

把下面这张表打印贴在显示器旁,前两周全靠它:

输入 作用
/init 扫描目录,自动生成 CLAUDE.md 草稿
/clear 清空当前会话上下文(换任务前必用,省钱又准确)
/compact 压缩当前长对话,保留要点,腾出上下文额度
/fast 切换 Fast 模式(更快输出,仍是 Opus)
/model 切换模型(Opus / Sonnet / Haiku)
/agents 管理子代理
/memory 查看/编辑 CLAUDE.md 记忆
/cost 看本次会话花了多少 token / 钱
/help 全部命令列表

快捷键:


实战案例小结:一条完整工作流

回头看,你刚才完成的不只是"写了个记账本",而是跑通了一条可复用的 AI 编程工作流:

flowchart TD
    S([开始]) --> CD[cd 进入空项目目录]
    CD --> CL[手写或 /init 生成 CLAUDE.md 立规矩]
    CL --> ST[claude 启动交互会话]
    ST --> MOD{选模式}
    MOD -->|默认| D[默认:逐步批准,安全]
    MOD -->|计划| P[Plan:先看方案]
    MOD -->|自动| A[Auto-edit:自动改文件]
    D --> R[提需求 → 看方案 → 批准]
    P --> R
    A --> R
    R --> RUN[新终端跑 node expense.js 验证]
    RUN --> OK{结果对吗}
    OK -->|不对| R
    OK -->|对| CFG[配 settings.json 放行安全命令]
    CFG --> DONE([完成])

记牢这条链路:进目录 → 立规矩 → 选模式 → 对话改码 → 离线验证 → 配权限提速。 任何项目都套这个模板。


延伸阅读


训练营适用性评估

参考来源

  1. 快速开始 - Claude Code 官方文档(中文) — 官方权威的安装、登录与首次使用流程
  2. Speed up responses with fast mode - Claude Code Docs — Fast 模式与 Opus 加速的官方说明
  3. Claude Code 完全指南:从安装到高级 Agent 工作流(2026 版)— PromptNet — 串联 13+ 篇深度文的技术博客母页面
  4. Claude Code 全攻略:命令大全+三种模式+记忆体系(2026)— 阿里云开发者社区 — 命令、模式、配置的完整技术手册
  5. How to Install Claude Code in 2026(含原生安装器)— laozhang.ai — 三平台安装与原生安装器实践

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入