如何通过一个脚本将整个项目提供给 Claude.ai

除非你过去几周一直在山洞里编程,否则你可能听说过Claude.ai的新项目功能。这个改变游戏规则的功能允许你将项目代码添加到Claude.ai中,从而创建共享环境,以提供更准确、更个性化的 AI 帮助。作为一名开发人员和 AI 爱好者,我已经等待这种功能很久了。就易用性和用户体验而言,目前没有其他任何东西能与此实现相提并论。

挑战:文本文件的限制

问题在于:目前,您只能将文本文件(pdf、docx、csv、txt、html、odt、rtf 或 epub)上传到项目上下文。但是,嘿,我们是开发人员,对吧?我们的全部工作就是创造性地解决问题。(我是对的,还是对的?)

我的解决方案:自定义 Bash 脚本

在本文中,我将向您展示如何使用自定义脚本将整个项目添加到Claude.ai的上下文中。我将分解我最近一直在改进的工作流程,这使我的生活变得轻松很多。那么,让我们开始吧!(对于 TL;DR 人群,我有一个指向 repo 的链接,其中包含适用于各种框架的现成脚本对于那些渴望复制粘贴的人,你的时间会到来的。请继续听我讲几段。)

Claude 的项目背景力量

在我们讨论细节之前,让我们先来谈谈为什么这如此棒:

  1. 个性化回应Claude.ai了解您项目的特点,从结构到命名约定。

  2. 代码感知建议:不再是通用建议 - 获取真正适合您的代码库的建议。

  3. 更快地解决问题:有了完整的了解,Claude.ai将成为您的个人代码侦探。

  4. 缩短学习曲线:新团队成员可以比您说“入职”更快地上手。(如果您使用的是 Teams 计划,则可以共享项目并享受更强大的上下文限制。)

  5. 一致的文档:轻松检查整个项目的文档。

现实世界的影响:一位开发者的故事

让我给你描绘一下。我正在领导一个项目,使用 Astro 和 Svelte 实现动态组件,使用 TypeScript 实现可靠的类型安全,以及我们设计师信赖的自定义 Tailwind CSS 调色板。哦,别忘了使用 NanoStores 进行状态管理,因为为什么要让生活变得轻松,对吧?

有一天,我陷入了一个复杂的组件中,这个组件需要与我们的状态管理配合良好。在使用 Claude 之前,我会花上几个小时在文件之间切换。

克劳德之后?我问了一句,“我该如何将这个 UserProfile 组件与我们的 nanostores 设置集成?”轰!克劳德给出了一个代码片段,它不仅有效,而且符合我们项目的命名约定,甚至还建议进行性能调整。

本来需要半天时间才能解决的问题,15 分钟就能解决。最棒的是?解决方案太棒了,我几乎相信这是我写的。

剧本分析 www.cqzlsb.com

现在,让我们分解一下这个脚本:

  1. 创建复制目录
复制
复制
mkdir -p copy

这将创建一个copy目录。我知道,这是开创性的事情。

  1. 文件复制功能
复制
复制
copy_file() {
local src="$1"
local filename=$(basename "$src")
local dest="copy/${filename}.txt"
counter=1
while [ -e "$dest" ]; do
dest="copy/${filename}_${counter}.txt"
((counter++))
done
cp "$src" "$dest"
echo "Copied: $src to $dest"
}
export -f copy_file

此函数将文件复制到我们的新目录,并添加.txt扩展名。它就像文件复印机,但更精致。

  1. 忽略特定文件和目录
复制
复制
IGNORE_FILES=".DS_Store|\.env|pnpm-lock.yaml"
IGNORE_DIRS="node_modules|dist|\.git"
export IGNORE_FILES IGNORE_DIRS

因为有些文件应该留在 Vegas... 我的意思是,您的本地机器。

  1. 复制根目录文件
复制
复制
find . -maxdepth 1 -type f \( -name ".gitignore" -o -name "tailwind.config.js" -o -name "tsconfig.json" -o -name ".prettierrc" -o -name "next.config.js" -o -name "package.json" -o -name "README.md" \) -exec bash -c 'copy_file "$0"' {} \;

这将从您的根目录中获取重要的配置文件。

  1. 从特定目录复制文件
复制
复制
find app components lib layouts components types -type f \( -name "*.js" -o -name "*.ts" -o -name "*.jsx" -o -name "*.tsx" -o -name "*.json" -o -name "*.md" \) -not -path "*/node_modules/*" -not -path "dist" -not -path "*/.git/*" -exec bash -c 'copy_file "$0"' {} \;

这就是奇迹发生的地方。它会复制你所有的项目文件,但不包括我们不需要的东西。

  1. 生成项目结构
复制
复制
tree -a -I "${IGNORE_DIRS}|${IGNORE_FILES}|copy" --dirsfirst > copy/MY_PROJECT_STRUCTURE.txt

这将为您的项目创建一个整洁的树形结构。它就像您的代码丛林的地图。项目结构文件看起来如下所示:

