需通过webhook实现qoder插件与github等外部系统双向通信:一、插件侧注册带hmac校验的接收端并暴露公网url;二、github配置匹配密钥的webhook推送;三、插件解析事件触发ai评审、ide通知等动作;四、启用调试日志与重试策略保障可靠性。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您希望Qoder插件不仅能响应本地IDE内操作,还能实时感知并响应GitHub提交、Slack告警或CRM工单变更等外部事件,则需通过Webhook机制打通编辑器与外部系统的双向通信链路。以下是实现该联动的具体操作路径:
一、在Qoder插件中注册Webhook接收端
此步骤在插件服务侧完成,用于暴露一个受控HTTP端点,接收并验证来自外部系统的加密事件推送。Qoder插件需基于Connector框架实现标准Webhook解析逻辑,并集成HMAC-SHA256签名校验能力,防止伪造请求触发误执行。
1、在插件项目根目录创建webhook-handler.js文件,引入@qoder/connector SDK。
2、调用createWebhookReceiver()方法,传入预设的密钥环境变量WEBHOOK_SECRET及事件白名单数组,如["push", "pull_request.opened"]。
3、将生成的唯一URL(形如https://plugin.qoder.ai/webhook/github-abc123)记录至配置文件config.json中。
4、在插件启动时调用receiver.listen(3000),确保服务监听端口已开放且可通过公网访问。
二、在GitHub仓库配置Webhook推送
此步骤在GitHub侧完成,用于将指定仓库的事件以结构化JSON格式推送到Qoder插件暴露的URL,并携带签名头供插件端验证合法性。仅当签名匹配且载荷符合Schema时,插件才触发后续动作。
1、进入目标GitHub仓库Settings → Webhooks → Add webhook。
2、在Payload URL栏粘贴上一步获取的Qoder插件Webhook URL。
3、Content type选择application/json。
4、Secret字段填入与插件中WEBHOOK_SECRET完全一致的字符串,此项缺失或不匹配将导致Qoder插件直接拒绝处理所有请求。
代码编辑 CLI 工具集合:Cursor CLI(agent)和 Qoder CLI(qodercli),用于代码修改、重构、Code Review 及自动化代码任务。
5、勾选需推送的事件类型,例如Pushes、Pull requests、Issues,点击Add webhook完成注册。
三、在Qoder插件中实现事件驱动的动作响应
此步骤定义插件接收到合法Webhook后应执行的具体行为,例如自动拉取变更代码、触发本地AI评审、向开发者发送IDE内通知,或调用Qoder内置的Browser Use能力进行页面验证。所有动作须运行于权限沙盒内,审计日志自动记录完整执行上下文。
1、在webhook-handler.js中为push事件添加回调函数,解析payload.commits[0].message提取关键词。
2、若消息含[review]标签,则调用qoder.reviewCode({ repo: payload.repository.full_name, commit: payload.after })启动AI代码评审流程。
3、评审完成后,通过qoder.notifyInIDE()向当前登录用户弹出含摘要与修复建议的通知卡片。
4、若检测到package.json变更,则自动调用qoder.browserUse("npm outdated")并在IDE右侧面板渲染结果表格。
四、启用调试模式与失败重试策略
Webhook通信存在网络抖动、目标不可达或载荷超限等不确定性,Qoder插件需内置可观测性与容错机制。调试模式可捕获原始请求头与载荷快照,失败重试策略则保障关键事件不丢失,避免因单次失败导致自动化链条中断。
1、在插件启动参数中设置DEBUG_MODE=true,使所有入站Webhook自动写入/logs/webhook-debug.log。
2、在createWebhookReceiver()调用中传入{ maxRetries: 3, backoffMs: 1000 }对象,启用指数退避重试。
3、对每次成功处理的事件,调用qoder.auditLog("webhook_processed", { event: payload.action, id: payload.delivery_id })写入不可篡改审计记录。
4、在Qoder控制台【审计中心】→【Webhook事件流】中,可按delivery_id检索任意一次推送的完整生命周期轨迹。










