96SEO 2026-08-05 19:59 0
使用者痛点:市面上已有的 Agent 框架往往「开箱即用」却缺乏安全防护和可 性,导致公司在实际落地时面临「AI 越权执行」和「难以维护」的风险。

去年开始 AI Agent 概念大火,各种框架层出不穷。但与其直接用现成的 Agent 框架。不如亲手从零搭建一个——既能 AI Agent 的工作原理,又能把控安全、 性等工程细节。说起来,
这个项目是个人的练手项目。基于 Turborepo Monorepo包含一个 Express.js API 后端和一个 Vue 前端。主要目标是建立一个安全、可 的 AI Agent 网站让它能自主执行文件操作、运行 Shell 命令、加载专业技能、甚至创建子智能体来并行处理任务。
再看源码地址,express-turbo-monorepo
| 类别 | 选型 | 说明 |
|---|---|---|
| 建立编排 | Turborepo Monorepo | 管理。增量建立缓存 |
| 后端框架 | Express 5最新版 | 支持异步错误处理 |
| 运行时 | Node.js + TypeScript | 全栈类型安全 |
| AI SDK | Vercel AI SDK v6 | ToolLoopAgent、流式响应校验 |
| Schema 校验 + OpenAPI 自动生成 | Zod 4 | |
| 沙箱运行时 | @anthropic-ai/sandbox-runtime | 内核隔离 |
| 日志程序Pino 结构化 JSON 日志,按天轮转 | ||
选择这些技术栈的理由:
ToolLoopAgent。自动循环调用工具,无需手动管理多轮逻辑。apps/* 多包结构,API 和前端共享配置。
express-turbo-monorepo/
├── apps/
│ └── api/ # Express.js API 服务
│ ├── src/
│ │ ├── index.ts # 应用入口点
│ │ ├── app.ts # Express 应用工厂
│ │ ├── errors/ # 错误处理
│ │ ├── lib/ # 工具库
│ │ ├── middleware/ # 中间件
│ │ ├── modules/ # 功能模块
│ │ │ ├── chat/ # AI 对话模块
│ │ │ └── skills/ # Skills 管理模块
│ │ ├── sandbox/ # 沙箱运行时
│ │ ├── skills/ # Skills 发现与加载
│ │ ├── tools/ # AI 工具定义
│ │ ├── schema/ # Zod 校验规则
│ │ └── util/ # 工具函数
│ └── package.json
│ └── dev-web/ # Vue 前端
├── turbo.json # Turborepo 配置
└── package.json
每个模块采用一致的文件结构:
/
.module.ts # 路由注册
.routes.ts # 路由定义
.controller.ts # 请求处理
.service.ts # 业务逻辑
/
The project leverages Vercel AI SDK’s ToolLoopAgent。enabling agent to iterate automatically:
const { text,steps } = streamText({
至于model,provider,system: agentSystemPrompt,tools: agentTools,maxSteps: MAX_STEPS,onStepFinish: => {
// 每个 step 完成后压缩历史结果,节省 token
return compressToolResults;},}),
Cores design points:
| 工具 | 功能 | 安全等级 |
|---|---|---|
| readFile | 按字符范围读取文件 | 低风险 |
| editFile | 搜索替换文件内容 | 中风险 |
| createFile | 创建新文件 | 中风险 |
| deletePath | 删除文件或目录 | 高风险 |
| runCommand | 执行 Shell 命令 | 高风险 |
| readDir 低风险 |
...
This is most critical design. Direct execution of shell commands on host would be disastrous.
Pain Point — “AI 能直接破坏宿主程序”: 双层防护机制将此类风险降到最低。话说回来,
const permissionRules: PermissionRule =;
// 在 ToolExecutor 中统一拦截判断...
if ) throw new ForbiddenError;if ) await requestHumanApproval;else executeTool;
B. 程序级沙箱
-
• *文件程序限制*: Only
SANDBOX_DIR / AGENTS_DIR ….
-
• *写保护*: .env 、*.pem 、*.key 等关键文件不可覆盖。
-
• *网络限制*: 域名白名单 / 黑名单策略。
-
• *深度防护*: mandatoryDenySearchDepth 防止符号链接逃逸。
Human-in--Loop 审批程序
This component bridges gap 娱乐ween “full autonomy” and “complete manual control”. Four chat modes let users pick a safety‑vs‑speed trade‑off.
# 模式
#读操作
#写操作
#适用场景
"default"- 所有写操作均需要人工审批;最安全,怎么说呢,适用于生产环境。
说起来,
"plan"- 禁止任何写入。只做只读探索,适用于调研或代码审计。
"auto"- 写入默认自动批准,但仍保留“拒绝”按钮;适用于内部测试,
"yolo"- 完全信任,不做任何审批;仅在受信任环境下使用,json
{ "prompt":"帮我创建一个 React组件","metadata":{"mode":"yolo"} }
在前端。当工具需要审批时会弹出带有 **批准 / 拒绝** 按钮的气泡,对话在使用者确认后继续。
Skills 动态加载程序
A Skill = a directory containing a S K I L L . md \` file that describes domain‑specific knowledge.
agents/
├─ python-developer/
├─ react-optimizer/
└─ SKILL.md
-
至于*自动发现*,启动时遍历
$AGENTS_DIR/*/SKILL.md<\/ code>
-
*ZIP 上传/下载/删除*:通过 Skills Module API 管理 Skill 包装体。
-
* *运行时注入*:loadSkill 工具把 Skill 内容拼接进 system prompt,让模型即时拥有新能力。其实,
子智能体
text
使用者的观点是。"帮我分析这个项目的代码结构并生成文档"
→ 主 Agent 创建计划
→ 子 Agent A:探索 src/tools/
→ 子 Agent B:探索 src/modules/
→ 子 Agent C:阅读 package.json 与配置文件
→ 汇果 → 主 Agent 输出完整文档。
-
Each sub‑agent runs in its own sandbox instance.
-
Sub‑agents receive a subset of tools to limit privilege.
-
After finishing y return a structured summary which parent agent merges.
OpenAPI / Swagger 文档
typescript
new OpenApiRegistryZodExtensions();
Visit /docs for an interactive Swagger UI generated directly from Zod schemas—no manual YAML maintenance.
. 架构设计要点
. 工厂模式
// app.ts
export function createApp {
const app = express;app.use),app.use);app.use,app.use);app.get=>{res.json;}),app.use;说起来,app.use,app.use;app.use,app.use;return app,}
统一响应与错误码
typescript
interface ApiJsonResponse{
responseCode:string;// "" 成功,其它为错误码
responseMsg:string;// 描述信息
data这方面,T;}
环境变量即配置
typescript
const envSchema = z.object({
PORT这方面。z.coerce.number.default,OPENAI_API_KEY:z.string.min,OPENAI_BASE_URL:z.string.url,SANDBOX_ENABLED:z.coerce.boolean.default,//…more configs
});
. Docker 部署
# Multi-stage build – Builder
FROM node:-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev && npm install -g typescript && npm run build
FROM node:-alpine
RUN apk add --no-cache bash ripgrep bubblewrap socat
COPY --from=builder /app/dist ./dist
CMD
``
**关键点**:因为沙箱依赖 bubblewrap。需要在容器启动时授予SYSADMIN与NETADMIN` 权限:
bash
docker run --cap-add=SYS_ADMIN --cap-add=NET_ADMIN -p8080:8080 your-image
. 开发流程与规范
-
类型优先:Zod 定义即 TypeScript 类型,所有业务代码引用统一 schema,提高可维护性。老实说,
-
b工具函数复用:
src/util/* 集中抽象通用逻辑。禁止 Copy‑Paste。老实说,
-
b错误码同步:
AppErrorCode 与 ApiResponseCode 必须保持一一对应。以免前端误判状态,
-
b模块自包含:
modules/* 各自注册到 app.ts通过接口通信避免耦合。
-
b提交前检查:
npm run typecheck && npm run lint && npm run test 必须全部通过方可 merge。
-
⚠️ 缺少统一错误程序会导致调试成本激增——本项目通过统一响应格式解决此痛点。话说回来,
收获与思考
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback