指令

.claude/commands 中声明指令,指令用于编写我们的可重用 Markdown 功能模板,避免频繁手写 prompt

指令调用和使用 Claude 指令一样,通常都是 /指令名称 这种格式

指令模板

模板编写方式有很多种,比如:

  • Markdown:适合日常用户习惯

  • JSON:有利于工程表达,提高数据密度

  • XML:工具调用常用的模板格式,适合复杂且庞大场合,明确边界有利于编程助手理解

日常开发使用 Markdown 即可,数据格式只是锦上添花,最重要的是如何让编程助手理解你的意图

接口能力描述
关联业务文件,接口实现能力描述.
- 功能
  - 输入参数:
  - 输出参数
  - 参数1:参数内部具体说明
- 数据来源:说明数据获取途径
- 额外操作,相关业务处理
- 检查:保证业务相关性的检查逻辑,比如接口可用
基于测试的错误排查

程序执行异常时,为了定位错误,我们可以提供错误信息,并让 AI 编写测试文件,基于测试来进行排查

这样可以减少 Claude 出现排查异常混乱的问题

我的程序出现了 xxx 错误信息
我需要:
1. 为 xxx 文件 xxx 功能执行编写测试示例
2  ...

将实例保存到 xxx 目录,并运行排障
然后尽可能修复测试错误的代码内容

请多加思考(Think a lot)

最后一句话可以激发 Claude 用更多的算力和思考时间来完成任务,这对困难业务排查是有效果的

功能重构

基于 Markdown 来编写,提供更多详细信息

要重构的功能描述

## 当前情况
按步骤叙述

## 期望的情况
按步骤叙述

## 工作流示例
给一个工作示例
不需要具体的结果,只需要提供大概流程


## 要求
这里编写需要遵守的规则
比如具体规则逻辑

## 提示
这里编写协助 Claude 更规范任务的步骤
比如具体重构文件,需要更新的内容,需要更新的测试文件

Note:编写的测试流程要关注外部行为(业务行为示例),而不是具体的内部细节

指令参数

通常我们编写的 prompt 不是固定的模板输出,而是有时需要改变某些描述

比如上面的错误排查,先分析可能存在修改的部分

  • 错误信息名称
  • 可以拓展的错误信息列表
  • 目录名称

接下来将其提取成携带参数的通用工程模板,参数的表达形式有很多种

Claude 中通常采用 $ 开头作为参数形式

<!-- error-fix.md  -->
我的程序出现了 $ERROR_MESSAGE 错误信息
我需要:
1. 你要固定的通用错误处理
$FIX_FEATURE_LIST

将文件保存到 $DIR 目录,并运行排障
然后尽可能修复测试错误的代码内容

请多加思考(Think a lot)

然后采用较为规范化的形式去输入提示词,方便 Claude 理解

# claude cli
/error-fix
- $ERROR_MESSAGE: 错误提示信息
- $FIX_FEATURE_LIST: 额外的处理信息
- $DIR: ./test

如果不太确定 Claude 能否理解提示词,可以在提示词后面补充输出验证

# claude cli
/error-fix
- $ERROR_MESSAGE: 错误提示信息
- $FIX_FEATURE_LIST: 额外的处理信息
- $DIR: ./test

请先输出你得到的提示词结果,然后再开始任务   

SubAgent(子代理)

多任务并行

告诉 Claude Code 启用多任务并行功能

注意关键词:

  • n 个 Agent(use N SubAgent)
  • 并行执行(parallel)

例如:

请使用 3 个并行的 Agent 帮我计划:怎么更快的学习 Claude Code

如果提示词成功的话,CLI 会同时显示 3 个正在执行的任务,这里本质是用到了 SubAgent(子代理)机制,SubAgent 通过主代理启动(即你对话时的 Agent 窗口),基于 SubAgent 实现多任务并行执行

自定义 SubAgent 任务

通过提示词的 SubAgent 表达能力有限,由 Claude 自身能力调度,不太适用于复杂的场景,如果需要自己编写 SubAgent,可以在 ~/.claude/agents 目录下编写基于 Markdown 的 SubAgent 模板

内容包括 Front MatterContent

Front Matter 包括的内容:

  • name:SubAgent 在 CLI 中显示的名称
  • description:描述信息,方便 Claude 定位工具用途
  • tools:支持调用 Claude 内置工具
  • model:使用模型,inhreit 则继承父Agent使用的模型
  • color:Claude 专属属性,表示 CLI 中 agent 名称的背景色,方便阅读

Content 主要表达对 Agent 的定位和任务描述提示词信息

---
name: secutity-auditor
description: "安全专家,用于检查内容中存在的账户信息、脚本等敏感数据"
tools: Read 
model: inherit 
color: blue
---

<!-- 提示词  -->

你是一名安全专家

调用时:

1. 识别调用载体内容的中的账户信息、敏感个人数据
2. 识别载体中的密钥、身份认证内容
3. 识别并整理审查清单

根据严重程度报告发现:

- 高敏感: 需要立刻移除
- 中度敏感: 存在泄漏,但是考虑移除
- 低敏感: 可能存在泄漏,但通常无需移除

执行时调用方式,可以让 Claude 自行推断调用,也可以主动声明调用

Agent 调用:
> 请使用 SubAgent 分析并审查 @vitest.config.ts 的代码安全性问题 

或者指定并行 Agent 调用:
> 请并行使用 code-analyzer secutity-auditor 分析并审查 @vitest.config.ts 的代码安全性和代码规范问题 

执行效果:

SubAgent 和 Command 有什么区别

  • SubAgent 本质也是一个 Agent,可以理解成独立的 Agent 工作区,适用于复杂的任务处理场景。
    • 独立于父 Agent 的上下文,可以使用自己的模型。
    • 支持并行执行。
    • 自主完成工作后返回结果给父 Agent。
  • 指令本身是可重用的工作模板,通过 /指令名称 形式触发。
    • 和 Agent 共享模型和上下文。
    • 用于支持一次性或者快速完成的简单任务。

参考内容

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