1. 项目概述
作为一名长期奋战在研发一线的工程师,我最近完成了一个颇具挑战性的任务:在一周时间内为内部研发平台成功接入了Agent开发能力。这个项目源于一个简单的观察——AI Coding工具正在彻底改变前端开发的工作方式,而后端同事却依然在"手搓代码"的泥潭中挣扎。
我们的内部平台名为奥德赛研发平台,主要服务于ICBU买家技术团队。平台基于淘宝定制的TQL(GraphQL方言)构建,开发者通过编写TQL脚本来实现BFF(Backend For Frontend)接口。虽然功能强大,但纯手工编写和调试TQL脚本的效率问题一直困扰着团队。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术选型与架构设计
2.1 嵌入方案选择
经过深入调研,我们评估了三种主要的Agent嵌入方案:
- 独立应用方案:开发完全独立的Agent应用
- 浏览器插件方案:通过浏览器插件形式集成
- Iframe嵌入方案:在现有平台中通过Iframe嵌入Agent
最终我们选择了第三种方案,主要基于以下考虑:
- 开发成本最低,能够快速上线
- 用户体验最连贯,无需切换应用
- 技术风险可控,与现有架构兼容性好
2.2 核心框架选型
在技术栈选择上,我们遵循"成熟稳定、快速上手"的原则:
Faas基建:采用集团内部的Serverless服务,让我们可以专注于业务逻辑开发,无需操心底层运维。对于轻量级Agent开发来说,这种"免运维"特性简直是刚需。
Next.js + React:选择这套组合主要基于两点考虑:一是内部有成熟的同构框架可以直接复用;二是前后端使用同一种语言(JavaScript),配合AI编码工具可以大幅提升开发效率。
LangGraph:来自LangChain团队的状态图工具,它通过抽象的状态机模型,让开发者无需深入理解Agent底层原理就能快速构建功能。其"低代码、易上手"的特性特别适合我们的快速交付需求。
3. 核心实现细节
3.1 系统提示词优化
提示词质量直接决定Agent的表现。我们采用了三个关键优化技巧:
- 角色设定:明确Agent作为"专业TQL脚本编写助手"的定位
- XML格式:使用结构化标记提升模型对指令的理解
- 正例引导:提供高质量示例而非反例,避免模型注意力分散
典型的提示词结构如下:
xml复制<role>你是小D同学,一个专业的TQL脚本编写助手...</role>
<instructions>
<instruction>你非常欠缺TQL知识,但好在系统内置了很多工具...</instruction>
<instruction>系统在开源GraphQL的基础上,扩展了很多自定义的指令...</instruction>
</instructions>
3.2 知识库建设(RAG)
由于TQL包含大量定制化内容,我们构建了三大类知识库:
- 热门脚本库:收集Top100高频脚本并解析其功能
- 系统字段库:整理TQL扩展的指令和全局函数
- 代码理解库:通过deepwiki平台索引服务端源码
知识库采用分片策略存储,每个脚本/函数/指令都作为独立文档,确保召回精准度。对于外部开发者,可以使用开源的Chroma等向量数据库实现类似功能。
3.3 工具接入设计
我们将工具分为两类:
远程工具(MCP):
- kbase MCP:用于知识库检索
- deepwiki MCP:用于代码片段召回
本地工具:
- editScript:脚本编辑
- editVariables:变量编辑
- executeScript:脚本执行
- validateResult:结果验证
特别设计了"白名单机制",只加载必要的工具接口,避免上下文冗余。
4. 关键技术挑战与解决方案
4.1 连续对话实现
我们采用sessionId机制实现对话持久化:
- 新对话生成唯一sessionId
- 所有消息变更都持久化到Tair(可替换为Redis)
- 新请求时通过sessionId恢复历史上下文
4.2 UI工具调用难题
由于Faas不支持长连接,我们创新性地采用SSE+隐藏消息方案:
- Agent接口使用SSE流式推送
- 需要UI响应时直接结束请求
- 前端操作完成后通过隐藏消息恢复会话
4.3 上下文压缩优化
为控制token消耗,我们实施了两级压缩:
工具结果压缩:
- 缓存原始工具响应
- 按需检索关键信息
- 仅保留结构化摘要
整体上下文压缩:
- 窗口使用率超80%时触发
- 保留最近3轮对话
- 压缩历史消息为摘要
通过这两项优化,主Agent的token消耗从5w降至4k,降幅达92%。
5. 实操心得与避坑指南
在项目落地过程中,我们积累了一些宝贵经验:
-
提示词优化:不要一上来就堆砌大量示例,应该先让模型自由发挥,再针对性地补充正例。我们发现提供3-5个精准示例的效果远好于10个普通示例。
-
知识库建设:数据清洗比想象中耗时。建议先通过自动化脚本完成初步筛选,再人工校验关键内容。我们最终保留了约30%的高频使用内容。
-
工具设计:工具接口应该尽可能原子化。初期我们将多个操作合并到一个工具中,结果发现模型调用时经常混淆意图。拆分为单一功能工具后准确率显著提升。
-
测试策略:不要等到全部开发完成再测试。我们采用"开发一个工具,测试一个工具"的策略,大大减少了后期调试工作量。
6. 效果评估与后续规划
经过一周密集开发,小D Agent已稳定运行一个月,主要指标表现:
- 脚本编写效率提升40%
- 调试时间缩短35%
- 平均token消耗控制在8k以内
后续优化方向包括:
- 建立bad case收集与分析机制
- 引入更精细的上下文管理策略
- 探索多Agent协作模式
- 优化知识库更新流程
这个项目让我深刻体会到,AI技术的落地不仅需要算法能力,更需要工程化的思维和方法。特别是在企业环境中,平衡创新速度与系统稳定性是成功的关键。
