Token导航 LogoToken导航TokenDH.com
前端设计需要联网github未标认证来源可访问许可证需确认审计通过

kuikly-coroutines-threadingkuikly 协程线程

Agent Skill

kuikly-coroutines-threading 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

1,148

周安装

46

GitHub Stars

71

下载量

372
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:kuikly-coroutines-threading(kuikly 协程线程)
来源仓库:https://github.com/tencent-tds/kuiklyui-ai
仓库路径:skills/kuikly-coroutines-threading
安装命令:
npx skills add https://github.com/tencent-tds/kuiklyui-ai --skill kuikly-coroutines-threading
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/tencent-tds/kuiklyui-ai --skill kuikly-coroutines-threading

简介

kuikly-coroutines-threading 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合围绕仓库状态和协作事项进行整理。

  • 适用场景包括代码审查、项目进度跟踪、协作流程管理和仓库元数据分析等开发管理工作。
  • 核心能力涵盖仓库信息检索、变更追踪和协作事项归纳,支持多分支和多项目并行管理。
  • 可通过 npx skills add 命令从指定 GitHub 仓库安装,需确认权限范围和访问限制后再使用。
  • 使用前应检查是否会触发网络请求、API 调用或文件操作,避免越权访问或数据泄露风险。

SKILL.md

Kuikly 协程与多线程编程

核心规则

  • Kuikly 线程约束:所有 Kuikly UI 操作(View、Attr、Event、observable、Module 方法、setTimeout 等)只能在 Kuikly 线程调用,Kuikly UI 相关类非线程安全。
  • 异步任务完成后必须回到 Kuikly 线程才能更新 UI 或访问响应式属性。
  • 动态化场景不支持 kotlinx 协程(js 目标平台不支持多线程),只能使用 Module 机制或 Kuikly 内建协程。

协程实现方式对比

特性回调(无协程)Kuikly 内建协程kotlinx 协程
动态化支持✅ 支持✅ 支持❌ 不支持
依赖库包增量kotlinx 协程库
线程安全不涉及自动保障需要考虑

三种协程 API

1. Kuikly 内建协程(推荐用于简单异步)

框架自带,始终在 Kuikly 线程执行,无线程切换开销,支持动态化

API 入口:

  • GlobalScope.launch {...} — 全局作用域
  • lifecycleScope.launch {...} — 绑定 Pager 生命周期(推荐)
  • async {...} / await() — 并发获取结果

import:

import com.tencent.kuikly.core.coroutines.GlobalScope
import com.tencent.kuikly.core.coroutines.launch
import com.tencent.kuikly.core.coroutines.async
import com.tencent.kuikly.core.coroutines.delay

注意: Kuikly 内建协程 API 本身非线程安全,不能在 Kuikly 线程外调用。

2. kotlinx.coroutines 库

Kotlin 官方协程库,支持多线程调度器(Dispatchers.Default/IO/Main 等),不支持动态化

接入方式:

// iOS & Android
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$KOTLINX_COROUTINES_VERSION")
// 鸿蒙
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$KOTLINX_COROUTINES_OHOS_VERSION")

3. kuiklyx.coroutines 库(切换到 Kuikly 线程)

提供 Dispatchers.Kuikly 调度器和 KuiklyContextScheduler 回调 API,用于从非 Kuikly 线程切回 Kuikly 线程。

接入方式:

// iOS & Android
implementation("com.tencent.kuiklyx:coroutines:$KUIKLYX_COROUTINES_VERSION")
// 鸿蒙
implementation("com.tencent.kuiklyx:coroutines:$KUIKLYX_COROUTINES_OHOS_VERSION")

协程方式 API:

// 启动协程,在 Kuikly 线程执行
GlobalScope.launch(Dispatchers.Kuikly[ctx]) { ... }
// 在协程中切换到 Kuikly 线程
withContext(Dispatchers.Kuikly[ctx]) { ... }

回调方式 API:

