Coze智能体开发实战-单Agent综合实战

添加Webhooks

第1步: 创建gitee账号,步骤省。

第2步:某仓库 - 管理 - 添加webHook

第3步:填写URL、勾选pull,不设密码

  • URL 可以是 http 或 https 协议,也支持 http + IP 地址 + 端口的格式,如 http://127.0.0.1:8080/project,但要是外网可直接访问的地址,内网地址无内网穿透则无法使用。
  • 密码 为了保证安全以及识别数据来源,建议设置一个密码,Gitee 将会在 Post 数据中携带这个密码,不设密码可以不填。

第4步:index.php源码

复制代码
<?php 
// 步骤1:检查仓库是否存在,若不存在则克隆
function cloneRepoIfNotExists($repoUrl, $localPath) {
    if (!is_dir($localPath)) { 
        $command = "git clone $repoUrl $localPath";
        exec($command, $output, $returnCode);
        if ($returnCode === 0) {
            return true;
        } else {
            echo "Failed to clone repository: " . implode("\n", $output) . "\n";
            return false;
        }
    }
    return true;
}

// 步骤2:拉取最新代码
function gitPull($localPath) {
    chdir($localPath);
    $command = "git pull";
    exec($command, $output, $returnCode);
    if ($returnCode === 0) {
        return true;
    } else {
        echo "Failed to pull the latest code: " . implode("\n", $output) . "\n";
        return false;
    }
}

// 步骤3:获取增量代码
function getIncrementlCode($oldCommit, $newCommit, $localPath) {
    chdir($localPath);
    // 执行 git diff 命令获取增量代码
    $command = "git diff $oldCommit $newCommit";
    exec($command, $output, $returnCode);
    if ($returnCode === 0) {
        // 将输出合并为一个字符串
        $incrementalCode = implode("\n", $output);
        return $incrementalCode;
    } else {
        echo "Failed to get incremental code: " . implode("\n", $output) . "\n";
        return null;
    }
}

// 步骤4:改写curl代码为PHP调用接口的方式
function callApi($incrementalCode) {
    $url = 'https://api.coze.cn/v1/workflow/run';
    $token = '你自己的coze令牌';
    $workflowId = '你自己的工作流ID';

    $data = [
        "parameters" => [
            "input" => $incrementalCode
        ],
        "workflow_id" => $workflowId
    ];

    $dataJson = json_encode($data);

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $dataJson);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Authorization: Bearer $token",
        "Content-Type: application/json"
    ]);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); // 修正:curl_getinfo 用于获取 HTTP 状态码

    curl_close($ch);

    return [
        'http_code' => $httpCode,
        'response' => $response
    ];
}

// 步骤5: 处理 Gitee Webhook请求
// 假设Gitee Webhook 发送的是JSON数据
$inputJSON = file_get_contents('php://input'); // 修正:file_get_content -> file_get_contents
$input = json_decode($inputJSON, TRUE);

// 检查是否为 push 事件
if ($input && isset($input['ref']) && isset($input['before']) && isset($input['after']) && isset($input['repository']['git_http_url'])) {
    $oldCommit = $input['before'];
    $newCommit = $input['after'];
    $repoUrl = $input['repository']['git_http_url'];
    $repoName = basename($repoUrl, '.git');
    $localRepoPath = __DIR__ . '/' . $repoName;

    // 检查并克隆仓库
    if (cloneRepoIfNotExists($repoUrl, $localRepoPath)) {
        // 执行 git pull 操作
        if (gitPull($localRepoPath)) {
            // 获取增量代码
            $incrementalCode = getIncrementlCode($oldCommit, $newCommit, $localRepoPath);

            if ($incrementalCode) {
                // 调用 API 并传递增量代码
                $result = callApi($incrementalCode);
            }
        }
    }
}

代码审查工作流

原理:提交代码后,通过Webhooks,调用工作流检查代码是否符合规范,如果不符合,推送消息给企业微信机器人。

第1步:工作空间 - 资源库 - "+资源" - 工作流

第2步:连接"大模型"

第3步:测试节点

第4步:连接"结束"节点

第5步:试运行

第6步:发布

第7步:工作空间 - 资源库 - 工作流

第8步:单击"check_python_code"名称

复制workflow_id的值,替换index.php的$workflowId的值

第9步:让外部应用访问我们的工作流

第10步:扣子API - 授权 - 个人访问令牌 - 添加新令牌

第11步:弹出对话框里,一定要复制好令牌。因为只显示一次。替换index.php里$token的值。

相关推荐
IT_陈寒21 小时前
React 18并发模式实战:3个优化技巧让你的应用性能提升50%
前端·人工智能·后端
IT_陈寒21 小时前
Vue 3性能优化实战:这5个Composition API技巧让你的应用快30%
前端·人工智能·后端
YF云飞21 小时前
拟人AI GoCap:用机器学习打造真实玩家体验
人工智能·机器学习
IT_陈寒21 小时前
Vue3性能翻倍的5个秘密:从Composition API到Tree Shaking实战指南
前端·人工智能·后端
粟悟饭&龟波功21 小时前
【论文精读】DeepSeek-OCR:探索视觉 - 文本压缩的新范式
人工智能
机器之心21 小时前
刚刚,Kimi开源新架构,开始押注线性注意力
人工智能·openai
IT_陈寒21 小时前
JavaScript 性能优化:3个V8引擎隐藏技巧让你的代码提速50%
前端·人工智能·后端
故事挺秃然1 天前
NLP模型优化
人工智能·自然语言处理·nlp
文火冰糖的硅基工坊1 天前
[人工智能-大模型-78]:模型层技术 - 深度神经网络的网络架构的演进,这不仅是一条技术路线图,更是一部 “机器如何逐步逼近人类认知方式” 的进化史诗。
人工智能·架构·dnn
IT古董1 天前
【第六章:项目实战之推荐/广告系统】3.精排算法-(2)精排算法模型精讲: DNN、deepFM、ESMM、PLE、MMOE算法精讲与实现- DNN 精排模型
人工智能·神经网络·dnn