技术栈架构

开发环境 (Development Environment)
- Node.js - 运行时环境
- Git - 版本控制
自动化测试 (Playwright)
- 浏览器自动化
- 端到端测试
- 页面截图对比
宜搭云平台 (Yida Cloud Platform)
- App - 应用管理
- Form - 表单页面
- Custom Page - 自定义页面
架构概览
OpenYida 采用模块化架构设计,核心分为 CLI 入口、核心模块、功能模块三层。技术栈
运行时环境
| 组件 | 版本 | 用途 |
|---|---|---|
| Node.js | >= 18.0.0 | 运行时环境 |
| npm | >= 9.0 | 包管理 |
核心依赖
| 包 | 版本 | 用途 |
|---|---|---|
| @babel/standalone | ^7.15.1 | 代码编译 |
| playwright | ^1.58.2 | 浏览器自动化/测试 |
| qrcode | ^1.5.4 | 二维码生成 |
| uglify-js | ^3.19.3 | 代码压缩 |
AI 集成
| 提供商 | SDK | 模型 |
|---|---|---|
| OpenAI | openai | GPT-4, GPT-3.5 |
| Anthropic | @anthropic-ai/sdk | Claude 3.5 |
| Alibaba | @alicloud/dingtalk | 通义千问 |
| DeepSeek | deepseek-sdk | DeepSeek-V2 |
开发工具
| 工具 | 版本 | 用途 |
|---|---|---|
| eslint | ^8.50.0 | 代码检查 |
| eslint-plugin-import | ^2.32.0 | 导入检查规则 |
| jest | ^29.7.0 | 单元测试 |
核心模块详解
国际化 (i18n.js)
支持 12 种语言的国际化系统:OPENYIDA_LANG环境变量LANG/LC_ALL系统环境变量- 默认:简体中文
环境检测 (env.js)
自动检测当前运行的 AI 工具环境:| 检测方式 | 工具 |
|---|---|
| 目录存在检测 | Claude Code、Cursor、OpenCode、Aone Copilot、Qoder |
| 特殊文件检测 | 悟空 (Wukong) |
诊断引擎 (doctor.js)
三层架构设计:- DiagnosticEngine - 诊断调度器
- EnvironmentChecker - 环境检查器
- ApplicationChecker - 应用检查器
- FixEngine - 智能修复引擎
功能模块详解
认证模块 (auth/)
- 检测当前 AI 工具环境
- 根据环境选择登录方式(扫码 / CDP / 文件读取)
- 获取 Cookie 并本地加密缓存
- 后续命令自动使用缓存的登录态
连接器模块 (connector/)
数据管理模块 (data-management.js)
统一的数据操作接口,支持:| 资源类型 | 操作 |
|---|---|
| form | query, get, create, update |
| process | query, get, create |
| task | query, execute |
| subform | query |
项目工作目录
宜搭 API 调用
基础配置
核心 API
| 端点 | 用途 |
|---|---|
/dingtalk/web/APP_xxx/xxx | 应用内接口 |
/dingtalk/web/APP_xxx/form/getFormDataList | 表单数据查询 |
/dingtalk/web/APP_xxx/form/saveFormData | 保存表单数据 |
/dingtalk/web/APP_xxx/proc/getProcessInstances | 流程实例查询 |
安全设计
- Cookie 加密存储 - 本地缓存加密保存
- CSRF Token 验证 - 每次请求携带 Token
- 无硬编码凭证 - 所有凭证动态获取
- 环境隔离 - 不同 AI 工具环境独立
性能优化
- 懒加载翻译文件 - 按需加载语言包
- Schema 本地缓存 - 减少 API 调用
- 并发请求控制 - 避免请求过多被限流
- 增量更新 - 表单更新采用合并而非覆盖
扩展机制
添加新命令
- 在
lib/下创建new-feature.js - 在
bin/yida.js注册命令路由 - 更新
README.md和文档 - 添加国际化 key
添加新语言
- 在
lib/core/locales/创建xx.js - 翻译所有 key(以
zh.js为基准) - 更新
i18n.js的SUPPORTED_LANGUAGES - 运行
npm run validate-i18n检查完整性