其他

贡献指南

欢迎参与 karin-plugin-kkk 的开发与贡献

贡献指南

感谢你对 karin-plugin-kkk 感兴趣!我们需要你的帮助来让这个项目变得更好。

无论是修复 Bug、添加新功能,还是改进文档,我们都非常欢迎。

准备工作

在开始之前,请确保你的开发环境满足以下要求:

项目结构

本项目采用 Monorepo 结构,主要包含以下部分:

  • packages/core: 核心插件代码 (karin-plugin-kkk),包含主要业务逻辑。
  • packages/template: React SSR 渲染器,生成 HTML 文件。
  • packages/amagi: 接口库 (Git Submodule),处理各平台的 API 请求与签名。
  • packages/docs: 文档站点,基于 Next.jsFumadocs

packages/amagi 是一个 Git 子模块。如果你需要修改 API 相关的逻辑(如签名算法),请不要直接修改该目录。你需要前往 amagi 仓库 提交 Pull Request。

架构说明

插件在 Karin 中的位置

karin-plugin-kkk 是 Karin 框架的一个功能插件,遵循 Karin 的插件规范开发。

消息处理流程

当用户在群聊中发送包含平台链接的消息时,插件的处理流程如下:

核心模块说明

Apps 命令层 - 负责注册 Karin 命令,监听消息并分发到对应的平台处理器。

src/apps/
├── tools.ts      # 视频解析命令(抖音/B站/快手/小红书)
├── push.ts       # 动态推送任务
├── qrlogin.ts    # 扫码登录功能
├── admin.ts      # 管理员命令
├── help.ts       # 帮助信息
└── update.ts     # 插件更新

Platform 平台层 - 每个平台独立封装,包含链接解析、数据获取、评论处理等。

src/platform/
├── douyin/       # 抖音
├── bilibili/     # B站
├── kuaishou/     # 快手
└── xiaohongshu/  # 小红书

Module 工具层 - 提供配置管理、数据库操作、API 服务、网络请求等通用功能。

src/module/
├── config/       # 配置管理
├── db/           # 数据库操作
├── server/       # API 服务
└── utils/        # 工具函数

数据流向

开发流程

Fork 本仓库

点击项目主页右上角的 Fork 按钮,将仓库 Fork 到你的 GitHub 账户下。

克隆仓库

将你 Fork 后的仓库克隆到本地。由于项目包含子模块,克隆时需要初始化子模块:

# 替换为你的 GitHub 用户名
git clone --recursive https://github.com/你的用户名/karin-plugin-kkk.git

# 或者如果你已经克隆了仓库但没有子模块
git submodule update --init --recursive

安装依赖

使用 pnpm 安装所有依赖:

pnpm install

启动开发环境

根据你要修改的内容,启动相应的开发环境:

  • 开发插件核心 (packages/core):

    pnpm watch
  • 开发模板 (packages/template):

    pnpm template
  • 预览文档 (packages/docs):

    pnpm docs

提交代码

我们遵循 Conventional Commits 规范。

提交信息的格式如下:

<type>(<scope>): <subject>

例如:

  • feat(core): 支持解析新的分享链接
  • fix(template): 修复动态卡片样式错乱
  • docs: 更新贡献指南

提交 Pull Request

  1. 推送到你的 Fork 仓库:
    git push origin feature/amazing-feature
  2. 在 GitHub 上向原仓库提交 Pull Request。

常见问题

如何更新子模块?

如果你发现 packages/amagi 落后于上游,可以使用以下命令更新:

git submodule update --remote

遇到 TypeScript 类型错误?

尝试重新构建整个项目或重新安装依赖:

pnpm install
pnpm build

Last updated on

On this page