复制
复制
.
├── public
│   ├── fonts
│   │   ├── Satoshi-Variable.woff
│   │   ├── Satoshi-Variable.woff2
│   │   ├── Satoshi-VariableItalic.woff
│   │   ├── Satoshi-VariableItalic.woff2
│   │   └── fonts.css
│   ├── apple-touch-icon.png
│   ├── favicon-32x32.png
│   ├── favicon-48x48.png
│   ├── favicon.svg
├── src
│   ├── components
│   │   ├── astro
│   │   │   ├── AuthInitializer.astro
│   │   │   ├── ButtonLink.astro
│   │   │   ├── Carousel.astro
│   │   │   ├── Chip.astro
│   │   │   ├── Faqs.astro
...
# Rest of the folder...
  1. 完成消息
复制
复制
echo "Files have been copied to the 'copy' directory with .txt extension added."
echo "Project structure has been saved to copy/MY_PROJECT_STRUCTURE.txt"

因为谁不喜欢得到一点确认呢?

脚本运行完成后,copy你的项目文件夹中应该有一个如下所示的文件夹:

完整脚本

以下是完整且精彩的脚本:

复制
复制
mkdir -p copy

copy_file() {
local src="$1"
local filename=$(basename "$src")
local dest="copy/${filename}.txt"
counter=1
while [ -e "$dest" ]; do
dest="copy/${filename}_${counter}.txt"
((counter++))
done
cp "$src" "$dest"
echo "Copied: $src to $dest"
}
export -f copy_file

IGNORE_FILES=".DS_Store|\.env|pnpm-lock.yaml"
IGNORE_DIRS="node_modules|dist|\.git"
export IGNORE_FILES IGNORE_DIRS

find . -maxdepth 1 -type f \( -name ".gitignore" -o -name "tailwind.config.js" -o -name "tsconfig.json" -o -name ".prettierrc" -o -name "next.config.js" -o -name "package.json" -o -name "README.md" \) -exec bash -c 'copy_file "$0"' {} \;

find app components lib layouts components types -type f \( -name "*.js" -o -name "*.ts" -o -name "*.jsx" -o -name "*.tsx" -o -name "*.json" -o -name "*.md" \) -not -path "*/node_modules/*" -not -path "dist" -not -path "*/.git/*" -exec bash -c 'copy_file "$0"' {} \;

echo "Files have been copied to the 'copy' directory with .txt extension added."

tree -a -I "${IGNORE_DIRS}|${IGNORE_FILES}|copy" --dirsfirst > copy/MY_PROJECT_STRUCTURE.txt
echo "Project structure has been saved to copy/MY_PROJECT_STRUCTURE.txt"

不同的人有不同的想法,对吧?下面介绍如何针对不同的框架调整脚本:

对于 Astro 项目

复制
复制
# Add this to the file copying section
find src pages public -type f \( -name "*.astro" -o -name "*.md" -o -name "*.js" -o -name "*.ts" \) -not -path "*/node_modules/*" -exec bash -c 'copy_file "$0"' {} \;

对于 SvelteKit 项目

复制
复制
# Add this to the file copying section
find src routes static -type f \( -name "*.svelte" -o -name "*.js" -o -name "*.ts" \) -not -path "*/node_modules/*" -exec bash -c 'copy_file "$0"' {} \;

对于 Next.js 项目

复制
复制
# Add this to the file copying section
find pages api components styles -type f \( -name "*.js" -o -name "*.jsx" -o -name "*.ts" -o -name "*.tsx" -o -name "*.css" \) -not -path "*/node_modules/*" -exec bash -c 'copy_file "$0"' {} \;

对于 Nuxt.js 项目

复制
复制
# Add this to the file copying section
find pages components layouts store -type f \( -name "*.vue" -o -name "*.js" -o -name "*.ts" \) -not -path "*/node_modules/*" -exec bash -c 'copy_file "$0"' {} \;

对于 Python 项目

复制
复制
# Add this to the file copying section
find . -type f \( -name "*.py" -o -name "*.ipynb" \) -not -path "*/venv/*" -not -path "*/.*" -exec bash -c 'copy_file "$0"' {} \;

请记住调整IGNORE_DIRS变量以包含您想要排除的特定于框架的目录,如.next.nuxt__pycache__

如何使用脚本

  1. 将脚本保存到您的项目根目录。

  2. 运行它:bash script_name.sh

  3. 将目录内容上传copy到您的Claude.ai项目。

  4. 给自己倒杯好咖啡

  5. 开始与您的新项目意识 AI 伙伴聊天!

[!TIP] 将项目文件上传到Claude.ai(或任何地方)时,请注意不要包含敏感信息(如 API 密钥或密码)

关于“tree”命令的简要说明

我们的脚本使用“tree”命令生成项目结构文件。如果您使用的是 Mac 并且未安装它,则可以使用 Homebrew 轻松获取它:只需运行brew install tree。Windows 用户,您很幸运 - 它是内置的。没有“tree”?不用担心!该脚本仍然可以很好地转换您的代码文件,但您会错过那个为 Claude 提供一些额外上下文的漂亮项目结构文件。它就像您的代码圣代上的樱桃 - 有就好,但不是必需的。

结论

我已经使用Claude.ai的项目功能几个星期了,让我告诉你,它改变了游戏规则。这就像拥有一位对您的项目了如指掌的优秀开发人员。

我希望本文能帮助您增强 AI 辅助开发能力。如果您有任何疑问或想分享您的经验,请在下面发表评论。我很期待看到 Anthropic 的优秀团队接下来会推出什么!

祝您编码愉快,并且希望您的 Bug 永远对您有利!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值