Claude Code 有意思的功能
2026/3/22
Claude Code 技巧 工具
Claude Code 有意思的功能
从官方文档整理,聚焦实用但容易被忽略的功能。
🔥 CLI Flags 精选
会话管理
| Flag | 说明 | 示例 |
|---|---|---|
--name / -n | 给会话命名,显示在提示栏和 /resume 中 | claude -n "auth-refactor" |
--fork-session | 恢复时创建新会话 ID(保留原会话) | claude -r abc123 --fork-session |
--worktree / -w | 在隔离的 git worktree 中启动 | claude -w feature-auth |
--from-pr | 恢复关联到特定 GitHub PR 的会话 | claude --from-pr 123 |
控制模型行为
| Flag | 说明 | 示例 |
|---|---|---|
--effort | 设置努力级别(Opus 4.6) | claude --effort high |
--model | 指定模型 | claude --model opus |
--betas | 启用 beta 功能 | claude --betas interleaved-thinking |
脚本模式
| Flag | 说明 | 示例 |
|---|---|---|
--print / -p | 非交互模式,打印结果后退出 | claude -p "explain this" |
--output-format | 输出格式(text/json/stream-json) | claude -p --output-format json "task" |
--json-schema | 强制 JSON Schema 输出 | claude -p --json-schema '{"type":"object"}' "task" |
--max-turns | 限制 agentic 轮数 | claude -p --max-turns 3 "task" |
--max-budget-usd | 限制 API 花费 | claude -p --max-budget-usd 1.00 "task" |
系统提示词控制
| Flag | 说明 |
|---|---|
--system-prompt | 替换整个系统提示词 |
--system-prompt-file | 从文件加载系统提示词 |
--append-system-prompt | 追加到默认提示词末尾 |
--append-system-prompt-file | 从文件追加 |
推荐:用 append 而不是 replace,保留 Claude Code 内置能力。
权限控制
| Flag | 说明 |
|---|---|
--permission-mode | 指定权限模式(default/plan/acceptEdits/bypassPermissions) |
--allowedTools | 不需要确认的工具 |
--disallowedTools | 完全禁用的工具 |
--tools | 限制可用工具 |
远程和 Web
| Flag | 说明 |
|---|---|
--remote | 在 claude.ai 创建 Web 会话 |
--remote-control | 启用远程控制(手机/浏览器继续) |
--teleport | 在本地恢复 Web 会话 |
🧩 Skills 系统
Skills 是扩展 Claude 能力的核心方式。一个 SKILL.md 文件就能添加新功能。
Skills 存放位置
| 位置 | 路径 | 作用范围 |
|---|---|---|
| 个人 | ~/.claude/skills/<name>/SKILL.md | 所有项目 |
| 项目 | .claude/skills/<name>/SKILL.md | 当前项目 |
| 插件 | <plugin>/skills/<name>/SKILL.md | 插件启用时 |
Frontmatter 字段
---
name: my-skill
description: 技能描述(Claude 用这个决定何时使用)
argument-hint: [issue-number] # 自动完成时显示的参数提示
disable-model-invocation: true # 只能手动 /invoke,Claude 不会自动用
user-invocable: false # 从 / 菜单隐藏
allowed-tools: Read, Grep # 限制可用工具
model: opus # 指定模型
effort: high # 指定努力级别
context: fork # 在子代理中运行
agent: Explore # 子代理类型
---
参数传递
---
name: fix-issue
description: 修复 GitHub issue
---
修复 GitHub issue $ARGUMENTS。
# 或者按位置访问
修复 $0($1 到 $2)
调用:/fix-issue 123 → $ARGUMENTS = 123
动态上下文注入
用 !`command` 在发送给 Claude 之前执行命令:
---
name: pr-summary
description: 总结 PR 变更
---
## PR 上下文
- Diff: !`gh pr diff`
- Comments: !`gh pr view --comments`
- Files: !`gh pr diff --name-only`
总结这个 PR...
在子代理中运行
---
name: deep-research
description: 深度研究
context: fork
agent: Explore
---
研究 $ARGUMENTS:
1. 用 Glob 和 Grep 找相关文件
2. 阅读分析代码
3. 总结发现,附上文件引用
内置 Bundled Skills
| Skill | 说明 |
|---|---|
/batch <instruction> | 大规模并行修改代码库(5-30 个独立任务) |
/claude-api | 加载 Claude API 参考文档 |
/debug [description] | 调试当前会话 |
/loop [interval] <prompt> | 定时重复执行 prompt |
/simplify [focus] | 审查最近修改,修复代码质量问题 |
🪝 Hooks 系统
Hooks 在特定生命周期事件时自动执行 shell 命令。
事件列表
| 事件 | 触发时机 | 可阻止操作 |
|---|---|---|
PreToolUse | 工具调用前 | ✅ |
PostToolUse | 工具调用后 | ❌ |
PermissionRequest | 权限对话框出现时 | ✅ |
UserPromptSubmit | 用户提交 prompt 时 | ✅ |
SessionStart | 会话开始/恢复时 | ❌ |
Stop | Claude 完成响应时 | ✅ |
Notification | Claude 需要输入时 | ❌ |
PreCompact / PostCompact | 上下文压缩前后 | ❌ |
ConfigChange | 配置文件修改时 | ✅ |
Hook 配置示例
1. 桌面通知(Claude 需要输入时)
{
"hooks": {
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "osascript -e 'display notification \"Claude Code 需要你的注意\" with title \"Claude Code\"'"
}
]
}
]
}
}
2. 自动格式化(编辑后)
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "jq -r '.tool_input.file_path' | xargs npx prettier --write"
}
]
}
]
}
}
3. 阻止修改敏感文件
{
"hooks": {
"PreToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/protect-files.sh"
}
]
}
]
}
}
脚本逻辑:检查文件路径,匹配 .env、package-lock.json 等则 exit 2 阻止。
4. 压缩后重新注入上下文
{
"hooks": {
"SessionStart": [
{
"matcher": "compact",
"hooks": [
{
"type": "command",
"command": "echo '提醒:用 Bun 而不是 npm。提交前运行 bun test。'"
}
]
}
]
}
}
5. 自动批准特定权限
{
"hooks": {
"PermissionRequest": [
{
"matcher": "ExitPlanMode",
"hooks": [
{
"type": "command",
"command": "echo '{\"hookSpecificOutput\": {\"hookEventName\": \"PermissionRequest\", \"decision\": {\"behavior\": \"allow\"}}}'"
}
]
}
]
}
}
Hook 退出码
| 退出码 | 效果 |
|---|---|
| 0 | 操作继续,stdout 内容添加到上下文 |
| 2 | 阻止操作,stderr 内容作为反馈给 Claude |
| 其他 | 操作继续,stderr 仅记录 |
Prompt-based Hooks
用 LLM 做判断而不是固定规则:
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "prompt",
"prompt": "检查所有任务是否完成。如果没有,返回 {\"ok\": false, \"reason\": \"还有什么没做\"}。"
}
]
}
]
}
}
Agent-based Hooks
需要读取文件或执行命令时用:
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "agent",
"prompt": "验证所有单元测试通过。运行测试套件并检查结果。",
"timeout": 120
}
]
}
]
}
}
💡 实用技巧
1. 用 /effort 控制思考深度
/effort high # 复杂任务
/effort max # 最难的任务(消耗更多 token)
2. 会话命名便于切换
claude -n "refactor-auth"
# 或会话中
/rename 认证重构
3. 用 --worktree 并行工作
# 在隔离的 worktree 中启动,不干扰主分支
claude -w feature-auth
4. 远程继续工作
/remote-control
生成链接,在手机或浏览器继续当前会话。
5. 脚本模式获取结构化输出
# 获取 JSON 输出
claude -p --output-format json "list all TODOs"
# 强制 JSON Schema
claude -p --json-schema '{"type":"array","items":{"type":"string"}}' "list files"
6. 限制花费
claude -p --max-budget-usd 1.00 --max-turns 5 "task"