[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6G2AVPDWJ14XTMKAZJF5NXJ":3,"skill-same:01M6G2AVPDWJ14XTMKAZJF5NXJ":50},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":21,"linkOnly":22,"markdownContent":23,"markdownBody":24,"frontMatter":25,"refName":27,"commitSha":28,"skillDirectory":29,"forksCount":30,"repositoryHtmlUrl":31,"repositoryHomepageUrl":6,"ownerHtmlUrl":32,"ownerBlogUrl":33,"ownerDescription":34,"updatedAt":35,"install":36,"resources":49},"01M6G2AVPDWJ14XTMKAZJF5NXJ","iterative-retrieval",null,"逐步优化上下文检索以解决子代理上下文问题的模式","oabdelmaksoud\u002FAgention","oabdelmaksoud","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F50699149?v=4","01M6D5CVVN778ZCDP1WHS816SP","Omar Abdelmaksoud","01M6D8A4TE76V3DCSH3D94VG1V",2,"MIT","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FAgention\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fecc\u002Fdocs\u002Fzh-CN\u002Fskills\u002Fiterative-retrieval\u002FSKILL.md",[],[19,20],"iterative retrieval","retrieval","2026-11-10 10:12:30",false,"---\nname: iterative-retrieval\ndescription: 逐步优化上下文检索以解决子代理上下文问题的模式\norigin: ECC\n---\n\n# 迭代检索模式\n\n解决多智能体工作流中的“上下文问题”，即子智能体在开始工作前不知道需要哪些上下文。\n\n## 何时激活\n\n* 当需要生成需要代码库上下文但无法预先预测的子代理时\n* 构建需要逐步完善上下文的多代理工作流时\n* 在代理任务中遇到\"上下文过大\"或\"缺少上下文\"的失败时\n* 为代码探索设计类似 RAG 的检索管道时\n* 在代理编排中优化令牌使用时\n\n## 问题\n\n子智能体被生成时上下文有限。它们不知道：\n\n* 哪些文件包含相关代码\n* 代码库中存在哪些模式\n* 项目使用什么术语\n\n标准方法会失败：\n\n* **发送所有内容**：超出上下文限制\n* **不发送任何内容**：智能体缺乏关键信息\n* **猜测所需内容**：经常出错\n\n## 解决方案：迭代检索\n\n一个逐步优化上下文的 4 阶段循环：\n\n```\n┌─────────────────────────────────────────────┐\n│                                             │\n│   ┌──────────┐      ┌──────────┐            │\n│   │ DISPATCH │─────▶│ EVALUATE │            │\n│   └──────────┘      └──────────┘            │\n│        ▲                  │                 │\n│        │                  ▼                 │\n│   ┌──────────┐      ┌──────────┐            │\n│   │   LOOP   │◀─────│  REFINE  │            │\n│   └──────────┘      └──────────┘            │\n│                                             │\n│        Max 3 cycles, then proceed           │\n└─────────────────────────────────────────────┘\n```\n\n### 阶段 1：调度\n\n初始的广泛查询以收集候选文件：\n\n```javascript\n\u002F\u002F Start with high-level intent\nconst initialQuery = {\n  patterns: ['src\u002F**\u002F*.ts', 'lib\u002F**\u002F*.ts'],\n  keywords: ['authentication', 'user', 'session'],\n  excludes: ['*.test.ts', '*.spec.ts']\n};\n\n\u002F\u002F Dispatch to retrieval agent\nconst candidates = await retrieveFiles(initialQuery);\n```\n\n### 阶段 2：评估\n\n评估检索到的内容的相关性：\n\n```javascript\nfunction evaluateRelevance(files, task) {\n  return files.map(file => ({\n    path: file.path,\n    relevance: scoreRelevance(file.content, task),\n    reason: explainRelevance(file.content, task),\n    missingContext: identifyGaps(file.content, task)\n  }));\n}\n```\n\n评分标准：\n\n* **高 (0.8-1.0)**：直接实现目标功能\n* **中 (0.5-0.7)**：包含相关模式或类型\n* **低 (0.2-0.4)**：略微相关\n* **无 (0-0.2)**：不相关，排除\n\n### 阶段 3：优化\n\n根据评估结果更新搜索条件：\n\n```javascript\nfunction refineQuery(evaluation, previousQuery) {\n  return {\n    \u002F\u002F Add new patterns discovered in high-relevance files\n    patterns: [...previousQuery.patterns, ...extractPatterns(evaluation)],\n\n    \u002F\u002F Add terminology found in codebase\n    keywords: [...previousQuery.keywords, ...extractKeywords(evaluation)],\n\n    \u002F\u002F Exclude confirmed irrelevant paths\n    excludes: [...previousQuery.excludes, ...evaluation\n      .filter(e => e.relevance \u003C 0.2)\n      .map(e => e.path)\n    ],\n\n    \u002F\u002F Target specific gaps\n    focusAreas: evaluation\n      .flatMap(e => e.missingContext)\n      .filter(unique)\n  };\n}\n```\n\n### 阶段 4：循环\n\n使用优化后的条件重复（最多 3 个周期）：\n\n```javascript\nasync function iterativeRetrieve(task, maxCycles = 3) {\n  let query = createInitialQuery(task);\n  let bestContext = [];\n\n  for (let cycle = 0; cycle \u003C maxCycles; cycle++) {\n    const candidates = await retrieveFiles(query);\n    const evaluation = evaluateRelevance(candidates, task);\n\n    \u002F\u002F Check if we have sufficient context\n    const highRelevance = evaluation.filter(e => e.relevance >= 0.7);\n    if (highRelevance.length >= 3 && !hasCriticalGaps(evaluation)) {\n      return highRelevance;\n    }\n\n    \u002F\u002F Refine and continue\n    query = refineQuery(evaluation, query);\n    bestContext = mergeContext(bestContext, highRelevance);\n  }\n\n  return bestContext;\n}\n```\n\n## 实际示例\n\n### 示例 1：错误修复上下文\n\n```\nTask: \"Fix the authentication token expiry bug\"\n\nCycle 1:\n  DISPATCH: Search for \"token\", \"auth\", \"expiry\" in src\u002F**\n  EVALUATE: Found auth.ts (0.9), tokens.ts (0.8), user.ts (0.3)\n  REFINE: Add \"refresh\", \"jwt\" keywords; exclude user.ts\n\nCycle 2:\n  DISPATCH: Search refined terms\n  EVALUATE: Found session-manager.ts (0.95), jwt-utils.ts (0.85)\n  REFINE: Sufficient context (2 high-relevance files)\n\nResult: auth.ts, tokens.ts, session-manager.ts, jwt-utils.ts\n```\n\n### 示例 2：功能实现\n\n```\nTask: \"Add rate limiting to API endpoints\"\n\nCycle 1:\n  DISPATCH: Search \"rate\", \"limit\", \"api\" in routes\u002F**\n  EVALUATE: No matches - codebase uses \"throttle\" terminology\n  REFINE: Add \"throttle\", \"middleware\" keywords\n\nCycle 2:\n  DISPATCH: Search refined terms\n  EVALUATE: Found throttle.ts (0.9), middleware\u002Findex.ts (0.7)\n  REFINE: Need router patterns\n\nCycle 3:\n  DISPATCH: Search \"router\", \"express\" patterns\n  EVALUATE: Found router-setup.ts (0.8)\n  REFINE: Sufficient context\n\nResult: throttle.ts, middleware\u002Findex.ts, router-setup.ts\n```\n\n## 与智能体集成\n\n在智能体提示中使用：\n\n```markdown\n在为该任务检索上下文时：\n1. 从广泛的关键词搜索开始\n2. 评估每个文件的相关性（0-1 分制）\n3. 识别仍缺失哪些上下文\n4. 优化搜索条件并重复（最多 3 个循环）\n5. 返回相关性 >= 0.7 的文件\n\n```\n\n## 最佳实践\n\n1. **先宽泛，后逐步细化** - 不要过度指定初始查询\n2. **学习代码库术语** - 第一轮循环通常能揭示命名约定\n3. **跟踪缺失内容** - 明确识别差距以驱动优化\n4. **在“足够好”时停止** - 3 个高相关性文件胜过 10 个中等相关性文件\n5. **自信地排除** - 低相关性文件不会变得相关\n\n## 相关\n\n* [长篇指南](https:\u002F\u002Fx.com\u002Faffaanmustafa\u002Fstatus\u002F2014040193557471352) - 子智能体编排部分\n* `continuous-learning` 技能 - 用于随时间改进的模式\n* 在 `~\u002F.claude\u002Fagents\u002F` 中的智能体定义\n","# 迭代检索模式\n\n解决多智能体工作流中的“上下文问题”，即子智能体在开始工作前不知道需要哪些上下文。\n\n## 何时激活\n\n* 当需要生成需要代码库上下文但无法预先预测的子代理时\n* 构建需要逐步完善上下文的多代理工作流时\n* 在代理任务中遇到\"上下文过大\"或\"缺少上下文\"的失败时\n* 为代码探索设计类似 RAG 的检索管道时\n* 在代理编排中优化令牌使用时\n\n## 问题\n\n子智能体被生成时上下文有限。它们不知道：\n\n* 哪些文件包含相关代码\n* 代码库中存在哪些模式\n* 项目使用什么术语\n\n标准方法会失败：\n\n* **发送所有内容**：超出上下文限制\n* **不发送任何内容**：智能体缺乏关键信息\n* **猜测所需内容**：经常出错\n\n## 解决方案：迭代检索\n\n一个逐步优化上下文的 4 阶段循环：\n\n```\n┌─────────────────────────────────────────────┐\n│                                             │\n│   ┌──────────┐      ┌──────────┐            │\n│   │ DISPATCH │─────▶│ EVALUATE │            │\n│   └──────────┘      └──────────┘            │\n│        ▲                  │                 │\n│        │                  ▼                 │\n│   ┌──────────┐      ┌──────────┐            │\n│   │   LOOP   │◀─────│  REFINE  │            │\n│   └──────────┘      └──────────┘            │\n│                                             │\n│        Max 3 cycles, then proceed           │\n└─────────────────────────────────────────────┘\n```\n\n### 阶段 1：调度\n\n初始的广泛查询以收集候选文件：\n\n```javascript\n\u002F\u002F Start with high-level intent\nconst initialQuery = {\n  patterns: ['src\u002F**\u002F*.ts', 'lib\u002F**\u002F*.ts'],\n  keywords: ['authentication', 'user', 'session'],\n  excludes: ['*.test.ts', '*.spec.ts']\n};\n\n\u002F\u002F Dispatch to retrieval agent\nconst candidates = await retrieveFiles(initialQuery);\n```\n\n### 阶段 2：评估\n\n评估检索到的内容的相关性：\n\n```javascript\nfunction evaluateRelevance(files, task) {\n  return files.map(file => ({\n    path: file.path,\n    relevance: scoreRelevance(file.content, task),\n    reason: explainRelevance(file.content, task),\n    missingContext: identifyGaps(file.content, task)\n  }));\n}\n```\n\n评分标准：\n\n* **高 (0.8-1.0)**：直接实现目标功能\n* **中 (0.5-0.7)**：包含相关模式或类型\n* **低 (0.2-0.4)**：略微相关\n* **无 (0-0.2)**：不相关，排除\n\n### 阶段 3：优化\n\n根据评估结果更新搜索条件：\n\n```javascript\nfunction refineQuery(evaluation, previousQuery) {\n  return {\n    \u002F\u002F Add new patterns discovered in high-relevance files\n    patterns: [...previousQuery.patterns, ...extractPatterns(evaluation)],\n\n    \u002F\u002F Add terminology found in codebase\n    keywords: [...previousQuery.keywords, ...extractKeywords(evaluation)],\n\n    \u002F\u002F Exclude confirmed irrelevant paths\n    excludes: [...previousQuery.excludes, ...evaluation\n      .filter(e => e.relevance \u003C 0.2)\n      .map(e => e.path)\n    ],\n\n    \u002F\u002F Target specific gaps\n    focusAreas: evaluation\n      .flatMap(e => e.missingContext)\n      .filter(unique)\n  };\n}\n```\n\n### 阶段 4：循环\n\n使用优化后的条件重复（最多 3 个周期）：\n\n```javascript\nasync function iterativeRetrieve(task, maxCycles = 3) {\n  let query = createInitialQuery(task);\n  let bestContext = [];\n\n  for (let cycle = 0; cycle \u003C maxCycles; cycle++) {\n    const candidates = await retrieveFiles(query);\n    const evaluation = evaluateRelevance(candidates, task);\n\n    \u002F\u002F Check if we have sufficient context\n    const highRelevance = evaluation.filter(e => e.relevance >= 0.7);\n    if (highRelevance.length >= 3 && !hasCriticalGaps(evaluation)) {\n      return highRelevance;\n    }\n\n    \u002F\u002F Refine and continue\n    query = refineQuery(evaluation, query);\n    bestContext = mergeContext(bestContext, highRelevance);\n  }\n\n  return bestContext;\n}\n```\n\n## 实际示例\n\n### 示例 1：错误修复上下文\n\n```\nTask: \"Fix the authentication token expiry bug\"\n\nCycle 1:\n  DISPATCH: Search for \"token\", \"auth\", \"expiry\" in src\u002F**\n  EVALUATE: Found auth.ts (0.9), tokens.ts (0.8), user.ts (0.3)\n  REFINE: Add \"refresh\", \"jwt\" keywords; exclude user.ts\n\nCycle 2:\n  DISPATCH: Search refined terms\n  EVALUATE: Found session-manager.ts (0.95), jwt-utils.ts (0.85)\n  REFINE: Sufficient context (2 high-relevance files)\n\nResult: auth.ts, tokens.ts, session-manager.ts, jwt-utils.ts\n```\n\n### 示例 2：功能实现\n\n```\nTask: \"Add rate limiting to API endpoints\"\n\nCycle 1:\n  DISPATCH: Search \"rate\", \"limit\", \"api\" in routes\u002F**\n  EVALUATE: No matches - codebase uses \"throttle\" terminology\n  REFINE: Add \"throttle\", \"middleware\" keywords\n\nCycle 2:\n  DISPATCH: Search refined terms\n  EVALUATE: Found throttle.ts (0.9), middleware\u002Findex.ts (0.7)\n  REFINE: Need router patterns\n\nCycle 3:\n  DISPATCH: Search \"router\", \"express\" patterns\n  EVALUATE: Found router-setup.ts (0.8)\n  REFINE: Sufficient context\n\nResult: throttle.ts, middleware\u002Findex.ts, router-setup.ts\n```\n\n## 与智能体集成\n\n在智能体提示中使用：\n\n```markdown\n在为该任务检索上下文时：\n1. 从广泛的关键词搜索开始\n2. 评估每个文件的相关性（0-1 分制）\n3. 识别仍缺失哪些上下文\n4. 优化搜索条件并重复（最多 3 个循环）\n5. 返回相关性 >= 0.7 的文件\n\n```\n\n## 最佳实践\n\n1. **先宽泛，后逐步细化** - 不要过度指定初始查询\n2. **学习代码库术语** - 第一轮循环通常能揭示命名约定\n3. **跟踪缺失内容** - 明确识别差距以驱动优化\n4. **在“足够好”时停止** - 3 个高相关性文件胜过 10 个中等相关性文件\n5. **自信地排除** - 低相关性文件不会变得相关\n\n## 相关\n\n* [长篇指南](https:\u002F\u002Fx.com\u002Faffaanmustafa\u002Fstatus\u002F2014040193557471352) - 子智能体编排部分\n* `continuous-learning` 技能 - 用于随时间改进的模式\n* 在 `~\u002F.claude\u002Fagents\u002F` 中的智能体定义\n",{"name":5,"origin":26,"description":7},"ECC","main","a318f48de3c5718e8ea2e9f6fae7790e8a759e85","upstream-sync\u002Fwork\u002Fecc\u002Fdocs\u002Fzh-CN\u002Fskills\u002Fiterative-retrieval",0,"https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FAgention","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fo-abdelmaksoud\u002F","Full-Stack Engineer | AI Systems Architect | Building autonomous multi-agent systems","2026-03-08 21:23:03",{"source":8,"skillName":5,"commands":37,"prompt":47,"zipAvailable":48},[38,41,44],{"tool":39,"command":40},"npx","npx skills add oabdelmaksoud\u002FAgention --skill iterative-retrieval",{"tool":42,"command":43},"bunx","bunx skills add oabdelmaksoud\u002FAgention --skill iterative-retrieval",{"tool":45,"command":46},"pnpm","pnpm dlx skills add oabdelmaksoud\u002FAgention --skill iterative-retrieval","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FAgention\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fecc\u002Fdocs\u002Fzh-CN\u002Fskills\u002Fiterative-retrieval\u002FSKILL.md",true,[],[51,75,89,122,148,168],{"skillNo":52,"name":53,"nameZh":6,"description":54,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":55,"categories":56,"keywords":62,"publishedAt":21},"01M6G2QFCBNBYAJF2KTK85G9A6","visa-doc-translate","Translate visa application documents (images) to English and create a bilingual PDF with original and translation","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FAgention\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fecc\u002Fskills\u002Fvisa-doc-translate\u002FSKILL.md",[57],{"categoryNo":58,"categoryName":59,"taxonomyType":60,"taxonomyTypeDesc":61},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",[63,64,65,66,67,68,69,70,71,72,73,74],"translate","doc","visa doc translate","bilingual","with","english","application","PDF","translation","documents","create","images",{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":21},"01M6G2QB09TSK6BY4ME5X20EVQ","verification-loop","A comprehensive verification system for Claude Code sessions.","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FAgention\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fecc\u002Fskills\u002Fverification-loop\u002FSKILL.md",[],[82,83,84,85,86,87,88],"verification","loop","verification loop","sessions","code","claude code sessions","system",{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":106,"publishedAt":21},"01M6G2Q6V2F7G03VAAF27FXPJR","tdd-workflow","Use this skill when writing new features, fixing bugs, or refactoring code. Enforces test-driven development with 80%+ coverage including unit, integration, and E2E tests.","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FAgention\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fecc\u002Fskills\u002Ftdd-workflow\u002FSKILL.md",[95,98,101],{"categoryNo":96,"categoryName":97,"taxonomyType":60,"taxonomyTypeDesc":61},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":99,"categoryName":100,"taxonomyType":60,"taxonomyTypeDesc":61},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":102,"categoryName":103,"taxonomyType":104,"taxonomyTypeDesc":105},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[107,108,109,110,111,112,113,114,115,86,116,117,118,119,67,120,121],"workflow","tdd","tdd workflow","use","unit","coverage","refactoring","e2e","integration","development","e2e tests","tests","driven","test","writing",{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":128,"publishedAt":21},"01M6G2Q359YJRWAR2PFCEQAXF3","swiftui-patterns","SwiftUI architecture patterns, state management with @Observable, view composition, navigation, performance optimization, and modern iOS\u002FmacOS UI best practices.","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FAgention\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fecc\u002Fskills\u002Fswiftui-patterns\u002FSKILL.md",[],[129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,67],"patterns","swiftui","swiftui patterns","architecture","macos","performance","state management","best practices","state","ui","Optimization","ios","architecture patterns","Composition","performance optimization","view","management","swiftui architecture","navigation",{"skillNo":149,"name":150,"nameZh":6,"description":151,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":152,"categories":153,"keywords":155,"publishedAt":21},"01M6G2PY8B2FWZTWPZ84H83Y7C","swift-protocol-di-testing","Protocol-based dependency injection for testable Swift code — mock file system, network, and external APIs using focused protocols and Swift Testing.","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FAgention\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fecc\u002Fskills\u002Fswift-protocol-di-testing\u002FSKILL.md",[154],{"categoryNo":96,"categoryName":97,"taxonomyType":60,"taxonomyTypeDesc":61},[156,157,158,159,86,160,161,162,163,88,164,165,166,167],"swift protocol di testing","protocol","swift","testing","protocols","file","network","injection","dependency","swift testing","dependency injection","mock",{"skillNo":169,"name":170,"nameZh":6,"description":171,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":172,"categories":173,"keywords":174,"publishedAt":21},"01M6G2PSCN2GXV9FFZDRRRWVB6","swift-concurrency-6-2","Swift 6.2 Approachable Concurrency — single-threaded by default, @concurrent for explicit background offloading, isolated conformances for main actor types.","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FAgention\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fecc\u002Fskills\u002Fswift-concurrency-6-2\u002FSKILL.md",[],[175,176,177,158,178,27,179],"concurrency","swift concurrency","swift concurrency 6 2","default","types"]