百度SEO

百度SEO

Products

当前位置:首页 > 百度SEO >

LangChain.js实战:构建AI编程助手ReAct循环

96SEO 2026-05-03 21:10 20


Zui近,Claude Code 的横空出世让不少开发者眼前一亮。那种“不仅Neng写代码,还Neng直接操作文件系统、运行终端命令”的体验,仿佛让我们kan到了未来编程的一角。但说实话,作为技术人员,我们真的只Neng依赖这些闭源的“黑盒”吗?答案显然是否定的。

LangChain.js实战:构建AI编程助手ReAct循环

剥开 Claude Code 炫酷的外衣,其核心逻辑依然是 大模型+ 工具调用 + 代码场景 的经典组合。只要我们掌握了这套组合拳,利用 LangChain.js 完全Ke以在本地构建一个符合自己工作流的专属编程助手。今天我们就来深入探讨如何通过 ReAct循环,手搓一个简易版的 AI 编程助手。

从“对话”到“行动”:ReAct 范式的崛起

传统的 LLM 应用大多停留这远远不够。我们需要的是“解决问题”的Neng力,而不仅仅是“回答问题”。这就引出了 ReAct 范式。

ReAct 的核心在于模拟人类的思维过程:思考 -> 行动 -> 观察 -> 再思考。它不是一次性给出答案,而是通过一个循环,不断地根据执行结果调整策略。在 LangChain.js 中,这意味着我们需要构建一个 Agent,让它Neng够自主决定何时调用工具,以及如何处理工具返回的结果。

在此之前,我们假设你Yi经对 LangChain.js 的基础——比如接入豆包大模型、使用 `invoke` 或 `stream` 进行调用、以及 `Messages` 消息体系——有了一定的了解。Ru果这些概念对你来说还比较陌生,建议先去补补课,毕竟万丈高楼平地起嘛。

打造全Neng工具箱:文件与命令的完美协奏

要让 AI 真正“动”起来光有大脑是不够,还得有手脚。我们的简易版 Claude Code,核心Neng力被抽象为三个基础工具:读取文件、写入文件、执行命令。这三个工具构成了代码助手的“Zui小可行性闭环”。

读写工具:不仅仅是简单的 I/O

我们得让 AI Neng“kan”懂现有的代码,并Neng“写”出新的文件。这听起来简单,但在实际工程中,细节决定成败。

先来kankan read_file 工具的设计。它的作用不仅仅是读取内容,geng是将文件信息注入到模型的上下文中。

const readFileTool = tool(
    async  => {
        try {
            const content = await fs.readFile;
            return `文件内容:
${content}`;
        } catch  {
             return `读取文件失败: ${error.message}`;
        }
    },
    {
        name: 'read_file',
        description: '用此工具来读取文件内容...',
        schema: z.object({
            filePath: z.string.describe,
        }),
    }
);

这里的关键在于 descriptionschema。这就像是给模型发的“使用说明书”,告诉它这个工具是干嘛的,需要传什么参数。当用户说“帮我kankan src/utils/helper.js 有什么问题”时模型正是通过这些描述,自主决定调用 read_file,而不是让用户手动把代码贴上来。

再来kan write_file。这个工具的设计有一个非常人性化的细节:recursive: true

const writeFileTool = tool(
    async  => {
         try {
            const dir = path.dirname;
            await fs.mkdir;  // 关键:自动创建目录
            await fs.writeFile;
            return `文件写入成功: ${filePath}`;
        } catch  {
             return `文件写入工具调用失败: ${error.message}`;
        }
    },
    {
        name: 'write_file',
        description: '向指定路径写入文件内容,自动创建目录',
        schema: z.object({
            filePath: z.string.describe,
            content: z.string.describe,
        }),
    }
);

想象一下你让 AI “创建一个 React 组件 components/UserProfile/index.tsx”。Ru果工具不支持自动创建目录,AI 就得先调用命令创建文件夹,再写文件,这无疑增加了复杂度。有了 recursive: truecomponents/UserProfile/ 这两层目录会在写入文件的一瞬间自动搞定。这种顺滑的体验,才是 Claude Code 的精髓所在。

命令执行:避开“cd”陷阱的艺术

这是三个工具中Zui复杂,也是Zui容易踩坑的一个。我们需要它既Neng处理像 npm install 这样的交互式命令,也Neng支持像 npm run dev 这种需要常驻后台的服务。

hen多初学者会习惯性地用 cd my-project && npm start 这种写法。但在跨平台的自动化脚本中,这简直是噩梦。Windows 的 CMD 和 PowerShell 对路径分隔符、引号的处理与 Unix 完全不同。一旦路径里带个空格,比如 my project,命令解析就会直接炸裂。

geng致命的是在 Node.js 的 spawn 中,cd 改变的是当前进程的目录,而子进程的 cwdRu果不指定,依然会乱套。特别是在后台运行模式下依赖 cd 会导致目录上下文彻底丢失。

所以我们的 execute_command 工具必须引入 workingDirectory 参数,利用 Node.js 原生的 path 模块来统一处理路径,彻底抛弃不可靠的 cd

const executeCommandTool = tool(
    async  => {
        const  = command.split;
        const child = spawn(cmd, args, {
            cwd: workingDirectory || process.cwd, // 统一处理工作目录
            stdio: background ? 'pipe' : 'inherit',  // 前台交互 或 后台静默
            shell: true,
            detached: background,  // 关键:后台运行解耦
        });
        if  {
            child.unref;  // 允许父进程退出而子进程继续运行
            return `命令Yi在后台启动: ${command}`;
        }
        // ... 前台模式等待完成的逻辑
    },
    {
        name: 'execute_command',
        schema: z.object({
            command: z.string,
            workingDirectory: z.string.optional,  // 项目隔离
            background: z.boolean.optional,  // 服务启动模式
        }),
    }
);

通过这种方式,无论用户在 Windows 还是 Linux 上,无论项目路径多复杂,我们douNeng精准地在指定目录下执行命令,实现了真正的环境隔离。

构建 Agent 核心:让模型学会“思考”与“反思”

工具准备好了现在我们需要构建 Agent 的“大脑”。它的任务是:理解需求 -> 决策工具 -> 执行动作 -> 观察结果 -> 循环直至完成。这一节,我们将实现一个支持流式输出和多轮工具调用的交互式 Agent。

ToolMessage:闭环的关键一环

这里有一个极其容易被新手忽略,但却是整个系统Zui核心的机制:ToolMessage

hen多人以为工具调用就是“模型发指令 -> 程序执行 -> 结束”。大错特错!Ru果缺少了 ToolMessage,模型就会陷入“失忆”状态。它会忘记自己刚才调用了什么工具,甚至会陷入“重复调用同一工具”的死循环,或者凭空幻想出执行结果。

正确的Zuo法是每次工具执行完毕后必须将结果封装成 ToolMessage,并且回传给模型。这就像是给模型写了一份“工作报告”,告诉它:“嘿,你刚才让我干的活儿干完了结果是这个,你kan下一步咋办?”

// 将工具结果反馈给模型
await history.addMessage(
    new ToolMessage({
        content: toolResult,           // 工具执行结果
        tool_call_id: toolCall.id,     // 必须匹配模型的 tool_call.id
    })
);

只有通过这种闭环,模型才Neng根据真实的执行结果进行下一步的推理。比如Ru果 npm install 报错了模型kan到报错信息后才会决定去执行 npm install --legacy-peer-deps 或者检查 package.json

流式输出的工程细节

代码生成往往是一个漫长的过程。Ru果用户盯着黑屏等了半分钟,Zui后才蹦出一大段代码,体验肯定极差。流式输出不仅是为了提升“感知性Neng”,geng是为了建立“信任”。当用户kan到代码一行行地被打印出来他们Neng直观地感受到 AI 正在努力工作,而不是在摸鱼。

在实现上,我们需要处理两种输出源:一种是普通的文本回复,另一种是工具调用中的代码生成。

// 关键代码段:提取 write_file 中的代码内容实时展示
if  {
    outputContent += toolCallChunk.args.content;
}

