Files
OpenCode 68a9071cf1 feat: reconcile local master with origin (exa/hot-platform hunters, leaks ledger, latest results)
Local branch had diverged from origin/master (sibling commits on the same base). Rewrote local history linearly on top of origin/master, folding in all local content: exa/hot-platform discovery hunters, leaks ledger, nightly sweep orchestrator, updated .gitignore and skill docs, plus the latest hunt output and vault state. Remote-only files (vault keys, channel scripts) were restored rather than dropped, so the resulting tree is a full union of both sides.
2026-08-07 12:53:47 +08:00

1 line
3.4 KiB
JSON

{"repo": "bzmgugu/task", "files": {"src/main/java/com/example/aitestkb/DeepSeekClient.java": {"0297513a2c9030436d5fbddc102128d545305b7c": {"t": 1786068305.2648795, "n": 2978, "h": "ac756d0cc5de3c4a", "c": "package com.example.aitestkb;\n\nimport java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\nimport java.nio.charset.StandardCharsets;\nimport java.nio.file.Files;\nimport java.nio.file.Path;\n\nfinal class DeepSeekClient {\n private final String apiKey;\n private final String baseUrl;\n private final HttpClient httpClient;\n\n DeepSeekClient(String apiKey) {\n this(apiKey, \"https://api.deepseek.com\");\n }\n\n DeepSeekClient(String apiKey, String baseUrl) {\n this.apiKey = apiKey;\n this.baseUrl = baseUrl.endsWith(\"/\") ? baseUrl.substring(0, baseUrl.length() - 1) : baseUrl;\n this.httpClient = HttpClient.newHttpClient();\n }\n\n String chat(String model, String systemPrompt, String userPrompt, boolean jsonMode) throws Exception {\n String responseFormat = jsonMode ? \",\\\"response_format\\\":{\\\"type\\\":\\\"json_object\\\"}\" : \"\";\n String body = \"\"\"\n {\n \"model\": %s,\n \"messages\": [\n {\"role\": \"system\", \"content\": %s},\n {\"role\": \"user\", \"content\": %s}\n ],\n \"stream\": false%s\n }\n \"\"\".formatted(\n Json.quote(model),\n Json.quote(systemPrompt),\n Json.quote(userPrompt),\n responseFormat\n );\n\n HttpRequest request = HttpRequest.newBuilder()\n .uri(URI.create(baseUrl + \"/chat/completions\"))\n .header(\"Content-Type\", \"application/json\")\n .header(\"Authorization\", \"Bearer \" + apiKey)\n .POST(HttpRequest.BodyPublishers.ofString(body, StandardCharsets.UTF_8))\n .build();\n\n HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8));\n if (response.statusCode() < 200 || response.statusCode() >= 300) {\n throw new IllegalStateException(\"DeepSeek API 调用失败: HTTP \" + response.statusCode() + \"\\n\" + response.body());\n }\n return response.body();\n }\n\n static void mainCall(String[] args) throws Exception {\n if (args.length < 2) {\n System.out.println(\"用法: java ... DeepSeekClient <prompt.md> <response.json> [model]\");\n return;\n }\n String apiKey = System.getenv(\"DEEPSEEK_API_KEY\");\n if (apiKey == null || apiKey.isBlank()) {\n throw new IllegalArgumentException(\"请先设置环境变量 DEEPSEEK_API_KEY\");\n }\n String model = args.length >= 3 ? args[2] : \"deepseek-v4-pro\";\n String prompt = Files.readString(Path.of(args[0]), StandardCharsets.UTF_8);\n String system = \"你是资深 Playwright UI 自动化测试工程师。必须严格依据输入事实生成,不得编造页面、字段、接口或 locator。\";\n String response = new DeepSeekClient(apiKey).chat(model, system, prompt, false);\n Files.writeString(Path.of(args[1]), response, StandardCharsets.UTF_8);\n }\n}\n"}}}}