关于 1k-architecture
面向 OneKey 多平台钱包单体仓库贡献者的架构技能,介绍应用与软件包的边界、导入规则,以及跨平台保持代码一致性的检查方法。
主要功能
- 01多平台应用与软件包结构图
- 02严格的软件包导入层级
- 03平台专属文件约定
- 04跨平台 UI 与状态模式
- 05架构审查清单
适用场景
- 01为代码更改定位合适的软件包
- 02检查导入是否违反依赖规则
- 03评估更改对各应用平台的影响
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ onekeyhq/ app-monorepo --skill 1k-architecture安装后在 Claude Code 中输入/1k-architecture确认已加载。
详细介绍
OneKey 架构概览
平台结构
apps/desktop/- Electron 桌面应用(Windows、macOS、Linux)apps/mobile/- React Native 移动应用(iOS、Android)apps/ext/- 浏览器扩展(Chrome、Firefox、Edge、Brave)apps/web/- 渐进式 Web 应用apps/web-embed/- 可嵌入的钱包组件
核心包
packages/core/- 区块链协议实现、密码学、硬件钱包通信packages/kit/- 应用逻辑、状态管理、API 集成packages/kit-bg/- 后台服务和工作进程packages/components/- 基于 Tamagui 的跨平台 UI 组件packages/shared/- 平台抽象、实用工具、构建配置packages/qr-wallet-sdk/- 用于隔离钱包 QR 通信的 SDK
关键架构模式
- 多链支持:支持 40 多条区块链,链实现可插拔
- 跨平台 UI:使用 Tamagui 构建通用组件,并进行平台特定适配
- 平台特定文件:使用
.native.ts、.desktop.ts、.web.ts、.ext.ts后缀 - 硬件钱包集成:自定义
@onekeyfe/hd-*SDK 包 - 状态管理:使用 Jotai 进行原子状态管理
代码组织
文件命名约定
- 平台特定实现使用以下后缀:
.native.ts、.web.ts、.desktop.ts、.ext.ts - 组件文件使用 PascalCase:
ComponentName.tsx - Hook 文件使用以
use为前缀的 camelCase:useHookName.ts - 工具文件使用 camelCase:
utilityName.ts
导入模式
- 使用工作区引用:
@onekeyhq/components、@onekeyhq/core、@onekeyhq/kit - 通过
@onekeyhq/shared/src/platformEnv检测平台 - 根据平台能力进行条件导入
导入层级规则 - 严格执行
重要:违反这些规则会导致构建失败并造成循环依赖。
层级(绝不可违反此顺序):
@onekeyhq/shared- 禁止从其他任何 OneKey 包导入@onekeyhq/components- 仅允许从shared导入@onekeyhq/kit-bg- 仅允许从shared和core导入(绝不可从components或kit导入)@onekeyhq/kit- 可从shared、components和kit-bg导入- 应用(desktop/mobile/ext/web)- 可从所有包导入
添加任何导入之前:
- 确认导入符合上述层级规则
- 检查该导入是否会造成循环依赖
- 如有疑问,请寻找符合层级规则的替代方案
应避免的常见违规情况:
- ❌ 在
@onekeyhq/components中从@onekeyhq/kit导入 - ❌ 在
@onekeyhq/kit-bg中从@onekeyhq/components导入 - ❌ 在
@onekeyhq/core中从@onekeyhq/kit导入 - ❌ 层级中的任何“向上”导入
组件结构
- UI 组件位于
packages/components/src/ - 业务逻辑位于
packages/kit/src/ - 链特定代码位于
packages/core/src/chains/
深度分析与架构一致性框架
修改前分析协议
强制分析步骤(任何代码更改前执行):
-
评估影响范围
- 确定受更改影响的所有软件包/应用
- 梳理将受到影响的依赖关系(必要时使用
yarn why <package>) - 评估跨平台影响(桌面端/移动端/Web/扩展)
- 评估向后兼容性要求
-
验证模式一致性
- 检查代码库中现有的类似实现
- 识别已确立的模式和惯例
- 验证新代码是否遵循相同模式
- 检查命名惯例是否与现有代码一致
-
检查架构完整性
- 根据单仓库导入层级规则进行验证
- 确保保持关注点分离
- 验证平台专用代码是否使用正确的文件扩展名
- 检查业务逻辑是否位于适当的软件包中
-
评估性能影响
- 考虑对捆绑包大小的影响(尤其是 Web/扩展)
- 评估对运行时性能的影响
- 评估对内存使用的影响
- 考虑对应用启动时间的影响
代码模式识别框架
添加新功能时:
- 查找类似示例:在代码库中搜索类似实现
- 提取模式:识别常见方法、命名和结构
- 遵循惯例:准确复用现有模式
- 验证一致性:确保新代码与现有代码风格一致
修改现有代码时:
- 了解上下文:阅读周边代码和导入内容
- 保留模式:维护现有架构决策
- 保持风格一致:匹配现有代码风格和结构
- 验证集成:确保更改能够无缝集成
架构验证清单
提交任何更改前:
- 遵守导入层级规则(不得向上导入)
- 平台专用文件使用正确的扩展名
- 保持安全模式(尤其是加密操作)
- 错误处理遵循已确立的模式
- 一致地应用状态管理模式
- 遵循 UI 组件模式(Tamagui 用法)
- 正确实现翻译模式
- 保持并扩展测试模式
评论
支持 Markdown