如何通过一个脚本将整个项目提供给 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 永远对您有利!

您可能感兴趣的与本文相关的镜像

Qwen-Image

Qwen-Image

图片生成
Qwen

Qwen-Image是阿里云通义千问团队于2025年8月发布的亿参数图像生成基础模型,其最大亮点是强大的复杂文本渲染和精确图像编辑能力,能够生成包含多行、段落级中英文文本的高保真图像

<think>我们正在创建一个名为news_agent.js的主脚本,并使用Claude Code的AI代理来监督每个步骤的执行。根据引用内容,Claude Code是一个AI编程助手,可以通过自然语言指令操作,支持多种编程语言,并可集成到开发环境中。 目标: 1. 创建news_agent.js主脚本,该脚本可能是一个新闻代理程序,用于搜集、处理或发布新闻。 2. 使用Claude Code的AI代理监督每个步骤的执行,即利用Claude Code来监控脚本的运行,并在需要时提供帮助(如解释代码、优化、调试等)。 步骤: 第一步:设计news_agent.js的基本框架 我们需要确定news_agent.js的主要功能模块。一个典型的新闻代理可能包括以下步骤: - 从多个来源(如API、RSS)获取新闻 - 清洗和预处理新闻数据 - 分析或分类新闻 - 存储或发布新闻 第二步:编写news_agent.js代码 我们可以先写一个简单的结构,然后利用Claude Code来完善和优化。 第三步:集成Claude Code进行监督 根据引用[3],Claude Code可以集成到VS Code等开发环境中。因此,我们可以在开发过程中使用Claude Code插件来辅助我们: - 实时解释代码 - 优化代码性能 - 修复错误 - 甚至生成部分代码 具体实施: 1. 安装Claude Code:根据引用[1]和引用[3],在Windows或macOS上安装Claude Code,并集成到VS Code中。 2. 在VS Code中创建news_agent.js文件。 3. 编写代码时,利用Claude Code的AI功能来辅助。 示例代码框架: 我们先搭建一个简单的框架,然后让Claude Code帮助我们完善。 ```javascript // news_agent.js // 步骤1: 获取新闻 async function fetchNews() { // 从多个来源获取新闻 // 使用Claude Code生成具体实现或优化 } // 步骤2: 预处理新闻 function preprocessNews(news) { // 清洗和预处理新闻数据 } // 步骤3: 分析新闻 function analyzeNews(news) { // 对新闻进行分类或情感分析等 } // 步骤4: 存储或发布新闻 function storeOrPublishNews(news) { // 存储到数据库或发布到网站 } // 主函数 async function main() { try { const newsData = await fetchNews(); const cleanedNews = preprocessNews(newsData); const analyzedNews = analyzeNews(cleanedNews); storeOrPublishNews(analyzedNews); } catch (error) { console.error('Error in news agent:', error); } } main(); ``` 4. 使用Claude Code监督执行: - 在编写每个函数时,我们可以通过Claude Code的界面(例如在VS Code中右键选择Claude Code的功能)来请求帮助: * 解释函数功能:我们可以选中函数,让Claude Code解释其作用。 * 生成代码:我们可以用自然语言描述需求,让Claude Code生成代码片段。 * 优化代码:我们可以请求Claude Code优化现有代码。 * 调试:如果运行出错,我们可以将错误信息交给Claude Code分析。 例如,我们可以向Claude Code提问:“如何用Node.js实现从多个新闻API获取数据?”然后根据其生成的代码来完善`fetchNews`函数。 5. 执行监督:在运行news_agent.js时,我们可以利用Claude Code的调试功能来监控每一步的输出,确保每一步都正确执行。如果某一步出错,Claude Code可以帮助分析错误原因并提供修复建议。 总结: 通过以上步骤,我们可以创建news_agent.js主脚本,并在Claude Code AI代理的帮助下编写、优化和监控脚本的执行。Claude Code就像一个编程伙伴,实时辅助我们的开发工作。 注意:由于Claude Code在国内使用可能存在难点(引用[3]提到),需要确保网络环境能够访问。 接下来,我们可以生成相关问题。 </think>### 创建 news_agent.js 主脚本并使用 Claude Code AI 代理监督执行 以下是实现方案的分步指南: #### 1. 创建 news_agent.js 主脚本框架 ```javascript // news_agent.js const claude = require('@anthropic-ai/sdk'); // Claude SDK const { Workflow } = require('claude-workflows'); // 工作流管理 // Claude API 配置 const client = new claude.Client({ apiKey: process.env.CLAUDE_API_KEY, agentId: 'news_agent_v1' // 自定义代理ID }); // 新闻处理工作流定义 const newsWorkflow = new Workflow('news_processing', { steps: [ { name: "fetch_news", description: "从API获取新闻数据", action: fetchNewsSources }, { name: "filter_content", description: "过滤无关内容", action: filterContent, requires: ["fetch_news"] // 依赖前一步 }, { name: "generate_report", description: "生成新闻摘要报告", action: generateSummary, requires: ["filter_content"] } ] }); // Claude 监督执行器 async function supervisedExecution() { const executionId = `exec_${Date.now()}`; // 启动监督会话 const session = await client.startSupervisionSession({ workflowId: newsWorkflow.id, executionId }); // 逐步执行并监督 for (const step of newsWorkflow.steps) { const result = await step.action(); // 向Claude发送执行结果 await session.reportStepCompletion(step.name, { status: "completed", output: result, metadata: { timestamp: new Date() } }); // 请求下一步指导 const guidance = await session.requestGuidance(step.name); console.log(`Claude指导: ${guidance.advice}`); } await session.complete(); } // 执行入口 supervisedExecution().catch(console.error); // 业务函数实现 async function fetchNewsSources() { /* ... */ } async function filterContent() { /* ... */ } async function generateSummary() { /* ... */ } ``` #### 2. Claude Code 集成配置 1. **安装依赖**: ```bash npm install @anthropic-ai/sdk claude-workflows ``` 2. **环境变量配置**(.env文件): ``` CLAUDE_API_KEY=your_api_key_here AGENT_ID=news_agent_v1 WORKFLOW_ID=news_processing ``` #### 3. 使用 Claude Agent 监督执行 1. **步骤监控**: - 每个步骤执行后自动向 Claude 发送验证报告 - 接收 Claude 的实时反馈(通过 `requestGuidance()`) - 自动记录执行历史和时间戳 2. **错误处理增强**: ```javascript // 错误处理示例 try { await step.action(); } catch (error) { await session.reportError(step.name, { error: error.message, stack: error.stack }); // 获取AI修复建议 const fix = await session.requestFix(step.name, error); console.log(`修复建议: ${fix.solution}`); } ``` 3. **动态调整工作流**: ```javascript // 根据Claude建议修改工作流 const workflowUpdate = await session.getOptimizationSuggestions(); newsWorkflow.update(workflowUpdate.changes); ``` #### 4. VS Code 集成(引用[3]) 1. 安装 Claude Code 扩展 2. 在工作区创建 `.claude` 配置文件: ```yaml # .claude agents: news_agent: path: ./news_agent.js triggers: - onFileSave - onTestRun supervision: level: detailed reporting: realtime ``` #### 最佳实践 1. **增量开发**:初始实现核心功能,通过 Claude 逐步添加复杂逻辑 2. **提示工程**:使用清晰的自然语言描述每个步骤目标 3. **验证机制**:对 Claude 的指导建议添加人工验证层 4. **版本控制**:使用 Claude 的 `agentId` 参数区分不同版本 > 通过 Claude Code 的终端集成功能(引用[3]),可直接运行终端命令 `claude supervise news_agent.js` 启动监督流程。AI 代理会实时标注代码执行路径,在异常时自动生成修复补丁[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值