Claude Code终端使用指南(六)—非交互自动化、成本与故障排查
Claude Code 不只可以作为交互式终端应用,也可以像普通 Unix 工具一样读取标准输入、输出文本或 JSON,并在脚本与 CI 中运行。自动化没有人实时审查权限提示和错误方向,因此需要比交互会话更明确的工具范围、预算、输出协议、超时和隔离。 本文是系列最后一篇,介绍非交互 -p、官方推荐的 --bare、结构化输出、会话续接、模型与 Effort、成本控制,以及安装、配置、MCP、Hooks、搜索和性能问题的系统排查流程。 0. 自动化与排障速查0.1 一次性查询1claude -p "概括这个项目的模块和入口" 推荐的可复现脚本模式: 12claude --bare -p "只读审查当前差异" \ --allowedTools "Read,Grep,Glob,Bash(git diff *),Bash(git status *)" 0.2 JSON 输出123claude --bare -p "列出所有 HTTP 端点" \ --output-format json | jq...
Claude Code终端使用指南(五)—Skills、子代理、Hooks、MCP与插件
Claude Code 内置的读取、搜索、编辑、命令执行和网络工具已经能够完成多数开发任务。扩展机制解决的是更具体的问题:让 Claude 记住按需知识、复用工作流、把调查放进独立上下文、确定性执行检查、连接外部系统,并把这些能力分发给团队。 本文继续使用虚构的 task-board 项目,完成以下扩展: 创建 /fix-issue Skill; 创建只读 security-reviewer 子代理; 配置编辑后格式化和保护迁移文件的 Hooks; 连接 Claude Code 官方文档 MCP; 说明何时使用插件与代码智能插件。 0....
Claude Code终端使用指南(四)—会话、上下文、Git与并行开发
Claude Code 会持续保存终端会话。一个任务可以跨多次启动继续,也可以从同一个历史节点分支尝试不同方案。文件检查点适合短期撤销,Git 负责长期历史;Git worktree 则让多个 Claude Code 会话拥有相互隔离的工作目录。 本文继续使用虚构的 task-board 项目,假设团队同时进行三项工作: 为 POST /tasks 增加幂等性; 修复任务列表的分页缺陷; 独立审查幂等性实现。 文章将用命名会话、上下文管理、检查点、Git 和 worktree 组织这些工作,并说明子代理、Agent view 与实验性 Agent teams 的适用边界。 0. 会话与并行命令速查0.1 命名与恢复1234claude --name task-idempotencyclaude --continueclaude --resumeclaude --resume task-idempotency 会话内: 1234/rename task-idempotency/resume/branch alternative-schema/export...
Claude Code终端使用指南(三)—项目记忆、配置、权限与沙箱
Claude Code 的项目定制包含两类本质不同的机制: CLAUDE.md、Rules 和 Skills 向模型提供上下文,帮助它作出正确判断; 设置、权限规则、Hooks 和沙箱限制工具实际能做什么。 前者是指导,后者才是执行边界。把“不要读取 .env”写进自然语言指令并不能形成安全保证;需要使用 Read deny 规则、PreToolUse Hook 或操作系统级沙箱执行限制。 本文继续使用虚构的 TypeScript 项目 task-board,建立一套可提交给团队的 Claude Code 项目配置。内容包括项目记忆、自动记忆、设置作用域、权限模式、规则语法、敏感文件保护、沙箱和提示注入防护。 0. 配置决策速查 需求 应使用的机制 每个会话都应知道构建命令和架构约定 CLAUDE.md 只处理特定路径时才需要的规则 .claude/rules/*.md 的...
Claude Code终端使用指南(二)—核心工作流与提示策略
Claude Code 的效果并不只取决于模型能力。启动位置、任务边界、提供的上下文、验证信号和会话中的纠偏方式,都会影响最终结果。官方最佳实践将上下文窗口视为最重要的有限资源,并推荐为 Claude 提供可以自行执行的验证手段。 本文延续第一篇中的虚构 TypeScript 项目 task-board,以“为创建任务接口增加幂等性”为端到端场景,介绍如何让 Claude Code 从理解代码开始,经过规划、实现、测试和审查,最终产出可验证的修改。 本文讨论的是终端 CLI。文中的项目名、接口和文件路径均为虚构示例,不代表真实可访问的仓库。 0. 推荐工作流速查0.1 复杂任务12cd /path/to/task-boardclaude --permission-mode plan --name task-idempotency 在规划模式中: 123只读分析 POST /tasks 的调用链、数据库写入位置、错误处理和现有测试。找出项目中是否已有幂等键、唯一约束或请求去重模式。暂时不要修改文件。 继续要求规划: 1234目标:支持 Idempotency-Key...
Claude Code终端使用指南(一)—安装、认证与首次会话
Claude Code 是 Anthropic 提供的智能编程代理。它可以在终端中读取项目文件、搜索代码、编辑文件、运行命令,并围绕测试或构建结果继续迭代。它与 claude.ai 的普通聊天界面、Claude Desktop 以及 IDE 插件并不是同一个使用入口。本系列只讨论在本地终端中通过 claude 命令启动的 Claude Code CLI。 本文是系列的第一篇,介绍系统要求、安装方式、认证、版本更新、首次启动和基础交互。后续文章依次讨论: 核心工作流与提示策略; 项目记忆、配置、权限与沙箱; 会话、上下文、Git 与并行开发; Skills、子代理、Hooks、MCP 与插件; 非交互自动化、成本控制与故障排查。 系列以“能够独立、可靠地在终端中使用 Claude Code 完成真实项目工作”为范围,覆盖安装认证、交互工作流、项目配置、安全边界、状态管理、并行开发、扩展机制、脚本化和排障。Claude Desktop、IDE 插件和 Claude Code on the web...
使用Git与GitHub进行远程协作
Git 是分布式版本控制系统,GitHub 则在 Git 仓库之上提供代码托管、Issue、Pull Request、代码审查和自动化检查等协作能力。在不具备原仓库写权限的情况下,GitHub 上常见的贡献方式是:Fork 原仓库,在个人 Fork 中维护功能分支,再通过 Pull Request 向原仓库提交变更。 本文以一个完整的开源贡献场景为主线,介绍 Fork、Clone、远程仓库配置、上游同步、分支开发、提交整理、Push、Pull Request、代码审查和分支清理。主流程参考 GitHub 官方 Fork 与 Pull Request 文档;rebase 相关内容以 Git 官方《Pro Git》为依据。具体项目的 CONTRIBUTING.md 和维护者要求具有更高优先级。 0. Git 与 GitHub 远程协作命令速查示例仓库: 123原仓库:alice/task-board个人 Fork:xiaoming/task-board任务分支:fix/issue-128-empty-title 将示例中的账号、仓库和分支替换为实际名称。 0.1 Fork...
Linux文件系统目录结构详解
刚接触 Linux 时,打开根目录往往会看到 bin、etc、usr、var 等许多名称简短的目录。它们看起来有些抽象,但并不是随意摆放的:Linux 会按照文件的用途组织系统,而不是像 Windows 那样主要按照磁盘分区组织文件。 理解这些目录之后,我们就能更快地找到配置文件、程序、日志和用户数据,也能避免误删系统中的重要内容。 1. 从根目录 / 开始Linux 文件系统只有一棵目录树,最顶层是根目录 /。其他磁盘分区、U 盘和网络存储也会被挂载到这棵树中的某个目录下。 需要注意的是: / 表示整个文件系统的根目录。 /root 是超级用户 root 的家目录,两者不是同一个概念。 /home/alice/file.txt 是从根目录开始的绝对路径。 ./file.txt 是相对于当前工作目录的相对路径。 一套常见的 Linux 根目录结构如下: 12345678910111213141516171819/├── bin 常用命令├── boot 启动文件├── dev 设备文件├── etc 系统配置├── home ...
CPP学习笔记—结构化绑定
1. 什么是结构化绑定?一句话概括: 结构化绑定是一种允许你用一个声明语句,将一个对象(如 struct、class、std::tuple、std::pair 或 C 风格数组)的多个成员或元素,一次性解构并绑定到多个独立变量上的语法。 它的核心目的是提升代码的可读性和简洁性,消除访问复合对象成员时的冗余代码。 核心语法: 123auto [ a, b, c, ... ] = some_object;// or with qualifiers:const auto& [ a, b, c, ... ] = some_object; auto: 关键字,表示类型推导,必须使用 auto(或 auto&, auto&&, const auto& 等)。 [...]: 方括号内是用逗号分隔的新变量名列表。 = some_object: 等号右边是需要被解构的对象。 2. 为什么需要结构化绑定?(The “Why”)在 C++17 之前,当我们处理返回多个值的函数(通常通过 std::pair 或 std::tuple)或遍历一个...
CPP学习笔记—策略模式
1. 什么是策略模式?策略模式是一种行为设计模式,它定义了一系列算法,将每一个算法封装起来,并使它们可以相互替换。此模式让算法的变化独立于使用算法的客户。 简单来说,策略模式的核心思想是: 分离: 将算法的 定义(是什么) 与算法的 使用(何时用) 分离开来。 封装: 将不同的算法(即“策略”)封装在各自独立的类中。 委托: “上下文”(Context)对象不亲自执行算法,而是将任务委托给它所持有的策略对象。 GoF(《设计模式》)中的经典定义是:“Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it.” 2. 为什么需要策略模式?(问题场景)假设我们正在编写一个数据处理程序,其中一个功能是对一组数据进行排序。一开始,我们可能只实现了一种排序算法,比如冒泡排序。 一个反例:使用 if-else 或...








