Claude Code 项目 /init 命令详解

本文档详细讲解 Claude Code 项目中 /init 命令的源码实现、执行流程、生成文件的层级体系及相关机制。


目录

  • [1. 概述](#1. 概述)
  • [2. 命令注册与入口](#2. 命令注册与入口)
  • [3. 两种 Prompt 变体](#3. 两种 Prompt 变体)
  • [4. 命令执行流程](#4. 命令执行流程)
  • [5. CLAUDE.md 文件层级体系](#5. CLAUDE.md 文件层级体系)
  • [6. @include 指令](#6. @include 指令)
  • [7. Frontmatter 路径过滤](#7. Frontmatter 路径过滤)
  • [8. Onboarding 集成](#8. Onboarding 集成)
  • [9. 相关命令](#9. 相关命令)
  • [10. CLAUDE.md 内容最佳实践](#10. CLAUDE.md 内容最佳实践)
  • 附录:关键源文件索引

1. 概述

/init 是 Claude Code 的内置 prompt 类型斜杠命令。与其他直接执行代码的命令不同,/init 的核心机制是:

  1. 生成一段精心设计的 prompt 文本
  2. 将该 prompt 发送给 Claude 模型
  3. 模型调用 Read、Write、Glob、Grep、AskUserQuestion、Bash 等工具自主分析代码库
  4. 模型根据分析结果写入 CLAUDE.mdCLAUDE.local.md、Skills 等配置文件

适用场景:项目首次接入 Claude Code 时的初始化指引,为后续所有 Claude Code 会话提供项目上下文。


2. 命令注册与入口

2.1 命令定义

命令对象定义于 src/commands/init.ts:226-256

复制代码
const command = {
  type: 'prompt',
  name: 'init',
  get description() {
    return feature('NEW_INIT') &&
      (process.env.USER_TYPE === 'ant' ||
        isEnvTruthy(process.env.CLAUDE_CODE_NEW_INIT))
      ? 'Initialize new CLAUDE.md file(s) and optional skills/hooks with codebase documentation'
      : 'Initialize a new CLAUDE.md file with codebase documentation'
  },
  contentLength: 0, // Dynamic content
  progressMessage: 'analyzing your codebase',
  source: 'builtin',
  async getPromptForCommand() {
    maybeMarkProjectOnboardingComplete()
    return [
      {
        type: 'text',
        text:
          feature('NEW_INIT') &&
          (process.env.USER_TYPE === 'ant' ||
            isEnvTruthy(process.env.CLAUDE_CODE_NEW_INIT))
            ? NEW_INIT_PROMPT
            : OLD_INIT_PROMPT,
      },
    ]
  },
} satisfies Command

2.2 属性说明

属性 含义
type 'prompt' 生成 prompt 而非直接执行代码
name 'init' 命令名,用户通过 /init 调用
contentLength 0 内容长度动态决定
progressMessage 'analyzing your codebase' 执行时的进度提示文本
source 'builtin' 内置命令,非插件提供

命令无参数、无选项、无子命令、无别名。

2.3 注册流程

  • src/commands.ts:25 --- 导入命令:import init from './commands/init.js'
  • src/commands.ts:283 --- 在 COMMANDS() 记忆化数组中注册(与 helpconfigmemory 等并列)
  • src/commands.ts:476 --- getCommands() 函数通过 meetsAvailabilityRequirementisCommandEnabled 过滤命令。由于 initavailability 字段,所有用户均可使用。

3. 两种 Prompt 变体

/init 命令根据 feature flag 和环境变量在两种 prompt 之间切换。

3.1 OLD_INIT_PROMPT(原始版本)

文件src/commands/init.ts:6-26

触发条件feature('NEW_INIT') 为 false,或环境变量未设置

Prompt 内容(翻译为中文说明):

  1. 分析代码库,创建 CLAUDE.md 文件
  2. 包含常用命令:构建、lint、测试,包括运行单个测试的方法
  3. 包含高层代码架构和结构,聚焦需要阅读多个文件才能理解的"大局"架构
  4. 如已存在 CLAUDE.md 则建议改进
  5. 不重复、不包含显而易见的指令(如"提供有用的错误信息"、"编写单元测试")
  6. 不列出可轻易发现的组件或文件结构
  7. 不包含通用开发实践
  8. 整合 Cursor rules(.cursor/rules/.cursorrules)、Copilot rules(.github/copilot-instructions.md)的重要部分
  9. 整合 README.md 的重要部分
  10. 不编造信息
  11. 文件固定前缀:# CLAUDE.md + This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

3.2 NEW_INIT_PROMPT(新版本,8 阶段)

文件src/commands/init.ts:28-224

触发条件feature('NEW_INIT') === true 且(USER_TYPE === 'ant'isEnvTruthy(process.env.CLAUDE_CODE_NEW_INIT)

这是功能更完善的版本,分为 8 个阶段:

Phase 1:询问用户设置范围(第 30-43 行)

通过 AskUserQuestion 工具获取两个关键决策:

目标文件选择: | 选项 | 说明 | |------|------| | Project CLAUDE.md | 团队共享指令,签入源码控制 | | Personal CLAUDE.local.md | 个人私有偏好,gitignored | | Both | 同时创建两个文件 |

Skills+Hooks 设置: | 选项 | 说明 | |------|------| | Skills + hooks | 同时启用 | | Skills only | 仅创建按需技能 | | Hooks only | 仅创建确定性钩子 | | Neither | 仅创建 CLAUDE.md |

Phase 2:通过子代理探索代码库(第 44-58 行)

启动子代理读取关键文件以理解项目:

读取的文件类型

  • 清单文件:package.jsonCargo.tomlpyproject.tomlgo.modpom.xml
  • 项目文档:README、Makefile、CI 配置
  • 现有配置:CLAUDE.md.claude/rules/AGENTS.md
  • AI 工具配置:.cursor/rules.cursorrules.github/copilot-instructions.md.windsurfrules.clinerules.mcp.json

检测内容

  • 构建、测试、lint 命令(尤其是非标准的)
  • 语言、框架、包管理器
  • 项目结构(monorepo with workspaces、multi-module、single project)
  • 与语言默认值不同的代码风格规则
  • 非显而易见的陷阱、必需的环境变量、工作流特殊要求
  • 格式化器配置(prettier、biome、ruff、black、gofmt、rustfmt,或统一格式脚本)
  • git worktree 使用情况(git worktree list
Phase 3:通过 AskUserQuestion 填补缺口(第 60-93 行)

原则:仅问代码无法回答的问题。

项目级问题(选择 Project CLAUDE.md 或 Both 时):

  • 非显而易见的命令、陷阱、分支/PR 约定、环境设置要求、测试特殊要求

个人级问题(选择 Personal CLAUDE.local.md 或 Both 时):

  • 用户在团队中的角色
  • 对代码库和语言/框架的熟悉程度
  • 个人沙箱 URL、测试账户、本地设置详情
  • git worktree 使用方式(嵌套 vs 并列)
  • 沟通偏好(如"简洁"、"始终解释权衡"、"不要在结尾总结")

提案生成

  • 综合 Phase 2 发现形成提案
  • 通过 AskUserQuestionpreview 字段展示(markdown 渲染在侧边栏)
  • 每项提案标注类型:Hook(自动执行)/ Skill(按需调用)/ Note(行为指导)

偏好队列 :接受的提案构建为队列,每项包含 {type, description, target file, details},后续阶段消费。

Phase 4:写入 CLAUDE.md(第 95-135 行)

最小化原则:每行必须通过"移除后是否会导致 Claude 犯错"的测试。如果不通过,删除该行。

包含内容

  • 构建/测试/lint 命令(Claude 无法猜测的非标准脚本)
  • 与语言默认值不同的代码风格规则
  • 测试指令和特殊要求
  • 仓库规范(分支命名、PR 约定、提交风格)
  • 必需的环境变量或设置步骤
  • 非显而易见的陷阱或架构决策
  • 现有 AI 编码工具配置的重要部分

排除内容

  • 文件级结构或组件列表(Claude 可自行发现)
  • 标准语言约定
  • 通用建议("write clean code"、"handle errors")
  • 详细 API 文档(改用 @path/to/import 引用)
  • 频繁变化的信息(引用源文件)
  • 长教程或演练(移至独立文件并用 @path 引用)
  • 清单文件中显而易见的命令(如标准 npm testcargo testpytest

已有 CLAUDE.md:读取后提出差异建议,说明每项改进的原因,不静默覆盖。

高级组织

  • 支持 .claude/rules/ 目录拆分为多个聚焦文件(如 code-style.mdtesting.mdsecurity.md
  • 支持子目录 CLAUDE.md(monorepo 中模块特定指令)
Phase 5:写入 CLAUDE.local.md(第 137-152 行)

包含内容

  • 用户角色和对代码库的熟悉程度
  • 个人沙箱 URL、测试账户、本地设置详情
  • 个人工作流或沟通偏好

自动操作

  • 添加 CLAUDE.local.md.gitignore

git worktree 处理

  • 嵌套 worktree(.claude/worktrees/<name>/):主仓库的 CLAUDE.local.md 自动被发现
  • 并列/外部 worktree(../myrepo-feature/):个人内容写入 ~/.claude/<project-name>-instructions.md,每个 worktree 创建一行 stub 文件:@~/.claude/<project-name>-instructions.md
  • 注意:stub 引用绝不放入项目 CLAUDE.md(团队共享文件不应包含个人引用)
Phase 6:建议并创建 Skills(第 154-183 行)

创建位置.claude/skills/<skill-name>/SKILL.md

文件格式

复制代码
---
name: <skill-name>
description: <what the skill does and when to use it>
---

<Instructions for Claude>

调用方式

  • 用户和 Claude 均可默认调用
  • 有副作用的工作流(如 /deploy)添加 disable-model-invocation: true
  • 使用 $ARGUMENTS 接受输入参数
Phase 7:建议额外优化(第 185-210 行)

检测与建议

  • GitHub CLIwhich gh(Linux/macOS)或 where gh(Windows),缺失时建议安装
  • Linting:检测 Phase 2 是否发现 lint 配置,缺失时建议设置
  • Hooks :消费偏好队列中的 hook 条目

Hook 配置 : | 用户选择 | 目标文件 | |----------|----------| | Project CLAUDE.md | .claude/settings.json(团队共享,签入) | | Personal CLAUDE.local.md | .claude/settings.local.json(私有) |

事件映射 : | 用户意图 | 事件 | 匹配器 | |----------|------|--------| | 每次编辑后 | PostToolUse | Write\|Edit | | Claude 完成时 | Stop | --- | | 运行 bash 前 | PreToolUse | Bash |

注意git commit 前的 hook 无法通过 matchers 实现(无法过滤特定 bash 命令),应路由到 git pre-commit hook。

Phase 8:总结与后续步骤(第 213-224 行)

总结内容

  • 回顾已写入的文件和关键内容
  • 提醒用户这些文件是起点,可随时运行 /init 重新扫描

建议待办事项

  • 前端代码检测:建议安装 frontend-designplaywright 插件
  • Phase 7 中用户拒绝的优化项再次提示
  • 测试缺失时建议设置测试框架
  • 建议安装 skill-creator 插件以创建和优化技能
  • 建议浏览官方插件(/plugin

4. 命令执行流程

完整的调用链如下:

复制代码
用户输入 "/init"
  │
  ▼
src/utils/slashCommandParsing.ts:25 --- parseSlashCommand("/init")
  │ 返回 { commandName: 'init', args: '', isMcp: false }
  │
  ▼
src/utils/processUserInput/processSlashCommand.tsx:309 --- processSlashCommand()
  │ 查找命令: hasCommand('init', commands) / getCommand()
  │
  ▼
src/utils/processUserInput/processSlashCommand.tsx:723 --- case 'prompt': 分支
  │
  ▼
src/utils/processUserInput/processSlashCommand.tsx:827 --- getMessagesForPromptSlashCommand()
  │ 调用 command.getPromptForCommand(args, context)
  │
  ▼
src/commands/init.ts:239-253 --- getPromptForCommand()
  │ 1. 调用 maybeMarkProjectOnboardingComplete()
  │ 2. 根据 feature flag 选择 OLD_INIT_PROMPT 或 NEW_INIT_PROMPT
  │ 3. 返回 [{ type: 'text', text: promptText }]
  │
  ▼
返回 { messages: [...], shouldQuery: true, command }
  │
  ▼
QueryEngine 接收 prompt → 模型使用工具执行指令
  │
  ▼
模型分析代码库 → 写入 CLAUDE.md / CLAUDE.local.md / Skills

4.1 斜杠命令解析

parseSlashCommand()src/utils/slashCommandParsing.ts:25):

  • 输入必须以 / 开头
  • 按空格分割:第一个词为命令名,后续为参数
  • 特殊处理 MCP 命令(第二个词为 (MCP) 时标记 isMcp: true

4.2 Prompt 类型命令分发

processSlashCommand() 中的 case 'prompt': 分支(src/utils/processUserInput/processSlashCommand.tsx:723):

  • 检查是否为 context: 'fork' 的命令(分叉子代理执行)
  • 否则调用 getMessagesForPromptSlashCommand()
  • AbortError 时返回中断消息
  • 其他错误返回错误消息

4.3 消息构建

getMessagesForPromptSlashCommand()src/utils/processUserInput/processSlashCommand.tsx:827):

  • 调用 command.getPromptForCommand() 获取 prompt 内容
  • 注册 skill hooks(如果定义且允许)
  • 记录技能调用(用于 compaction preservation)
  • 构建加载元数据(命令名、进度消息等)
  • 提取消息中的附件引用(@-mentions、MCP resources)
  • 返回 { messages: [...], shouldQuery: true },触发模型处理

5. CLAUDE.md 文件层级体系

5.1 四层加载顺序

文件定义于 src/utils/claudemd.ts:1-26 的注释中:

层级 类型 路径 说明
1(最低) Managed /etc/claude-code/CLAUDE.md 全局管理指令(策略设置)
2 User ~/.claude/CLAUDE.md 用户私有全局指令
3 Project CLAUDE.md.claude/CLAUDE.md.claude/rules/*.md 代码库中的团队共享指令
4(最高) Local CLAUDE.local.md 用户私有项目级指令(gitignored)

加载顺序为逆优先级:先加载低优先级文件,后加载高优先级文件。模型对后加载的内容关注度更高。

5.2 文件发现规则

核心函数:getMemoryFiles()src/utils/claudemd.ts:790

发现流程

  1. Managed 层 :读取 /etc/claude-code/CLAUDE.md 和 Managed .claude/rules/*.md
  2. User 层 (需 userSettings 启用):读取 ~/.claude/CLAUDE.md~/.claude/rules/*.md
  3. Project + Local 层 :从当前目录向上遍历到根目录,每个目录尝试:
    • CLAUDE.md(Project 类型)
    • .claude/CLAUDE.md(Project 类型)
    • .claude/rules/*.md(Project 类型)
    • CLAUDE.local.md(Local 类型)
  4. 额外目录 :处理 --add-dir 参数指定的目录的 CLAUDE.md
  5. AutoMem :处理自动记忆入口文件(memory.md),需功能开启
  6. TeamMem:处理团队记忆入口文件,需功能开启

嵌套 Worktree 处理src/utils/claudemd.ts:859-884):

当运行在嵌套于主仓库的 worktree(如 .claude/worktrees/<name>/)中时:

  • 跳过主仓库工作树中 Worktree 根目录之外的目录的 Project 类型文件
  • 避免同一内容被加载两次
  • CLAUDE.local.md 是 gitignored 的,仅存在于主仓库中,仍会被加载

5.3 排除机制

函数:isClaudeMdExcluded()src/utils/claudemd.ts:547

  • 通过 claudeMdExcludes 设置排除特定路径
  • 仅应用于 User、Project、Local 类型(Managed、AutoMem、TeamMem 永不被排除)
  • 支持 glob 模式匹配
  • 处理符号链接(如 macOS 的 /tmp/private/tmp

5.4 记忆类型

函数:MemoryFileInfosrc/utils/claudemd.ts:229

复制代码
export type MemoryFileInfo = {
  path: string
  type: MemoryType          // Managed | User | Project | Local | AutoMem | TeamMem
  content: string
  parent?: string           // 包含此文件的文件路径
  globs?: string[]          // 此规则适用的文件路径 glob 模式
  contentDiffersFromDisk?: boolean
  rawContent?: string
}

6. @include 指令

6.1 语法

CLAUDE.md 文件中的 @include 指令允许引用其他文件的内容:

复制代码
@path                    # 相对路径(等同 @./path)
@./relative/path         # 相对路径
@~/home/path             # 用户 home 目录
@/absolute/path          # 绝对路径
@path/to\ file.md        # 空格通过 \ 转义
@path/to/file.md#section # 支持 fragment 标识符(自动剥离)

6.2 解析规则

解析由 extractIncludePathsFromTokens()src/utils/claudemd.ts:448-535)完成:

正则表达式/(?:^|\s)@((?:[^\s\\]|\\ )+)/g

解析行为

  • 仅在 Markdown 的叶子文本节点中解析
  • 跳过 codecodespan 类型(代码块和行内代码中的 @ 不被解析)
  • HTML 注释中的 @path:剥离注释后检查剩余内容
  • @path(无前缀)视为相对路径(等同 @./path

路径验证src/utils/claudemd.ts:476-488):

  • ./ 开头 → 相对路径
  • ~/ 开头 → 用户 home 目录
  • / 开头(且不是单独的 /)→ 绝对路径
  • 其他:匹配 ^[a-zA-Z0-9._-] 且不匹配 ^[#%^&*()]+ → 相对路径

6.3 嵌套深度限制

  • 最大嵌套深度:5 层(MAX_INCLUDE_DEPTHsrc/utils/claudemd.ts:537
  • 通过 processedPaths 集合防止循环引用
  • 不存在的文件静默忽略

6.4 递归处理

processMemoryFile()src/utils/claudemd.ts:618-685):

  1. 检查是否已处理(防循环)或超过最大深度
  2. 检查是否被排除
  3. 解析符号链接路径
  4. 读取文件内容并提取 @include 路径
  5. 主文件先加入结果数组
  6. 递归处理所有被引用的文件

6.5 允许的文件扩展名

TEXT_FILE_EXTENSIONS 集合(src/utils/claudemd.ts:96-227)定义了 @include 允许引用的文件类型:

  • 文档:.md, .txt, .rst, .adoc, .org, .tex
  • 数据:.json, .yaml, .yml, .toml, .xml, .csv
  • Web:.html, .css, .scss, .less, .vue, .svelte, .astro
  • JavaScript/TypeScript:.js, .ts, .tsx, .jsx, .mjs, .cjs
  • Python:.py, .pyi, .pyw
  • 系统语言:.c, .cpp, .h, .hpp, .cs, .java, .kt, .scala, .go, .rs, .swift, .dart
  • Shell:.sh, .bash, .zsh, .fish, .ps1, .bat, .cmd
  • 其他:.sql, .graphql, .proto, .php, .lua, .r, .rb, .ex, .hs, .ml

二进制文件(图片、PDF 等)不被允许。


7. Frontmatter 路径过滤

7.1 机制

.claude/rules/*.md 文件支持 YAML frontmatter 中的 paths 字段,用于限定规则适用的文件路径范围。

示例

复制代码
---
paths: src/components/**
---

在此目录下的组件文件使用 2 空格缩进。

7.2 解析逻辑

函数:parseFrontmatterPaths()src/utils/claudemd.ts:254-279

  1. 使用 parseFrontmatter() 提取 frontmatter 和正文内容
  2. 如果无 paths 字段,返回无限制内容
  3. 通过 splitPathInFrontmatter() 分割路径模式
  4. 剥离每个模式的 /** 后缀(ignore 库自动匹配子目录)
  5. 如果所有模式为空或全为 **,视为无限制

7.3 条件加载

processMdRules()src/utils/claudemd.ts:697)中的 conditionalRule 参数控制:

  • conditionalRule: false --- 仅加载无 frontmatter paths 的规则(无条件规则)
  • conditionalRule: true --- 仅加载有 frontmatter paths 的规则(有条件规则),需通过 glob 匹配当前文件路径

7.4 匹配库

使用 picomatch 进行 glob 匹配(与 .gitignore 语法兼容),{ dot: true } 选项允许匹配以 . 开头的文件/目录。


8. Onboarding 集成

8.1 引导步骤

文件:src/projectOnboardingState.ts

getSteps() 返回两个步骤:

步骤 key 文本 启用条件 完成检测
1 workspace "Ask Claude to create a new app or clone a repository" 工作目录为空 始终未完成(可完成)
2 claudemd "Run /init to create a CLAUDE.md file with instructions for Claude" 工作目录非空 检查 CLAUDE.md 是否存在

8.2 状态追踪

isProjectOnboardingComplete()(第 43 行):

  • 检查所有 isCompletable && isEnabled 的步骤是否都 isComplete
  • 步骤 1 仅在空目录时启用且可完成
  • 步骤 2 仅在非空目录时启用

maybeMarkProjectOnboardingComplete()(第 49 行):

  • 短路检查:已标记完成则直接返回
  • 检查 isProjectOnboardingComplete(),若完成则保存到项目配置

shouldShowProjectOnboarding()(第 63 行):

  • 已完成 → 不显示
  • 已显示 >= 4 次 → 不显示
  • DEMO 模式 → 不显示
  • 否则根据完成状态决定

8.3 与 /init 的关系

init.getPromptForCommand() 执行时(src/commands/init.ts:240),首先调用 maybeMarkProjectOnboardingComplete()。这意味着运行 /init 会自动标记引导完成。


9. 相关命令

9.1 /init-verifiers

文件src/commands/init-verifiers.ts

  • 类型:PromptCommandtype: 'prompt'
  • 限制:列于 INTERNAL_ONLY_COMMANDS,仅 USER_TYPE === 'ant'(Anthropic 内部用户)可用
  • 功能:创建自动化验证技能,在 .claude/skills/<verifier-name>/SKILL.md 中生成
  • 支持的验证器类型:Playwright、CLI、API 验证

9.2 /remember

文件src/skills/bundled/remember.ts

  • 功能:自动记忆推广工作流
  • CLAUDE.md 的交互:将对话中的重要信息自动写入记忆文件

10. CLAUDE.md 内容最佳实践

以下规则提炼自 NEW_INIT_PROMPT 中的写入指令,适用于所有 CLAUDE.md 文件的编写。

10.1 应该包含

  • 构建/测试/lint 命令:Claude 无法猜测的非标准脚本、参数、序列
  • 代码风格差异:与语言默认值不同的规则(如"TypeScript 中使用 type 而非 interface")
  • 测试指令:运行单个测试的方法、测试框架的特殊要求
  • 仓库规范:分支命名约定、PR 约定、提交风格
  • 环境要求:必需的环境变量、设置步骤
  • 非显而易见的陷阱:架构决策、历史遗留问题、特殊工作流
  • AI 工具配置整合AGENTS.md、.cursor/rules、.github/copilot-instructions.md 等的重要部分

10.2 应该排除

  • 文件结构列表:Claude 可通过 Glob/Read 自行发现
  • 标准语言约定:Claude 已知的标准实践
  • 通用建议:如"write clean code"、"handle errors"、"provide helpful error messages"
  • 详细 API 文档 :改用 @path/to/import 语法引用
  • 频繁变化的信息:引用源文件确保 Claude 始终读取最新版本
  • 长教程/演练 :移至独立文件并用 @path 引用,或放入技能
  • 清单文件中显而易见的命令 :如标准 npm testcargo testpytest

10.3 技术限制

限制 来源
单文件最大字符数 40,000 MAX_MEMORY_CHARACTER_COUNTsrc/utils/claudemd.ts:92
@include 最大嵌套深度 5 层 MAX_INCLUDE_DEPTHsrc/utils/claudemd.ts:537
已有文件处理 不静默覆盖,提出差异建议 Phase 4 指令
拆分组织 支持 .claude/rules/ 目录和子目录 CLAUDE.md Phase 4 指令

10.4 写作风格要求

  • 具体性:"Use 2-space indentation in TypeScript" 优于 "Format code properly"
  • 最小化:每行必须通过"移除后是否会导致 Claude 犯错"的测试
  • 无重复:不重复自身
  • 无编造:不编造信息,如 "Common Development Tasks"、"Tips for Development"
  • 固定前缀 :文件必须以 # CLAUDE.md + 说明文本开头

附录:关键源文件索引

文件路径 行号范围 内容
src/commands/init.ts 1-257 命令定义、OLD/NEW prompt 文本
src/commands.ts 25, 283, 476 导入、注册、命令过滤
src/types/command.ts --- Command、PromptCommand 类型定义
src/utils/slashCommandParsing.ts 25-60 斜杠命令解析
src/utils/processUserInput/processSlashCommand.tsx 723-827 prompt 类型命令分发与消息构建
src/utils/claudemd.ts 1-26 文件加载顺序注释
src/utils/claudemd.ts 96-227 TEXT_FILE_EXTENSIONS 集合
src/utils/claudemd.ts 229-243 MemoryFileInfo 类型定义
src/utils/claudemd.ts 254-279 parseFrontmatterPaths()
src/utils/claudemd.ts 448-535 extractIncludePathsFromTokens()
src/utils/claudemd.ts 537 MAX_INCLUDE_DEPTH 常量
src/utils/claudemd.ts 540-612 isClaudeMdExcluded() 和符号链接解析
src/utils/claudemd.ts 618-685 processMemoryFile() 递归处理
src/utils/claudemd.ts 697-788 processMdRules() 目录规则处理
src/utils/claudemd.ts 790-1028 getMemoryFiles() 核心发现逻辑
src/utils/claudemd.ts 1435 isMemoryFilePath() 判断函数
src/projectOnboardingState.ts 1-84 引导状态管理
src/commands/init-verifiers.ts --- /init-verifiers 命令(内部)
src/skills/bundled/remember.ts --- /remember 技能
相关推荐
ZC跨境爬虫8 小时前
跟着 MDN 学CSS day_9:(深入掌握CSS选择器核心技能测试)
前端·css·ui·html
Daybreak8 小时前
Convex + Next.js + Clerk 上线求生指南:六个坑,一个比一个离谱
前端
marsh02068 小时前
53 openclaw插件市场:开发与发布自己的插件
开发语言·前端·javascript
Daybreak8 小时前
AI Chat 重构:从全屏页面到右侧可折叠侧边栏,7 个 Zustand Store 合并为 1 个 Hook
前端
Daybreak8 小时前
从硬编码路由到 ReAct Agent Loop:AI Chat 的工具调用重构
前端
用户938515635079 小时前
全栈小项目实战:从零搭建用户列表
javascript
用户32910442250419 小时前
基于 Claude Code 实现 CI/CD 完整流程
前端·后端
星栈9 小时前
别让 API 跳去登录页:我在 Axum 里做了认证失败双通道
前端·后端·开源
Cache技术分享9 小时前
416. 现代 Java I/O 最佳实践 - 高效、简洁、安全地处理文本与数据
前端·后端