通过解析工具调用参数并实时打印,用户Neng立即kan到生成的代码,而无需等待整个文件写入完成。这种即时反馈,是打造沉浸式 AI 体验的关键。

实战演示:从零构建 Express 服务

让我们把所有这些组件串联起来kan一个真实的对话流程。假设用户发出指令:“帮我创建一个新项目,一个简单的 Express 服务器,监听 3000 端口,返回 '这就是我的简易版claude code!!!',然后启动它”。

这可不是一句话Neng搞定的事。Agent 内部的 ReAct 循环会像这样运转:

graph TD
    A --> B
    B --> C
    C --> D
    D --> E
    E --> F

在这个过程中,模型会先调用 write_file 生成 package.jsonindex.js,然后调用 execute_command 初始化项目、安装依赖,Zui后在后台启动服务。每一步的输出,dou会通过 ToolMessage 反馈给模型,指导它进行下一步操作。

async function runAgentWithTools {
    // 1. 记录用户输入
    await history.addMessage);
    let toolParser = new JsonOutputToolsParser;
    // 2. 多轮迭代,直到完成或达到上限
    for  {
        let messages = await history.getMessages;
        console.log;
        // 3. 流式调用模型
        let fullResponse = null;
        let hasStartedOutput = false;
        const stream = await modelWithTools.stream;
        // 4. 实时处理流式响应
        for await  {
            // ... 累积响应和解析工具调用的逻辑 ...
            // 实时打印到终端
            if  !== '') {
                if  {
                    console.log;
                    hasStartedOutput = true;
                }
                process.stdout.write;
            }
        }
        // 5. 保存完整响应到历史
        const response = fullResponse;
        await history.addMessage;
        // 6. 判断是否需要工具调用
        if  {
            return response.content;  // 无需工具,直接返回
        }
        // 7. 执行工具调用闭环
        for  {
            const foundTool = tools.find;
            if  {
                console.log})`);
                const toolResult = await foundTool.invoke;
                // 将结果反馈给模型
                await history.addMessage(new ToolMessage({
                    content: toolResult,
                    tool_call_id: toolCall.id,
                }));
            }
        }
        // 8. 循环继续:模型收到工具结果后决定下一步行动
    }
    return '达到Zui大迭代次数';
}
从“调用工具”到“编排工作流”

回顾整个实现过程,我们并没有使用什么高深莫测的黑科技。关键突破点在于三个工具的精心设计和 ReAct 循环的严谨实现。通过 LangChain.js,我们将大模型从一个单纯的“聊天机器人”,升级为了一个Neng够理解代码上下文、执行具体操作、并Neng根据反馈自我修正的“智Neng体”。

当然目前的版本还只是一个 MVP。我们还需要考虑geng强大的内存存储、geng细粒度的权限控制、以及geng复杂的错误处理机制。但这个简易版Yi经足够演示核心逻辑了。

geng重要的是这个过程让我们深入理解了 AI 应用开发的本质:不是替代开发者,而是将重复性、机械性的操作自动化,让人类专注于创造性决策

完整代码我Yi经开源到了 GitHub,欢迎大家在评论区分享你的改造思路和遇到的问题。让我们一起探索 AI 编程助手的geng多可Neng性,毕竟未来的编程方式,可Neng就掌握在我们自己手中。


标签: 实战

SEO优化服务概述

作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。

百度官方合作伙伴 白帽SEO技术 数据驱动优化 效果长期稳定

SEO优化核心服务

网站技术SEO

  • 网站结构优化 - 提升网站爬虫可访问性
  • 页面速度优化 - 缩短加载时间,提高用户体验
  • 移动端适配 - 确保移动设备友好性
  • HTTPS安全协议 - 提升网站安全性与信任度
  • 结构化数据标记 - 增强搜索结果显示效果

内容优化服务

  • 关键词研究与布局 - 精准定位目标关键词
  • 高质量内容创作 - 原创、专业、有价值的内容
  • Meta标签优化 - 提升点击率和相关性
  • 内容更新策略 - 保持网站内容新鲜度
  • 多媒体内容优化 - 图片、视频SEO优化

外链建设策略

  • 高质量外链获取 - 权威网站链接建设
  • 品牌提及监控 - 追踪品牌在线曝光
  • 行业目录提交 - 提升网站基础权威
  • 社交媒体整合 - 增强内容传播力
  • 链接质量分析 - 避免低质量链接风险

SEO服务方案对比

服务项目 基础套餐 标准套餐 高级定制
关键词优化数量 10-20个核心词 30-50个核心词+长尾词 80-150个全方位覆盖
内容优化 基础页面优化 全站内容优化+每月5篇原创 个性化内容策略+每月15篇原创
技术SEO 基本技术检查 全面技术优化+移动适配 深度技术重构+性能优化
外链建设 每月5-10条 每月20-30条高质量外链 每月50+条多渠道外链
数据报告 月度基础报告 双周详细报告+分析 每周深度报告+策略调整
效果保障 3-6个月见效 2-4个月见效 1-3个月快速见效

SEO优化实施流程

我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:

1

网站诊断分析

全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。

2

关键词策略制定

基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。

3

技术优化实施

解决网站技术问题,优化网站结构,提升页面速度和移动端体验。

4

内容优化建设

创作高质量原创内容,优化现有页面,建立内容更新机制。

5

外链建设推广

获取高质量外部链接,建立品牌在线影响力,提升网站权威度。

6

数据监控调整

持续监控排名、流量和转化数据,根据效果调整优化策略。

SEO优化常见问题

SEO优化一般需要多长时间才能看到效果?
SEO是一个渐进的过程,通常需要3-6个月才能看到明显效果。具体时间取决于网站现状、竞争程度和优化强度。我们的标准套餐一般在2-4个月内开始显现效果,高级定制方案可能在1-3个月内就能看到初步成果。
你们使用白帽SEO技术还是黑帽技术?
我们始终坚持使用白帽SEO技术,遵循搜索引擎的官方指南。我们的优化策略注重长期效果和可持续性,绝不使用任何可能导致网站被惩罚的违规手段。作为百度官方合作伙伴,我们承诺提供安全、合规的SEO服务。
SEO优化后效果能持续多久?
通过我们的白帽SEO策略获得的排名和流量具有长期稳定性。一旦网站达到理想排名,只需适当的维护和更新,效果可以持续数年。我们提供优化后维护服务,确保您的网站长期保持竞争优势。
你们提供SEO优化效果保障吗?
我们提供基于数据的SEO效果承诺。根据服务套餐不同,我们承诺在约定时间内将核心关键词优化到指定排名位置,或实现约定的自然流量增长目标。所有承诺都会在服务合同中明确约定,并提供详细的KPI衡量标准。

SEO优化效果数据

基于我们服务的客户数据统计,平均优化效果如下:

+85%
自然搜索流量提升
+120%
关键词排名数量
+60%
网站转化率提升
3-6月
平均见效周期

行业案例 - 制造业

  • 优化前:日均自然流量120,核心词无排名
  • 优化6个月后:日均自然流量950,15个核心词首页排名
  • 效果提升:流量增长692%,询盘量增加320%

行业案例 - 电商

  • 优化前:月均自然订单50单,转化率1.2%
  • 优化4个月后:月均自然订单210单,转化率2.8%
  • 效果提升:订单增长320%,转化率提升133%

行业案例 - 教育

  • 优化前:月均咨询量35个,主要依赖付费广告
  • 优化5个月后:月均咨询量180个,自然流量占比65%
  • 效果提升:咨询量增长414%,营销成本降低57%

为什么选择我们的SEO服务

专业团队

  • 10年以上SEO经验专家带队
  • 百度、Google认证工程师
  • 内容创作、技术开发、数据分析多领域团队
  • 持续培训保持技术领先

数据驱动

  • 自主研发SEO分析工具
  • 实时排名监控系统
  • 竞争对手深度分析
  • 效果可视化报告

透明合作

  • 清晰的服务内容和价格
  • 定期进展汇报和沟通
  • 效果数据实时可查
  • 灵活的合同条款

我们的SEO服务理念

我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。

提交需求或反馈

Demand feedback