KuiklyContextScheduler.runOnKuiklyThread(pagerId) { cancel ->
    if (cancel) return  // pager 已销毁
    // 在 Kuikly 线程执行
}

场景选择决策树

根据需求选择合适的异步编程方式:

需要异步编程?
├── 只需简化回调,无多线程诉求?
│   └── → 方式1:Kuikly 内建协程
├── 需要执行耗时任务 + 支持动态化?
│   └── → 方式2:Module 机制(可配合内建协程)
├── 需要多线程 + 不需要动态化?
│   └── → 方式3:kotlinx 协程 + kuiklyx 协程
└── Compose DSL 页面?
    └── → 方式4:LaunchedEffect + withContext
⚠️ 一致性原则:选择方案时,还需关注当前项目或模块中已有的异步编程方式,应优先保持一致,避免在同一模块中混用多套异步方案。

详细场景示例和代码:见 SCENARIOS.md


Compose DSL 中的协程

Compose DSL 页面(继承 ComposeContainer)使用 kotlinx 协程体系:

@Composable
fun MyContent() {
    var data by remember { mutableStateOf("") }
    LaunchedEffect(Unit) {
        // 默认在 Kuikly 线程执行(ComposeDispatcher)
        val result = withContext(Dispatchers.IO) {
            // 在 IO 线程执行耗时任务
            fetchData()
        }
        // 自动回到 Kuikly 线程
        data = result
    }
    Text(text = data)
}

关键点:

  • LaunchedEffect 默认运行在 Kuikly 线程(通过 ComposeDispatcher 调度)
  • 使用 withContext(Dispatchers.IO) 切换到 IO 线程执行耗时任务
  • withContext 返回后自动回到 Kuikly 线程
  • viewModelScope 也绑定到 Kuikly 线程,ViewModel 销毁时自动取消

Dispatchers.IO 跨平台定义:

// commonMain 中声明 expect
internal expect val Dispatchers.IO: CoroutineDispatcher

// androidMain / appleMain / ohosArm64Main
internal actual val Dispatchers.IO: CoroutineDispatcher
    get() = Dispatchers.IO  // 使用平台原生 IO 调度器

// jsMain(不支持多线程)
internal actual val Dispatchers.IO: CoroutineDispatcher
    get() = Dispatchers.Default

线程安全

线程安全规则

  • Kuikly UI 相关类(View、Attr、Event、ObservableProperties、GlobalFunctions、Module 方法、Layout 等)非线程安全,只能在 Kuikly 线程访问

线程安全验证机制

详细用法和示例:见 THREAD_SAFETY.md

override fun willInit() {
    super.willInit()
    Pager.VERIFY_THREAD = true              // 开启线程校验
    Pager.VERIFY_REACTIVE_OBSERVER = true   // 开启 observable 校验
    Pager.verifyFailed { exception ->       // 自定义验证失败处理
        println("线程安全验证失败: ${exception.message}")
        throw exception
    }
}

常见陷阱与正确做法

❌ 错误做法✅ 正确做法
在非 Kuikly 线程直接更新 observable通过 Dispatchers.KuiklyKuiklyContextScheduler 切回 Kuikly 线程
在非 Kuikly 线程调用 Module 方法Module 的 acquireModule / toNative 等方法需在 Kuikly 线程调用
在动态化场景使用 kotlinx 协程使用 Kuikly 内建协程或 Module 机制
在 Kuikly 线程外调用内建协程 API内建协程 API 只能在 Kuikly 线程调用
忘记处理 Pager 销毁后的回调KuiklyContextScheduler 回调检查 cancel 参数
verifyFailed 回调中操作 UI验证失败通常发生在非 Kuikly 线程,不能调用 UI API
Compose 中在 IO 线程更新 State使用 withContext 回到默认调度器后再更新 State

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

34.32%
按下载量换算128

Claude

30.19%
按下载量换算112

Cursor

17.24%
按下载量换算64

Gemini CLI

10.26%
按下载量换算38

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills