文档: 添加 Claude Code 学习资源与项目配置
- 添加 .claude 配置目录(CLAUDE.md、commands、hooks、memory) - 添加项目根目录 CLAUDE.md - 更新工程 README.md,新增 Claw Code 链接 - 更新知识/金鹏.md,添加 2026-04-10 文章分享内容 - 添加知识图片和参考资料 PDF
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
# 深圳市网新新思软件有限公司 AI研究院
|
||||
|
||||
### Git 工作流
|
||||
|
||||
- **分支**: Trunk-Based Development,主分支 `trunk`
|
||||
- **PR 约束**: 每个 PR 只能改动一个模块
|
||||
- **PR 标题**: `[模块] 描述`,如 `[server] 添加设备授权 API`
|
||||
- **提交类型**: 必须使用中文类型(功能、修复、维护、文档、重构、测试、格式、性能、构建、安全、依赖、清理、优化、配置、规格、合并),禁止使用英文类型(feat、fix、chore 等)
|
||||
|
||||
---
|
||||
|
||||
**最后更新**: 2026-04-05
|
||||
@@ -0,0 +1,114 @@
|
||||
---
|
||||
name: Docker清理
|
||||
description: 清理 Docker 镜像构建临时文件和悬空资源
|
||||
---
|
||||
|
||||
## 用户输入
|
||||
|
||||
```text
|
||||
$ARGUMENTS
|
||||
```
|
||||
|
||||
执行前**必须**处理用户输入(非空时)
|
||||
|
||||
## 参数说明
|
||||
|
||||
支持以下参数(可组合使用):
|
||||
|
||||
- `cache` - 仅清理构建缓存
|
||||
- `images` - 仅清理悬空镜像
|
||||
- `volumes` - 仅清理未使用的卷
|
||||
- `containers` - 额外清理已停止的容器
|
||||
- `all` - 清理默认项目(构建缓存、悬空镜像、未使用的卷)
|
||||
- `detail` 或 `详细` - 显示详细清理过程
|
||||
|
||||
## 输出
|
||||
|
||||
### 格式要求
|
||||
|
||||
按以下格式输出清理结果:
|
||||
|
||||
```markdown
|
||||
## Docker 清理报告
|
||||
|
||||
### 清理前状态
|
||||
|
||||
| 类型 | 总量 | 活跃 | 占用空间 | 可回收 |
|
||||
|------|------|------|----------|--------|
|
||||
| **镜像** | {数量} | {数量} | {大小} | {大小} ({百分比}%) |
|
||||
| **容器** | {数量} | {数量} | {大小} | {大小} ({百分比}%) |
|
||||
| **本地卷** | {数量} | {数量} | {大小} | {大小} ({百分比}%) |
|
||||
| **构建缓存** | {数量} | {数量} | {大小} | {大小} |
|
||||
|
||||
### 清理内容
|
||||
|
||||
执行以下清理:
|
||||
|
||||
- **构建缓存**:{清理的缓存大小}
|
||||
- **悬空镜像**:{删除的镜像数量} 个
|
||||
- **未使用的卷**:{清理的卷大小}
|
||||
|
||||
{如果用户指定了 `containers` 参数,则添加:
|
||||
- **已停止的容器**:{删除的容器数量} 个
|
||||
}
|
||||
|
||||
### 清理后状态
|
||||
|
||||
| 类型 | 总量 | 活跃 | 占用空间 | 可回收 |
|
||||
|------|------|------|----------|--------|
|
||||
| **镜像** | {数量} | {数量} | {大小} | {大小} ({百分比}%) |
|
||||
| **容器** | {数量} | {数量} | {大小} | {大小} ({百分比}%) |
|
||||
| **本地卷** | {数量} | {数量} | {大小} | {大小} ({百分比}%) |
|
||||
| **构建缓存** | {数量} | {数量} | {大小} | {大小} |
|
||||
|
||||
### 清理总结
|
||||
|
||||
**释放空间总计:约 {总大小}**
|
||||
|
||||
{根据清理结果给出建议}
|
||||
```
|
||||
|
||||
### 执行规则
|
||||
|
||||
1. **默认行为** - 无参数时,仅清理构建缓存(不清理悬空镜像、未使用的卷、容器)
|
||||
2. **选择性清理** - 根据 $ARGUMENTS 中的参数执行对应清理
|
||||
3. **容器清理** - 仅当用户明确指定 `containers` 参数时才清理已停止的容器
|
||||
4. **详细模式** - 当 $ARGUMENTS 包含 "detail" 或 "详细" 时,显示详细的清理过程
|
||||
5. **安全检查** - 清理前先检查 Docker 状态,确认可清理内容
|
||||
6. **执行顺序** - 按以下顺序执行:
|
||||
- 检查当前状态(`docker system df`)
|
||||
- 清理构建缓存(`docker builder prune -a -f`)
|
||||
- {如果指定了 `images` 参数} 清理悬空镜像(`docker image prune -f`)
|
||||
- {如果指定了 `volumes` 参数} 清理未使用的卷(`docker volume prune -f`)
|
||||
- {如果指定了 `containers` 参数} 清理已停止的容器(`docker container prune -f`)
|
||||
- 显示清理后状态
|
||||
|
||||
### 清理命令参考
|
||||
|
||||
```bash
|
||||
# 检查磁盘使用情况
|
||||
docker system df
|
||||
|
||||
# 清理构建缓存(默认执行)
|
||||
docker builder prune -a -f
|
||||
|
||||
# 清理悬空镜像(需要明确指定)
|
||||
docker image prune -f
|
||||
|
||||
# 清理未使用的卷(需要明确指定)
|
||||
docker volume prune -f
|
||||
|
||||
# 清理已停止的容器(需要明确指定)
|
||||
docker container prune -f
|
||||
|
||||
# 一次性清理所有未使用资源(包括容器,不推荐使用)
|
||||
docker system prune -a -f --volumes
|
||||
```
|
||||
|
||||
### 注意事项
|
||||
|
||||
- **默认不清理容器**:已停止的容器不会在默认清理中删除,需明确指定 `containers` 参数
|
||||
- 构建缓存清理后重新构建镜像会需要更多时间
|
||||
- 删除的镜像和卷无法恢复,请谨慎操作
|
||||
- 建议定期清理以保持系统整洁
|
||||
- 显示可回收空间不代表实际释放空间,可能因层共享而不同
|
||||
@@ -0,0 +1,161 @@
|
||||
---
|
||||
name: 提交代码
|
||||
description: 提交全部内容并推送到远程仓库(不检查路径)
|
||||
---
|
||||
|
||||
## 用户输入
|
||||
|
||||
```text
|
||||
$ARGUMENTS
|
||||
```
|
||||
|
||||
执行前**必须**处理用户输入(非空时)
|
||||
|
||||
## 输出
|
||||
|
||||
1. 分析本次需要提交的内容,按照**Git 提交规范**整理提交消息
|
||||
|
||||
2. 提交全部内容并推送到远程仓库
|
||||
|
||||
3. 使用以下格式输出
|
||||
|
||||
```text
|
||||
项目根目录: xxx
|
||||
工作目录: xxx
|
||||
本地分支: xxx
|
||||
远程分支: xxx
|
||||
远程地址: xxx
|
||||
用户输入: $ARGUMENTS
|
||||
提交哈希: xxx
|
||||
提交时间: yyyy-MM-dd HH:MM:SS
|
||||
提交日志:
|
||||
|
||||
{git日志}
|
||||
```
|
||||
|
||||
## Git 提交规范
|
||||
|
||||
遵循 Conventional Commits 标准,结合项目特定需求制定以下提交规范:
|
||||
|
||||
### 提交消息格式
|
||||
|
||||
```
|
||||
<类型>(<作用域>): <描述>
|
||||
|
||||
[可选正文]
|
||||
|
||||
[可选脚注]
|
||||
```
|
||||
|
||||
### 提交类型
|
||||
|
||||
**主要类型:**
|
||||
- **功能 (`feat`)**: 添加新功能或增强现有功能
|
||||
- **修复 (`fix`)**: 修复 bug 或错误行为
|
||||
- **维护 (`chore`)**: 维护性任务(依赖更新、配置修改等)
|
||||
- **文档 (`docs`)**: 文档更新、README、注释等
|
||||
- **重构 (`refactor`)**: 代码重构(不改变外部行为)
|
||||
- **测试 (`test`)**: 添加、修改或修复测试代码
|
||||
- **格式 (`style`)**: 代码格式化、空白调整等
|
||||
- **性能 (`perf`)**: 性能优化改进
|
||||
- **构建 (`build`)**: 构建系统、工具链变更
|
||||
|
||||
**扩展类型:**
|
||||
- **安全 (`sec`)**: 安全相关修复或改进
|
||||
- **依赖 (`deps`)**: 依赖包更新或添加
|
||||
- **清理 (`clean`)**: 删除无用代码或文件
|
||||
- **优化 (`perf`)**: 性能或代码优化改进
|
||||
- **配置 (`config`)**: 配置文件修改
|
||||
- **规格 (`spec`)**: speckit 规格文档更新
|
||||
|
||||
**特殊类型:**
|
||||
- **合并 (`merge`)**: 分支合并
|
||||
- **进行 (`wip`)**: 工作进行中(开发中的临时提交)
|
||||
- **回滚 (`revert`)**: 回滚之前的提交
|
||||
- **发布 (`release`)**: 发布版本标签
|
||||
|
||||
### 格式要求
|
||||
|
||||
**标题行规则:**
|
||||
- 使用祈使语气("添加" 而不是 "添加了")
|
||||
- 长度不超过 50 个字符
|
||||
- 类型后使用冒号和空格分隔:`功能: 添加用户认证`
|
||||
- 可指定作用域:`功能(auth): 添加 JWT 验证`
|
||||
|
||||
**正文内容(可选):**
|
||||
- 标题与正文之间留空行
|
||||
- 说明"做什么"和"为什么",而非"怎么做"
|
||||
- 每行不超过 72 个字符
|
||||
- 使用项目符号列出多个改动
|
||||
|
||||
**脚注信息(可选):**
|
||||
- 标记破坏性变更:`破坏性变更: 详细说明`
|
||||
- 关联 issue:`关联: #123` 或 `解决: #456`
|
||||
- 标记不兼容变更:`不兼容: API 接口参数调整`
|
||||
|
||||
### 提交示例
|
||||
|
||||
#### 基础提交
|
||||
```bash
|
||||
功能: 添加用户登录功能
|
||||
修复: 修复内存泄漏问题
|
||||
文档: 更新 API 文档
|
||||
维护: 更新依赖版本
|
||||
```
|
||||
|
||||
#### 带作用域的提交
|
||||
```bash
|
||||
功能(api): 添加用户认证接口
|
||||
功能(ui): 添加登录页面组件
|
||||
修复(服务端): 修复数据库连接超时
|
||||
测试(集成): 添加端到端测试用例
|
||||
```
|
||||
|
||||
#### 详细描述的提交
|
||||
```bash
|
||||
功能: 实现实时消息推送
|
||||
|
||||
- 添加 WebSocket 连接管理
|
||||
- 实现消息广播机制
|
||||
- 添加离线消息存储
|
||||
- 支持消息确认机制
|
||||
|
||||
影响范围:
|
||||
- 前端消息组件更新
|
||||
- 服务端路由扩展
|
||||
- 数据库表结构变更
|
||||
|
||||
关联: #89
|
||||
```
|
||||
|
||||
### Claude Code 提交行为规范
|
||||
|
||||
**重要:Git 提交消息格式要求**
|
||||
|
||||
- **禁止**在提交消息中添加以下内容:
|
||||
- `🤖 Generated with [Claude Code](https://claude.com/claude-code)`
|
||||
- `Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>`
|
||||
- 任何类似的 AI 工具签名或标识
|
||||
|
||||
- **原因**:保持 Git 提交历史的简洁性和专业性,避免冗余的元数据
|
||||
|
||||
- **正确示例**:
|
||||
```
|
||||
文档: 添加用户认证功能
|
||||
|
||||
- 添加 JWT 验证中间件
|
||||
- 实现登录登出接口
|
||||
- 添加权限校验逻辑
|
||||
```
|
||||
|
||||
- **错误示例**(不要这样做):
|
||||
```
|
||||
文档: 添加用户认证功能
|
||||
|
||||
- 添加 JWT 验证中间件
|
||||
|
||||
🤖 Generated with [Claude Code](https://claude.com/claude-code)
|
||||
|
||||
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
||||
```
|
||||
|
||||
Executable
+63
@@ -0,0 +1,63 @@
|
||||
#!/bin/bash
|
||||
# ============================================================================
|
||||
# UserPromptSubmit Hook
|
||||
# 记录用户在 Claude Code 中的输入到 .member/{username}.md 文件
|
||||
# ============================================================================
|
||||
|
||||
# 获取当前用户名
|
||||
USER_NAME=$(whoami)
|
||||
|
||||
# 项目根目录(脚本所在位置的上级目录)
|
||||
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||
MEMBER_DIR="${PROJECT_ROOT}/.member"
|
||||
|
||||
# 确保 .member 目录存在
|
||||
mkdir -p "${MEMBER_DIR}"
|
||||
|
||||
# 用户日志文件
|
||||
USER_LOG="${MEMBER_DIR}/${USER_NAME}.chat.md"
|
||||
|
||||
# 从 stdin 读取 JSON 输入(3 秒超时防止阻塞)
|
||||
INPUT_JSON=$(timeout 3 cat 2>/dev/null) || exit 0
|
||||
|
||||
# 如果输入为空,退出
|
||||
if [ -z "${INPUT_JSON}" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# 提取用户输入内容
|
||||
# Claude Code UserPromptSubmit hook 传递的 JSON 格式: {"prompt": "用户输入"}
|
||||
USER_PROMPT=$(echo "${INPUT_JSON}" | jq -r '.prompt // empty' 2>/dev/null)
|
||||
|
||||
# 如果无法提取内容,尝试直接使用输入
|
||||
if [ -z "${USER_PROMPT}" ]; then
|
||||
USER_PROMPT="${INPUT_JSON}"
|
||||
fi
|
||||
|
||||
# 如果输入为空,退出
|
||||
if [ -z "${USER_PROMPT}" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# 排除 .claude/commands/ 中的命令(/arno-pr 等)
|
||||
COMMANDS_DIR="${PROJECT_ROOT}/.claude/commands"
|
||||
if [ -d "${COMMANDS_DIR}" ]; then
|
||||
# 提取命令名(去掉参数部分),如 "/arno-pr xxx" -> "arno-pr"
|
||||
CMD_NAME=$(echo "${USER_PROMPT}" | sed 's|^/\([^ ]*\).*$|\1|')
|
||||
if [ -n "${CMD_NAME}" ] && [ -f "${COMMANDS_DIR}/${CMD_NAME}.md" ]; then
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# 获取当前时间戳
|
||||
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
|
||||
|
||||
# 如果文件不存在,创建并添加文件头
|
||||
if [ ! -f "${USER_LOG}" ]; then
|
||||
printf '# %s 的对话记录\n\n' "${USER_NAME}" > "${USER_LOG}"
|
||||
fi
|
||||
|
||||
# 追加用户输入到文件(使用 printf 避免内容中的特殊字符导致 heredoc 展开问题)
|
||||
printf '\n## %s\n\n%s\n\n' "${TIMESTAMP}" "${USER_PROMPT}" >> "${USER_LOG}"
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,12 @@
|
||||
# iPass 自动记忆
|
||||
|
||||
> 最后更新: 2026-04-08
|
||||
|
||||
> **注意**: 项目核心信息已在 [.claude/CLAUDE.md](../.claude/CLAUDE.md) 中定义,此文件仅用于 Claude 自动学习的内容。
|
||||
|
||||
## 用户偏好
|
||||
|
||||
- [用户偏好](./user_preferences.md) — 文档层级管理、上下文管理
|
||||
|
||||
---
|
||||
*此文件由 Claude 自动记忆功能维护,记录会话中发现的有价值的模式、偏好和解决方案。*
|
||||
@@ -0,0 +1,17 @@
|
||||
---
|
||||
name: 用户偏好
|
||||
description: 文档管理、上下文管理等用户偏好设置
|
||||
type: user
|
||||
---
|
||||
|
||||
# 用户偏好
|
||||
|
||||
## 文档层级管理
|
||||
|
||||
- `.claude/CLAUDE.md` 是项目主指南,所有开发实践以此为基准
|
||||
- `.claude/memory/MEMORY.md` 记录跨会话偏好和经验
|
||||
- `CLAUDE.md` (根目录) 由 `/speckit.specify` 自动生成,仅作为简洁入口
|
||||
|
||||
## 上下文管理
|
||||
|
||||
- 当前使用 GLM-5 模型(200K 上下文),当上下文使用达到 150K 时,执行 `/compact` 命令进行压缩
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"env": {
|
||||
"CLAUDE_CODE_AUTO_COMPACT_WINDOW": "200000",
|
||||
"CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "75"
|
||||
},
|
||||
"hooks": {
|
||||
"UserPromptSubmit": [
|
||||
{
|
||||
"hooks": [
|
||||
{
|
||||
"type": "command",
|
||||
"command": ".claude/hooks/user-prompt-submit.sh"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user