Open
Conversation
# Conflicts: # README.md # assets/docs/architecture.md # assets/docs/sdk-api.md # assets/docs/workspace-guide.md # package-lock.json # package.json # src/index.ts
- 新增 // 前缀命令解析,支持命名空间透传(如 //superpowers:brainstorming) - 新增 /commands 命令,生成命令清单 Markdown 文件并发送到飞书 - 新增 command-doc.ts 命令文档生成器,输出表格格式(分组、分列) - 新增 OpencodeClient.getCommands 方法,动态获取可用命令列表 - 新增系统生成文件豁免机制,绕过 ALLOWED_DIRECTORIES 白名单校验 - 修复透传命令大小写问题,保留原始命令名(OpenCode 区分大小写) - README 新增命令中心和双斜杠透传使用说明
- 为 getCommands() 添加 5 分钟缓存机制,减少重复 API 调用 - 实现 OpenCode 版本兼容性检查,首次调用时自动检测 API 可用性 - 添加 clearCommandsCache() 方法用于手动刷新缓存 - 新增双斜杠透传功能单元测试,覆盖 23 个测试用例 - 测试覆盖包括:命名空间解析、大小写保留、参数处理、边界情况 技术细节: - 缓存使用 TTL 策略,5 分钟后自动失效 - 版本检查通过实际调用 command.list API 验证兼容性 - 测试用例覆盖 parseDoubleSlashCommand 的所有主要场景 - 遵循项目 TypeScript 编码规范,无类型错误
问题表现: 1. 私聊 /create_chat 创建群后立即被自动解散 2. 飞书弹出"目标回调服务超时未响应"警告(虽然群实际创建成功) 根本原因: - 飞书 createChat API 的成员添加是异步操作,有同步延迟 - lifecycle.ts 的孤儿映射清理在启动时执行,新群未出现在 getUserChats() 返回列表中 - 飞书卡片回调响应限制为 3 秒,但建群流程涉及多个耗时异步操作 修复方案(三重保护): 1️. p2p.ts - ensureUserInGroup 添加重试机制 - 最多重试 3 次,每次间隔 500ms(总等待 1.5 秒) - 等待飞书 API 完成成员列表同步 - 最后一次重试失败后尝试手动拉取用户作为兜底 2️. lifecycle.ts - runCleanupScan 添加新群保护窗口 - 清理孤儿映射前检查群的创建时间 - 如果群创建时间在 30 秒内,跳过清理 - 给飞书 API 足够的时间完成同步 - 保护窗口结束后,真正的孤儿仍会被清理 3️. p2p.ts - handleCardAction 异步执行建群逻辑 - 使用 setImmediate 将建群逻辑改为后台异步执行 - 立即返回响应给飞书,避免回调超时(限制 3 秒) - 后台执行失败记录日志,建群成功后在新群发送欢迎消息 技术细节: - 检查 session.createdAt 字段判断群的创建时间 - 保护窗口:30 秒 - 重试延迟:500ms * 3 = 最多等待 1.5 秒 - setImmediate 将回调加入事件队列下一个 tick 执行 测试验证: - 编译检查通过 - 建议测试:私聊 /create_chat 提交表单 - 预期行为:群创建成功,无超时警告,不会被自动解散
2701b81 to
dd0b50a
Compare
Owner
|
@pb763396199 感谢你的付出! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR: feature/slash-command-passthrough
📝 变更概述
本 PR 新增命令中心与双斜杠透传功能,优化命令解析器,并修复建群场景下的回调超时问题。
✨ 新增功能
1. 双斜杠命令透传(
//<command>)//superpowers:brainstorming形式透传命名空间命令到 OpenCode!/tmp/script.sh),避免误判2. 命令文档生成(
/commands)/commands命令,自动生成docs/generated/commands.md3. 命令解析器优化
src/commands/parser.ts,统一命令类型定义创建角色、发送文件、新建会话窗口🐛 Bug 修复
建群后立即被解散问题(三重保护机制)
📁 文件变更
🧪 测试建议
飞书测试步骤:
双斜杠透传
命令文档生成
/create_chat→ 选择"新建会话" → 点击"创建群聊"📌 注意事项
/commands生成的文档保存在docs/generated/commands.mdLIFECYCLE_GRACE_PERIOD_MS环境变量调整(默认 300000ms = 5 分钟)