支持LLM工作区配置化

This commit is contained in:
luke 2025-06-03 23:31:12 +08:00
parent adf7eee7f4
commit e34711793e
6 changed files with 35 additions and 8 deletions

View File

@ -1,7 +1,7 @@
{ {
"manifest_version": 3, "manifest_version": 3,
"name": "渠道应用开发部知识库", "name": "渠道应用开发部知识库",
"version": "2.0.1", "version": "2.0.2",
"description": "通过关键词快速搜索内部文档", "description": "通过关键词快速搜索内部文档",
"permissions": ["storage"], "permissions": ["storage"],
"host_permissions": [ "host_permissions": [

View File

@ -139,6 +139,11 @@
<input id="llmTokenExpireHours" type="number" min="1" max="168" /> <input id="llmTokenExpireHours" type="number" min="1" max="168" />
<div class="desc">超出有效期将重新获取</div> <div class="desc">超出有效期将重新获取</div>
</div> </div>
<div class="form-row">
<label for="llmWorkspaceName">对话的LLM工作区名称(默认值,不要动)</label>
<input id="llmWorkspaceName" type="text"/>
<div class="desc">固定值:部门知识库</div>
</div>
</div> </div>
<div class="section" id="endpointSection"> <div class="section" id="endpointSection">

View File

@ -5,4 +5,5 @@
|------------|--------|---------|---------------------| |------------|--------|---------|---------------------|
| 2025.06.02 | V2.0.0 | Luke.Ye | 完成插件配置化改造 | | 2025.06.02 | V2.0.0 | Luke.Ye | 完成插件配置化改造 |
| 2025.06.03 | V2.0.1 | Luke.Ye | 完成llm token过期时间的配置化 | | 2025.06.03 | V2.0.1 | Luke.Ye | 完成llm token过期时间的配置化 |
| 2025.06.03 | V2.0.2 | Luke.Ye | 支持LLM工作区配置化 |

View File

@ -1,6 +1,7 @@
const defaultConfig = { const defaultConfig = {
tokenExpireHours: 24, tokenExpireHours: 24,
llmTokenExpireHours: 24, llmTokenExpireHours: 24,
llmWorkspaceName: "部门知识库",
apiConfig: { apiConfig: {
materialPublicUrl: { materialPublicUrl: {
name: "材料公开地址", name: "材料公开地址",
@ -84,6 +85,8 @@ function loadMergedConfig() {
res.customConfig.tokenExpireHours != null ? res.customConfig.tokenExpireHours : merged.tokenExpireHours; res.customConfig.tokenExpireHours != null ? res.customConfig.tokenExpireHours : merged.tokenExpireHours;
merged.llmTokenExpireHours = merged.llmTokenExpireHours =
res.customConfig.llmTokenExpireHours != null ? res.customConfig.llmTokenExpireHours : merged.llmTokenExpireHours; res.customConfig.llmTokenExpireHours != null ? res.customConfig.llmTokenExpireHours : merged.llmTokenExpireHours;
merged.llmWorkspaceName =
res.customConfig.llmWorkspaceName != null ? res.customConfig.llmWorkspaceName : merged.llmWorkspaceName;
for (const key in merged.apiConfig) { for (const key in merged.apiConfig) {
const override = res.customConfig.apiConfig?.[key]; const override = res.customConfig.apiConfig?.[key];
if (override) { if (override) {

View File

@ -323,6 +323,7 @@ async function getLLMToken(forceRefresh = false) {
async function getLLMWorkspaceSlug(token, forceRefresh = false) { async function getLLMWorkspaceSlug(token, forceRefresh = false) {
const config = await loadMergedConfig(); const config = await loadMergedConfig();
const wsCfg = config.apiConfig.workspaces; const wsCfg = config.apiConfig.workspaces;
const llmWorkspaceName = config.llmWorkspaceName;
const workspacesField = wsCfg.responseParams.find(p => p.field)?.field; const workspacesField = wsCfg.responseParams.find(p => p.field)?.field;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
@ -342,10 +343,15 @@ async function getLLMWorkspaceSlug(token, forceRefresh = false) {
const data = await response.json(); const data = await response.json();
const list = data[workspacesField] || []; const list = data[workspacesField] || [];
if (list.length > 0 && list[0].slug) {
chrome.storage.local.set({ llmWorkspaceSlug: list[0].slug, llmWorkspaceAt: now }); let target = list.find(ws => ws.name === llmWorkspaceName);
log("获取llmWorkspaceSlug: " + JSON.stringify(list)) // 若找不到,默认用第一个
resolve(list[0].slug); if (!target && list.length > 0) target = list[0];
if (target && target.slug) {
chrome.storage.local.set({ llmWorkspaceSlug: target.slug, llmWorkspaceAt: now });
log("获取llmWorkspaceSlug: " + JSON.stringify(target));
resolve(target.slug);
} else { } else {
reject("未获取到LLM工作区slug"); reject("未获取到LLM工作区slug");
} }

View File

@ -5,6 +5,7 @@ function getMergedConfig(callback) {
function renderConfig(config) { function renderConfig(config) {
document.getElementById("tokenExpireHours").value = config.tokenExpireHours; document.getElementById("tokenExpireHours").value = config.tokenExpireHours;
document.getElementById("llmTokenExpireHours").value = config.llmTokenExpireHours; document.getElementById("llmTokenExpireHours").value = config.llmTokenExpireHours;
document.getElementById("llmWorkspaceName").value = config.llmWorkspaceName;
const container = document.getElementById("endpointSection"); const container = document.getElementById("endpointSection");
container.innerHTML = ""; container.innerHTML = "";
@ -56,10 +57,17 @@ function renderConfig(config) {
function collectUserConfig() { function collectUserConfig() {
let tokenExpireHours = parseInt(document.getElementById("tokenExpireHours").value); let tokenExpireHours = parseInt(document.getElementById("tokenExpireHours").value);
if (isNaN(tokenExpireHours) || tokenExpireHours > 168 || tokenExpireHours < 0) tokenExpireHours = 24; if (isNaN(tokenExpireHours) || tokenExpireHours > 168 || tokenExpireHours < 0) {
tokenExpireHours = 24;
}
let llmTokenExpireHours = parseInt(document.getElementById("llmTokenExpireHours").value); let llmTokenExpireHours = parseInt(document.getElementById("llmTokenExpireHours").value);
if (isNaN(llmTokenExpireHours) || llmTokenExpireHours > 168 || llmTokenExpireHours < 0) llmTokenExpireHours = 24; if (isNaN(llmTokenExpireHours) || llmTokenExpireHours > 168 || llmTokenExpireHours < 0) {
llmTokenExpireHours = 24;
}
let llmWorkspaceName = document.getElementById("llmWorkspaceName").value;
llmWorkspaceName = llmWorkspaceName && llmWorkspaceName.trim() ? llmWorkspaceName.trim() : "部门知识库";
const apiConfig = {}; const apiConfig = {};
@ -82,7 +90,7 @@ function collectUserConfig() {
} }
} }
return { tokenExpireHours, llmTokenExpireHours, apiConfig }; return { tokenExpireHours, llmTokenExpireHours, llmWorkspaceName, apiConfig };
} }
@ -108,4 +116,8 @@ document.addEventListener("DOMContentLoaded", () => {
const popupUrl = chrome.runtime.getURL("pages/popup.html"); const popupUrl = chrome.runtime.getURL("pages/popup.html");
chrome.tabs.create({ url: popupUrl }); chrome.tabs.create({ url: popupUrl });
}); });
document.getElementById("llmWorkspaceName").addEventListener("change", function() {
log("llmWorkspaceName有变化,清空缓存!")
chrome.storage.local.remove(["llmWorkspaceSlug", "llmWorkspaceAt"]);
});
}); });