AI 应用Agent 工作流开发工具MCP 服务【免费下载链接】cc-wf-studioCC Workflow Studio项目地址https://gitcode.com/gh_mirrors/cc/cc-wf-studio点击查看免费下载本文以 CC Workflow Studio 开源仓库中001-slack-workflow-sharing功能规格包spec.md、requirements.md为核心骨架结合扩展端与 Webview 侧的真实源码实现系统讲解Slack 集成型工作流共享的完整设计包括四条用户故事与功能需求FR-001FR-023、五大核心数据实体、Slack Web API 契约、Extension Host 与 Webview 的消息契约、敏感信息检测机制、令牌安全管理以及从 Slack App 配置到端到端测试的实战路径。读完本文你将掌握 CC Workflow Studio 中共享 → 通知 → 一键导入 → 检索复用这条 Slack 协作链路的完整技术方案并能直接对照源码落地实现。一、功能定位为什么需要 Slack 集成型工作流共享CC Workflow Studio 是运行于 VS Code 的 AI 工作流编辑工具开发者以 JSON 形式定义工作流节点构成、连接、参数。在传统协作模式下团队分享工作流需要手动下载文件、放置到指定目录、再在编辑器中打开链路繁琐而走 Git 版本管理流程对原型阶段的即兴分享又过于重。该功能规格的目标正是解决这一痛点让开发者把 VS Code 中编辑好的工作流定义文件直接分享到团队 Slack 频道Slack 上以富媒体消息卡片展示工作流名、作者、说明等元数据一目了然其他成员从 Slack 消息一键把工作流导入自己的 VS Code无需任何手动文件操作并内置 API Key 等敏感信息的检测警告。规格文档将其价值总结为加速原型阶段的团队协作将 Slack 频道沉淀为可检索、可复用的工作流知识库。二、规格就绪性质量检查清单与已澄清决策关联文档 requirements.md 是该项目规格驱动开发流程中的质量闸门它从三个维度验证了规格的完备性全部通过后才允许进入/speckit.plan规划阶段检查维度通过项内容质量无实现细节泄漏不写语言/框架/API、聚焦用户价值与业务需求、面向非技术干系人可读、所有必填章节完成需求完备性无[NEEDS CLARIFICATION]残留、需求可测试且无歧义、成功标准可量化且技术无关、全部验收场景已定义、边缘案例已识别、范围边界清晰、依赖与假设已识别特性就绪度全部功能需求都有明确验收标准、用户场景覆盖主流程、满足成功标准的可量化产出、规格中无实现细节泄漏清单中还记录了三条已解决的关键澄清这些决策直接塑造了最终实现导入时同名文件冲突处理→ 显示覆盖确认对话框导入前是否需要预览→ 不提供预览直接导入Slack App 分发方式→ 面向 Slack App Directory 公开采用最小实现不依赖服务器基础设施。以及四条核心假设App 通过 Slack App Directory 公开工作流以 Slack 消息附件形式保存OAuth 认证由 VS Code 扩展内的本地 HTTP 服务器处理对外部存储S3 等的依赖最小化。实现对照从源码看覆盖确认对话框、无预览直导、本地 OAuth 服务slack-oauth-service.ts均已落地附件保存方式见下文文件上传。三、用户故事与验收场景四条主流程规格以四条用户故事组织需求按优先级 P1P3 排列故事 1P1VS Code → Slack 工作流共享开发者选择工作流文件分享到团队频道分享时进行敏感信息检测与警告Slack 上以富媒体卡片展示元数据。这是整个功能的基座。验收场景包括执行Slack 分享命令后弹出频道选择对话框分享成功后卡片出现在频道中文件含 API Key 时弹出警告并可选择继续或中止继续分享后消息追加可能含敏感信息注意提示Bot Token 未设置时弹出令牌输入框文件格式非法时报错并中止。故事 2P1Slack → VS Code 一键导入团队成员点击 Slack 消息中的在 VS Code 中打开按钮VS Code 自动启动并导入工作流。验收场景点击按钮后 VS Code 自动导入并打开同名文件存在时弹覆盖确认VS Code 未启动时自动拉起文件损坏时报错并失败。故事 3P2VS Code 内检索过去分享的工作流支持按频道名、工作流名、作者、分享时间筛选并复用导入。验收场景覆盖搜索对话框展示历史列表、按名称过滤、按作者筛选、按分享时间倒序排列。故事 4P3Bot User Token 管理首次使用输入并验证令牌、无效时提示重输、Slack: Manage Token命令查看掩码后的令牌信息并可重设、VS Code 重启后无需重新输入。源码印证四条故事在扩展端均有对应命令处理器见 slack-share-workflow.ts、slack-import-workflow.ts、slack-connect-manual.ts 与 slack-connect-oauth.ts。四、功能需求全览FR-001FR-023规格将需求划分为四大能力域逐条可测试共享功能FR-001 选择工作流文件并分享到 Slack 频道FR-002 分享前校验文件合法性非法格式报错FR-003 分享时可选目标频道FR-004 富媒体卡片必须含工作流名、作者名、说明、分享时间、在 VS Code 中打开按钮FR-005 检测 API Key、认证令牌、密码、私钥等敏感信息并警告FR-006 警告后允许显式继续只警告、不强制阻断FR-007 含敏感信息的消息追加注意提示。导入功能FR-008 分享消息上展示在 VS Code 中打开按钮FR-009 点击后启动 VS Code 并自动导入FR-010 导入到.vscode/workflows/目录FR-011 导入后自动在编辑器中打开FR-012 导入时校验合法性FR-013 同名文件存在时弹覆盖确认FR-014 确认后覆盖、取消则中止。检索复用FR-015 支持从 VS Code 检索历史分享FR-016 支持按工作流名、作者、分享时间范围、频道名过滤FR-017 结果按分享时间倒序FR-018 可从结果选择导入。认证与令牌FR-019 首次使用提示输入并验证 Bot User TokenFR-020 工作流以 Slack 消息附件保存最小化外部存储依赖FR-021 令牌存入 VS Code Secret Storage禁止明文FR-022 检测令牌失效并提示重输FR-023 在 VS Code UI 显示当前 Slack 工作区名。五、数据模型五大核心实体与存储设计data-model.md 定义了五个实体均有对应 TypeScript 类型与校验规则SlackWorkspaceConnection— 工作区连接信息workspaceId/workspaceName/teamId/accessToken仅经 Secret Storage 访问/tokenScope/userId/authorizedAt/lastValidatedAt。令牌校验规则xoxb-或xoxp-开头、至少 40 字符、禁止明文保存Slack ID 采用1 个大写字母 8-11 位字母数字格式。状态机未连接 → OAuth 认证 → 已连接 →令牌失效/用户断开→ 未连接。SharedWorkflowMetadata— 分享工作流元数据idUUID v4、name1-100 字符禁:/\|?*、description≤500 字符、versionSemVer、authorName、sharedAt、channelId/channelName、messageTsSlack 格式{unix}.{微秒}、fileId/fileUrl、nodeCount0-1000、tags≤10 个、每个 ≤30 字符、hasSensitiveData、sensitiveDataOverride。SensitiveDataFinding— 敏感信息检测结果type枚举AWS_ACCESS_KEY/AWS_SECRET_KEY/API_KEY/TOKEN/SLACK_TOKEN/GITHUB_TOKEN/PRIVATE_KEY/PASSWORD/CUSTOM、maskedValue{前4位}...{后4位}不可还原、position、context≤100 字符、severityhigh应立即阻止分享如 AWS Key/私钥medium显示警告如 API Key/令牌low仅提示如密码。SlackChannel— 频道信息idC开头大写字母数字 8-11 位、name小写字母数字加-/_1-80 字符、isPrivate/isMember/memberCount/purpose/topic。可分享目标仅限isMember true的频道。WorkflowImportRequest— 导入请求workflowId/sourceMessageTs/sourceChannelId/fileIdF开头/targetDirectory必须是.vscode/workflows/内绝对路径不存在则自动创建/overwriteExisting/requestedAt/status/errorMessage。状态机pending → downloading → validating → writing → completed任意环节出错 →failed。存储设计认证令牌与工作区 ID 存于 VS Code Secret StorageOS 级 Keychain/Credential Manager卸载扩展时自动清除工作流文件存.vscode/workflows/*.json可选共享历史缓存.vscode/workflow-sharing-history.json。源码对照SlackWorkspaceConnection、SensitiveDataFinding的类型定义在 slack-integration-types.tsSecret Storage 的读写、多工作区密钥体系slack-oauth-{workspaceId}、slack-user-oauth-{workspaceId}、slack-workspace-{workspaceId}及工作区列表实现在 slack-token-manager.ts其中令牌格式校验为/^xoxb-[A-Za-z0-9-]{36,}$/Bot与/^xoxp-[A-Za-z0-9-]{36,}$/User。六、Slack Web API 契约与参数详解slack-api-contracts.md 定义了基于 Slack Web API v2 的全部调用约定。6.1 令牌与 Scopes使用 Slack App 的 Bot User Tokenxoxb-开头格式xoxb-工作区ID-应用ID-令牌串。必需 Scopeschannels:read频道列表、chat:write发消息、files:read文件读取、files:write文件上传、groups:read消息检索。6.2 核心 API 一览API方法/端点用途关键参数Token 验证POST/api/auth.test校验令牌、取工作区信息HeaderAuthorization: Bearer {token}频道列表POST/api/conversations.list取频道types(默认public_channel可加private_channel)、limit(默认 100)、cursor、exclude_archived富媒体消息POST/api/chat.postMessage发卡片channel、text(回退文本)、blocks(Block Kit)、attachments、thread_ts文件上传POST/api/files.uploadV2上传工作流 JSONchannel_id、file、filename、title、initial_comment、thread_ts消息检索POST/api/search.messages检索历史分享query、count(默认 20)、page、sort(score/timestamp)auth.test成功响应示例{ ok: true, url: https://myteam.slack.com/, team: My Team Workspace, team_id: T01234IJKL, user_id: U01234ABCD, bot_id: B01234EFGH }失败返回{ ok: false, error: invalid_auth }。错误码invalid_auth令牌无效/失效、account_inactive账号停用。conversations.list需注意分页响应中的response_metadata.next_cursor用于翻页conversations.list的missing_scope表示缺少channels:read。chat.postMessage错误码含channel_not_found、not_in_channelBot 不是频道成员、missing_scope、msg_too_long超 40,000 字符限制。文件上传采用files.uploadV2multipart/form-data。 源码印证实际实现位于 slack-api-service.ts上传后需解析files.uploadV2的嵌套返回结构response.file或response.files[0].files[0]才能拿到fileId/url_private/permalink。消息检索查询构造示例workflow filename:*.json in:#general按count上限 100、sort: timestamp组合。6.3 Rate Limit 分级与应对Tier每分钟请求数涉及方法Tier 11chat.postMessage、files.uploadTier 220conversations.list、search.messagesTier 350auth.testTier 4100其他应对策略slack/web-api自动重试、尊重Retry-After头、指数退避重试。错误响应{ ok: false, error: rate_limited }并附带X-Rate-Limit-*头与Retry-After。源码印证slack-error-handler.ts 将全部常见错误码映射到 i18n 消息键slack.error.*与建议动作并实现指数退避getRetryDelay(attempt)2^attempt秒、封顶 60 秒、加 0-20% 抖动。6.4 安全要求令牌加密保存于 VS Code Secret Storage、禁止硬编码/明文、最小权限 Scope、保存前用auth.test验证、启动与 API 报错时复验上传前扫描工作流 JSON、日志不输出令牌与工作流内容、UI 仅显示掩码令牌如xoxb-****...****1234、分享前确认对话框。七、Extension Host ↔ Webview 消息契约extension-host-api-contracts.md 定义了 UI 层Webview与扩展宿主Extension Host间的消息传递协议统一格式为{ type, payload, requestId }。Webview → Extension Host命令命令payload 要点SLACK_CONNECT/SLACK_DISCONNECT空对象发起/断开 OAuth 连接GET_SLACK_CHANNELSincludePrivate(默认 true)、onlyMember(默认 true)SHARE_WORKFLOW_TO_SLACKworkflowId、workflowName、channelId、description?、overrideSensitiveWarning?(默认 false)IMPORT_WORKFLOW_FROM_SLACKworkflowId、fileId、messageTs、channelId、overwriteExisting?SEARCH_SLACK_WORKFLOWSquery?、channelId?、authorName?、fromDate?/toDate?(ISO 8601)、limit?(默认 20最大 100)Extension Host → Webview事件SLACK_CONNECT_SUCCESS/FAILED、GET_SLACK_CHANNELS_SUCCESS/FAILED、SENSITIVE_DATA_WARNING、SHARE_WORKFLOW_SUCCESS/FAILED、IMPORT_WORKFLOW_CONFIRM_OVERWRITE、IMPORT_WORKFLOW_SUCCESS/FAILED、SEARCH_SLACK_WORKFLOWS_SUCCESS/FAILED。错误事件统一携带errorCodemessageKeysuggestedActionKeyi18n 键Webview 侧负责翻译渲染。关键流程示例文档原样保留含敏感信息的分享流SHARE_WORKFLOW_TO_SLACK→ 机敏检测 →SENSITIVE_DATA_WARNING→ 用户选继续 → 重发SHARE_WORKFLOW_TO_SLACK(overrideSensitiveWarning: true)→ Slack API 调用 →SHARE_WORKFLOW_SUCCESS。带覆盖确认的导入流IMPORT_WORKFLOW_FROM_SLACK→ 文件存在检查 →IMPORT_WORKFLOW_CONFIRM_OVERWRITE→ 用户选覆盖 → 重发(overwriteExisting: true)→ 下载保存 →IMPORT_WORKFLOW_SUCCESS。源码印证Webview 侧的高层封装在 slack-integration-service.ts采用requestId关联 window.addEventListener(message)模式并定义了带 i18n 键的SlackError与AIGenerationError。八、核心实现分享与导入的两条关键链路8.1 分享链路7 步源码级slack-share-workflow.ts 中的handleShareWorkflowToSlack完整实现为 7 步直接序列化当前画布工作流对象JSON.stringify(workflow, null, 2)若未overrideSensitiveWarning运行detectSensitiveData发现命中即回发SENSITIVE_DATA_WARNING并在此停住等待用户确认从工作流对象提取nodeCount等元数据经slackApiService.postWorkflowMessage先发布富媒体消息卡片此时附件尚未上传生成安全文件名payload.workflowName.replace(/[^a-zA-Z0-9-_]/g, _) .json用files.uploadV2把工作流 JSON作为该消息的线程回复上传用chat.update更新消息卡片补充fileId等完整信息回发SHARE_WORKFLOW_SUCCESS并弹原生通知带 View in Slack 按钮点击后vscode.env.openExternal打开 permalink。8.2 导入链路源码级slack-import-workflow.ts 的handleImportWorkflowFromSlack经slackApiService.downloadWorkflowFile下载先files.info取url_private再用fetch携带Authorization: Bearer {userToken}拉取内容调用 core 包的validateWorkflowFile校验 JSON失败回发INVALID_WORKFLOW_FILE错误通过后调用migrateWorkflow做向后兼容迁移选择保存位置单工作区直接使用多工作区弹showQuickPick目标路径为workspace/.vscode/workflows/安全文件名.json目录不存在则createDirectory自动创建除非overwriteExisting否则同名文件存在时弹模态showWarningMessage覆盖确认取消则回发IMPORT_WORKFLOW_CANCELLED写入文件后回发IMPORT_WORKFLOW_SUCCESS含filePath与完整workflow对象并弹原生通知。8.3 消息卡片与跨编辑器深链接slack-message-builder.ts 用 Block Kit 构建卡片header工作流名→ section说明→ divider → context导入链接区。卡片在附件上传完成后展示Import to链接同时支持 5 种编辑器深链VS Code(vscode)、Cursor(cursor)、Windsurf(windsurf)、Kiro(kiro)、Antigravity(antigravity)URI 格式为scheme://breaking-brake.cc-wf-studio/import?workflowId...fileId...workspaceId...channelId...messageTs...工作区名经 Base64 编码后附加用于错误对话框展示。附件未就绪时占位文案为_Import link will be available after file upload_。8.4 敏感信息检测实现sensitive-data-detector.ts 内置 8 类检测正则类型正则要点严重级AWS Access KeyAKIA 16 位字母数字highAWS Secret Keyaws_secret_access_key/aws_secret等键名后接 40 位 base64 串highSlack Tokenxox[bpoa]-前缀 10 位以上highGitHub Tokenghp_ 36 位high通用 API Keyapi_key/apikey等键名 20 位以上值medium通用 Tokentoken/auth_token/access_token 20 位以上medium私钥-----BEGIN ... PRIVATE KEY-----high密码password/passwd/pwd键名 8 位以上low掩码规则长度 ≤ 8 全掩为****否则显示前4位...后4位如AKIA...MPLE上下文提取为命中位置前后各 50 字符并以[REDACTED]替换命中值保证原始值绝不外泄。辅助函数hasSensitiveData、getHighSeverityFindings、groupFindingsByType供上层调用。8.5 认证与连接OAuth 流slack-connect-oauth.tsinitiateOAuthFlow注册会话 → 打开浏览器授权 → 轮询授权码 →exchangeCodeForToken换取令牌 → 清空旧连接 → 写入 Secret Storage →invalidateClient刷新缓存。要求响应含authed_user.access_tokenUser Tokenxoxp-与team信息。手动令牌流slack-connect-manual.tsshowInputBox带password: true与xoxp-前缀校验 →auth.test验证并自动获取工作区 ID/名称 → 存 Secret Storage → 清除客户端缓存。作者名取自 git config 而非 Slack 用户信息。注意当前实现已从Bot Token演进为以User Tokenxoxp-为主的架构——所有 Slack API 调用均使用 User Token确保用户只能访问其所在频道Bot Token 字段保留仅为向后兼容见 slack-token-manager.ts 中的deprecated标记。8.6 AI 辅助描述生成锦上添花的实战扩展除规格内容外仓库还实现了 slack-description-generation.tsWebview 发GENERATE_SLACK_DESCRIPTION扩展端用 Claude Code CLIhaiku 模型基于工作流 JSON 与目标语言en/ja/ko/zh-CN/zh-TW生成 ≤500 字符的简洁描述输出经去 markdown 标记、去引号、截断等清洗默认超时 30 秒。Webview 侧 SlackShareDialog.tsx 配套使用。九、实战快速开始Slack App 配置到端到端测试quickstart.md 提供了完整落地路径。9.1 前置条件与依赖Node.js 18、VS Code 1.80.0、npm/yarn。安装slack/web-apiSlack SDK与types/node。9.2 Slack App 配置四步在 Slack API 控制台创建 AppFrom scratch命名如CC Workflow Studio选择开发用工作区在 OAuth Permissions → Bot Token Scopes 添加chat:write、files:write、channels:read、groups:read点击 Install to Workspace → Allow复制 Bot User OAuth Tokenxoxb-开头。令牌属机密严禁硬编码或提交到公开仓库。9.3 本地开发npm install npm install slack/web-api npm run build # TypeScript 编译 npm run watch # watch 模式VS Code 中按F5打开 Extension Development Host打开 Workflow Studio点工具栏 Share to Slack若未配置令牌会先弹出令牌输入框。修改源码后npm run build并在扩展宿主中Ctrl/CmdR重载。9.4 手工 E2E 测试要点节选T001 令牌设置输入xoxb-令牌 → 验证成功且显示工作区名 → 弹出频道选择T002 分享选频道分享 → 无敏感信息时不弹警告 → Slack 频道可见富媒体卡片T003 敏感检测在工作流中放入AKIA1234567890ABCDEF→ 分享时弹警告 → 显示掩码值AKIA...CDEF→ 选继续完成分享T005 覆盖确认导入同名文件 → 弹覆盖确认 → 选覆盖完成T006 检索命令面板执行Slack: Search Workflows→ 输入查询 → 列表展示 → 选择导入。错误用例令牌未设置弹输入框、Bot 未入频道提示请将机器人邀请到频道、断网网络错误提示。性能基准分享 3 秒、导入 2 秒、100KB 内文件敏感检测 500ms用console.time度量。9.5 故障排查速查令牌验证失败重新获取令牌、确认xoxb-前缀、核对四个 Scope 是否齐全改 Scope 后需 Reinstall 重新生成令牌令牌未保存macOS 查 Keychain 权限、Windows 查 Credential Manager、Linux 确认 libsecret 已安装工作流未出现在 Slack在频道执行/invite Claude Code Workflows邀请 Bot 入会Rate Limit 超限等待Retry-After、确认slack/web-api自动重试生效、避免连续请求。十、可量化的成功标准SC-001SC-010规格为每个功能定义了可测量的成功指标供验收与回归使用编号指标SC-001VS Code → Slack 分享全程 ≤ 30 秒SC-002Slack 消息 → VS Code 导入 ≤ 10 秒SC-003敏感检测对常见 API Key/令牌模式AWS、GitHub、Slack、OpenAI 等准确率 ≥ 90%SC-004共享到导入全流程无需任何手动下载/放置/打开操作SC-005历史检索结果 ≤ 2 秒内显示SC-006100 条历史近 30 天检索 ≤ 3 秒完成SC-007令牌输入与验证 ≤ 30 秒SC-008认证信息加密保存、明文存储 0 条SC-00990% 用户首次尝试即成功完成共享与导入SC-010引入后团队工作流复用率提升 ≥ 50%十一、边缘案例清单规格原样保留网络断开显示错误并提示检查连接离线时共享/导入功能置灰禁用Rate Limit检测并告知等待时间实现自动重试超大文件10MB提前检查并警告参照 Slack 附件限制设定合理上限无频道权限仅展示可访问频道权限错误给出明确提示附件被删除/不可访问因工作流以附件保存无独立存储删除时报错中止导入检索时对已删工作流给出警告同一工作流多次分享记录分享时间与消息 ID 区分多版本检索优先显示最新版。十二、结语CC Workflow Studio 的 Slack 集成型工作流共享是一个规格驱动、实现完整的功能模块从 spec.md 的四条用户故事与 23 条功能需求到>赞分享AI 应用Agent 工作流开发工具MCP 服务【免费下载链接】cc-wf-studioCC Workflow Studio项目地址https://gitcode.com/gh_mirrors/cc/cc-wf-studio点击查看免费下载相关推荐Linux 内核模块加载指南insmod 命令详解与实战Linux 内核模块加载指南insmod 命令详解与实战 Linux 内核采用模块化设计许多功能尤其是设备驱动程序以可加载内核模块Loadable KAI 应用Agent 工作流开发工具MCP 服务CC Workflow Studio Slack 集成实现指南工作流一键共享、导入与安全检测的完整方案CC Workflow Studio Slack 集成实现指南工作流一键共享、导入与安全检测的完整方案 导读 本文以 CC Workflow Studio 仓AI 应用Agent 工作流开发工具MCP 服务CC Workflow Studio 的 Slack 集成实战从任务清单到源码实现的工作流共享与导入指南CC Workflow Studio 的 Slack 集成实战从任务清单到源码实现的工作流共享与导入指南 本文基于 CC Workflow Studio 仓库AI 应用Agent 工作流开发工具MCP 服务上一篇CloudExplorer Lite与Kubernetes集成云原生环境下的多云管理终极指南下一篇终极Brain.js神经网络实战指南5个商业应用成功案例深度解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考