技術棧架構

開發環境 (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 | QR 碼生成 |
| 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檢查完整性