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.2 KiB
JSON

{"repo": "bxx2004/funga", "files": {"module/ai-assistant/src/main/kotlin/cn/revoist/lifephoton/module/aiassistant/AIAssistantAPI.kt": {"1a2c369b1b57c5c65a954f4f6a9f7c0ebb287eec": {"t": 1786068451.8132126, "n": 2914, "h": "8bff85bc81dec93b", "c": "package cn.revoist.lifephoton.module.aiassistant\n\nimport cn.revoist.lifephoton.module.aiassistant.core.entity.ChatOption\nimport cn.revoist.lifephoton.module.aiassistant.impl.rag.KnowledgeBaseAggregator\nimport dev.langchain4j.model.chat.ChatModel\nimport dev.langchain4j.model.chat.StreamingChatModel\nimport dev.langchain4j.model.embedding.EmbeddingModel\nimport dev.langchain4j.model.ollama.OllamaEmbeddingModel\nimport dev.langchain4j.model.openai.OpenAiChatModel\nimport dev.langchain4j.model.openai.OpenAiChatRequestParameters\nimport dev.langchain4j.model.openai.OpenAiStreamingChatModel\nimport java.util.concurrent.ConcurrentHashMap\n\nobject AIAssistantAPI{\n var embeddingModel:EmbeddingModel = OllamaEmbeddingModel.builder()\n .baseUrl(AIAssistant.getConfig(\"embedding.url\",\"http://localhost:1966\"))\n .modelName(AIAssistant.getConfig(\"embedding.modelName\",\"http://localhost:1966\"))\n .build()\n var mxbaiEmbeddingModel:EmbeddingModel = OllamaEmbeddingModel.builder()\n .baseUrl(AIAssistant.getConfig(\"embedding.url\",\"http://localhost:1966\"))\n .modelName(\"mxbai-embed-large\")\n .build()\n val streamingChatModel : (String?) -> StreamingChatModel = { name->\n OpenAiStreamingChatModel.builder()\n .baseUrl(AIAssistant.getConfig(\"llm.url\",\"https://api.deepseek.com\"))\n .modelName(name?:AIAssistant.getConfig(\"llm.modelName\",\"deepseek-reasoner\"))\n .temperature(AIAssistant.getConfig(\"llm.temperature\",\"0.8\").toDouble())\n .apiKey(AIAssistant.getConfig(\"llm.key\",\"sk-xxxxxxxxxxxx\"))\n .returnThinking(true)\n .defaultRequestParameters(OpenAiChatRequestParameters.EMPTY)\n .build()\n }\n val chatModel : (String?) -> ChatModel = { name->\n OpenAiChatModel.builder()\n .baseUrl(AIAssistant.getConfig(\"llm.url\",\"https://api.deepseek.com\"))\n .modelName(name?:AIAssistant.getConfig(\"llm.modelName\",\"deepseek-reasoner\"))\n .temperature(AIAssistant.getConfig(\"llm.temperature\",\"0.8\").toDouble())\n .apiKey(AIAssistant.getConfig(\"llm.key\",\"sk-xxxxxxxxxxxx\"))\n .returnThinking(true)\n .build()\n }\n var forceUpdate = false\n\n fun mxbaiEmbedding(text:String):List<Float>{\n return mxbaiEmbeddingModel.embed(text).content().vector().toList()\n }\n\n private val tools = ConcurrentHashMap<String, List<Any>>()\n\n fun registerTool(name:String,tool:List<Any>){\n tools[name] = tool\n }\n fun getTools(name: String):List<Any>?{\n if (name == \"all\") return tools.values.flatten()\n return tools[name]\n }\n fun <T>createAIAssistant(clazz:Class<T>,user_id:Long,option: ChatOption):T{\n return if (option.once){\n KnowledgeBaseAggregator.createOnceChat(user_id,clazz,option)\n }else{\n KnowledgeBaseAggregator.createStreamChat(user_id,clazz,option)\n }\n }\n}"}}}}