@t0ken.ai/memoryx-openclaw-plugin 2.2.34 → 2.2.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +42 -102
- package/package.json +1 -1
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAkDH,UAAU,YAAY;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,UAAU,YAAY;IAClB,QAAQ,EAAE,KAAK,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,eAAe,EAAE,KAAK,CAAC;QACnB,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAqDD,cAAM,aAAa;IACf,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,aAAa,CAAkB;gBAE3B,YAAY,CAAC,EAAE,YAAY;IAIjC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAad,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAUpC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA6B1D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,YAAY,CAAC;IAyC/D,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAYhC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAc1C,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAcvE,IAAI,CAAC,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAiBxC,cAAc,IAAI,OAAO,CAAC;QACnC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,WAAW,EAAE,OAAO,CAAC;QACrB,KAAK,CAAC,EAAE,GAAG,CAAC;KACf,CAAC;IAwBW,cAAc,IAAI,OAAO,CAAC;QACnC,OAAO,EAAE,OAAO,CAAC;QACjB,IAAI,CAAC,EAAE;YACH,QAAQ,EAAE,MAAM,CAAC;YACjB,IAAI,EAAE,MAAM,CAAC;YACb,UAAU,EAAE,MAAM,CAAC;YACnB,YAAY,EAAE,MAAM,CAAC;YACrB,iBAAiB,EAAE,MAAM,CAAC;YAC1B,gBAAgB,EAAE,MAAM,CAAC;YACzB,mBAAmB,EAAE,MAAM,CAAC;YAC5B,MAAM,EAAE,MAAM,CAAC;YACf,OAAO,EAAE,MAAM,CAAC;SACnB,CAAC;QACF,KAAK,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CAcL;;;;;;kBAUiB,GAAG,iBAAiB,YAAY,GAAG,IAAI;;AANzD,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAkDH,UAAU,YAAY;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,UAAU,YAAY;IAClB,QAAQ,EAAE,KAAK,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,eAAe,EAAE,KAAK,CAAC;QACnB,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAqDD,cAAM,aAAa;IACf,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,aAAa,CAAkB;gBAE3B,YAAY,CAAC,EAAE,YAAY;IAIjC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAad,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAUpC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA6B1D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,YAAY,CAAC;IAyC/D,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAYhC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAc1C,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAcvE,IAAI,CAAC,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAiBxC,cAAc,IAAI,OAAO,CAAC;QACnC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,WAAW,EAAE,OAAO,CAAC;QACrB,KAAK,CAAC,EAAE,GAAG,CAAC;KACf,CAAC;IAwBW,cAAc,IAAI,OAAO,CAAC;QACnC,OAAO,EAAE,OAAO,CAAC;QACjB,IAAI,CAAC,EAAE;YACH,QAAQ,EAAE,MAAM,CAAC;YACjB,IAAI,EAAE,MAAM,CAAC;YACb,UAAU,EAAE,MAAM,CAAC;YACnB,YAAY,EAAE,MAAM,CAAC;YACrB,iBAAiB,EAAE,MAAM,CAAC;YAC1B,gBAAgB,EAAE,MAAM,CAAC;YACzB,mBAAmB,EAAE,MAAM,CAAC;YAC5B,MAAM,EAAE,MAAM,CAAC;YACf,OAAO,EAAE,MAAM,CAAC;SACnB,CAAC;QACF,KAAK,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CAcL;;;;;;kBAUiB,GAAG,iBAAiB,YAAY,GAAG,IAAI;;AANzD,wBAuwBE;AAEF,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -26,7 +26,7 @@ import * as fs from "fs";
|
|
|
26
26
|
import * as path from "path";
|
|
27
27
|
import * as os from "os";
|
|
28
28
|
// 插件版本号 - 由 prebuild 脚本自动从 package.json 同步
|
|
29
|
-
const PLUGIN_VERSION = "2.2.
|
|
29
|
+
const PLUGIN_VERSION = "2.2.36";
|
|
30
30
|
const DEFAULT_API_BASE = "https://t0ken.ai/api";
|
|
31
31
|
const PLUGIN_DIR = path.join(os.homedir(), ".openclaw", "extensions", "memoryx-openclaw-plugin");
|
|
32
32
|
let logStream = null;
|
|
@@ -743,101 +743,27 @@ export default {
|
|
|
743
743
|
catch (e) {
|
|
744
744
|
log(`[Proxy] Failed to extract credentials: ${e}`);
|
|
745
745
|
}
|
|
746
|
-
//
|
|
747
|
-
//
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
// 从配置中提取所有模型
|
|
761
|
-
if (config?.models?.providers) {
|
|
762
|
-
for (const [providerId, providerConfig] of Object.entries(config.models.providers)) {
|
|
763
|
-
const pc = providerConfig;
|
|
764
|
-
log(`[Proxy] Checking provider ${providerId} for models...`);
|
|
765
|
-
// 检查多种可能的模型配置格式
|
|
766
|
-
const modelSources = [
|
|
767
|
-
pc.models, // array format: models: ["glm-5", "glm-4.7"]
|
|
768
|
-
pc.modelIds, // alternative name
|
|
769
|
-
pc.model?.models, // nested format
|
|
770
|
-
];
|
|
771
|
-
for (const modelList of modelSources) {
|
|
772
|
-
if (modelList && Array.isArray(modelList)) {
|
|
773
|
-
modelList.forEach((modelId) => {
|
|
774
|
-
if (typeof modelId === 'string' && !modelsMap.has(modelId)) {
|
|
775
|
-
modelsMap.set(modelId, {
|
|
776
|
-
id: modelId,
|
|
777
|
-
name: `${modelId} (via MemoryX)`,
|
|
778
|
-
reasoning: true,
|
|
779
|
-
input: ['text'],
|
|
780
|
-
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
781
|
-
contextWindow: 128000,
|
|
782
|
-
maxTokens: 8192,
|
|
783
|
-
});
|
|
784
|
-
log(`[Proxy] Added model: ${modelId} from provider ${providerId}`);
|
|
785
|
-
}
|
|
786
|
-
});
|
|
787
|
-
}
|
|
788
|
-
}
|
|
789
|
-
// 检查 object format: models: { "glm-5": {...}, "glm-4.7": {...} }
|
|
790
|
-
if (pc.models && typeof pc.models === 'object' && !Array.isArray(pc.models)) {
|
|
791
|
-
for (const modelId of Object.keys(pc.models)) {
|
|
792
|
-
if (!modelsMap.has(modelId)) {
|
|
793
|
-
modelsMap.set(modelId, {
|
|
794
|
-
id: modelId,
|
|
795
|
-
name: `${modelId} (via MemoryX)`,
|
|
796
|
-
reasoning: true,
|
|
797
|
-
input: ['text'],
|
|
798
|
-
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
799
|
-
contextWindow: 128000,
|
|
800
|
-
maxTokens: 8192,
|
|
801
|
-
});
|
|
802
|
-
log(`[Proxy] Added model: ${modelId} from provider ${providerId} (object format)`);
|
|
803
|
-
}
|
|
804
|
-
}
|
|
805
|
-
}
|
|
806
|
-
}
|
|
807
|
-
}
|
|
808
|
-
// 添加常用模型(硬编码备用)
|
|
809
|
-
const fallbackModels = [
|
|
810
|
-
'gpt-4o', 'gpt-4o-mini', 'gpt-4-turbo', 'gpt-3.5-turbo',
|
|
811
|
-
'claude-sonnet-4-20250514', 'claude-3-5-sonnet-20241022', 'claude-3-haiku-20240307',
|
|
812
|
-
'glm-4', 'glm-4-plus', 'glm-4-air', 'glm-4.7', 'glm-5',
|
|
813
|
-
];
|
|
814
|
-
for (const modelId of fallbackModels) {
|
|
815
|
-
if (!modelsMap.has(modelId)) {
|
|
816
|
-
modelsMap.set(modelId, {
|
|
817
|
-
id: modelId,
|
|
818
|
-
name: `${modelId} (via MemoryX)`,
|
|
819
|
-
reasoning: true,
|
|
820
|
-
input: ['text'],
|
|
821
|
-
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
822
|
-
contextWindow: 128000,
|
|
823
|
-
maxTokens: 8192,
|
|
824
|
-
});
|
|
825
|
-
log(`[Proxy] Added fallback model: ${modelId}`);
|
|
826
|
-
}
|
|
827
|
-
}
|
|
828
|
-
const models = Array.from(modelsMap.values());
|
|
829
|
-
log(`[Proxy] Total models extracted: ${models.length}`);
|
|
830
|
-
return models;
|
|
831
|
-
}
|
|
832
|
-
// 注册 Proxy Provider
|
|
746
|
+
// 简化方案:只注册一个虚拟模型 "auto"
|
|
747
|
+
// before_model_resolve 拦截所有请求,改为使用 memoryx-proxy/auto
|
|
748
|
+
// sendMessage 用原始模型去代理,用户无感知
|
|
749
|
+
const VIRTUAL_MODEL = {
|
|
750
|
+
id: 'auto',
|
|
751
|
+
name: 'MemoryX Auto Router',
|
|
752
|
+
reasoning: true,
|
|
753
|
+
input: ['text', 'image'],
|
|
754
|
+
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
755
|
+
contextWindow: 200000,
|
|
756
|
+
maxTokens: 8192,
|
|
757
|
+
};
|
|
758
|
+
log(`[Proxy] Using simplified virtual model: auto`);
|
|
759
|
+
// 注册 Proxy Provider - 只注册一个虚拟模型 "auto"
|
|
833
760
|
api.registerProvider({
|
|
834
761
|
id: 'memoryx-proxy',
|
|
835
762
|
name: 'MemoryX Proxy Provider',
|
|
836
|
-
// 声明支持的模型 - 从配置动态提取
|
|
837
763
|
models: {
|
|
838
764
|
baseUrl: 'http://memoryx-proxy.local',
|
|
839
765
|
api: 'anthropic-messages',
|
|
840
|
-
models:
|
|
766
|
+
models: [VIRTUAL_MODEL], // 只注册 auto
|
|
841
767
|
},
|
|
842
768
|
async sendMessage(params) {
|
|
843
769
|
const requestId = `req-${Date.now()}`;
|
|
@@ -910,13 +836,12 @@ export default {
|
|
|
910
836
|
log(`[Proxy] Memory injection failed: ${e}`);
|
|
911
837
|
}
|
|
912
838
|
// ========== 转发请求 ==========
|
|
913
|
-
//
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
actualModel = actualModel.substring('memoryx-proxy/'.length);
|
|
917
|
-
}
|
|
839
|
+
// 使用原始模型(从 lastRequestInfo 获取,由 before_model_resolve 保存)
|
|
840
|
+
// params.model 是 "auto"(虚拟模型),不能用
|
|
841
|
+
const actualModel = lastRequestInfo.model || params.model || 'claude-sonnet-4-20250514';
|
|
918
842
|
// 确定目标 provider(从 lastRequestInfo 或原始 provider)
|
|
919
843
|
const targetProvider = lastRequestInfo.provider || params.provider || 'anthropic';
|
|
844
|
+
log(`\n[Proxy] Using original model from lastRequestInfo: ${lastRequestInfo.model}`);
|
|
920
845
|
const credentials = providerCredentials.get(targetProvider);
|
|
921
846
|
if (!credentials) {
|
|
922
847
|
log(`[Proxy] ❌ No credentials for provider: ${targetProvider}`);
|
|
@@ -999,22 +924,37 @@ export default {
|
|
|
999
924
|
}
|
|
1000
925
|
});
|
|
1001
926
|
api.logger.info('[MemoryX] 🔄 Proxy provider registered: memoryx-proxy');
|
|
927
|
+
// 从 api.config 读取默认 model 和 provider
|
|
928
|
+
// 注意:hook context 不包含 model 信息,只能从 config 读取
|
|
929
|
+
const getDefaultModelAndProvider = () => {
|
|
930
|
+
const agentsDefaults = api.config?.agents?.defaults;
|
|
931
|
+
const model = agentsDefaults?.model?.default || agentsDefaults?.model || 'claude-sonnet-4-20250514';
|
|
932
|
+
const provider = agentsDefaults?.provider?.default || agentsDefaults?.provider || 'anthropic';
|
|
933
|
+
return { model, provider };
|
|
934
|
+
};
|
|
1002
935
|
// 保存原始请求信息,供 sendMessage 使用
|
|
1003
|
-
let lastRequestInfo =
|
|
936
|
+
let lastRequestInfo = getDefaultModelAndProvider();
|
|
937
|
+
log(`[Proxy] Default model/provider from config: ${lastRequestInfo.model}/${lastRequestInfo.provider}`);
|
|
1004
938
|
// 用 before_model_resolve 自动切换到 Proxy Provider
|
|
1005
|
-
//
|
|
939
|
+
// 关键:同时覆盖 provider 和 model,让 OpenClaw 找到 memoryx-proxy/auto
|
|
940
|
+
// 注意:hook context 没有 model,从 api.config 读取默认值
|
|
1006
941
|
api.on('before_model_resolve', (event, ctx) => {
|
|
1007
942
|
log(`\n[before_model_resolve] Intercepting request`);
|
|
1008
943
|
log(` Prompt Preview: ${event.prompt?.slice(0, 200)}...`);
|
|
1009
|
-
log(` Context
|
|
944
|
+
log(` Context messageProvider: ${ctx.messageProvider}`);
|
|
1010
945
|
log(` Context AgentId: ${ctx.agentId}`);
|
|
1011
|
-
//
|
|
946
|
+
// 从 config 获取默认 model/provider(hook context 没有 model)
|
|
947
|
+
const defaults = getDefaultModelAndProvider();
|
|
1012
948
|
lastRequestInfo = {
|
|
1013
|
-
|
|
949
|
+
model: defaults.model,
|
|
950
|
+
provider: defaults.provider
|
|
1014
951
|
};
|
|
1015
|
-
|
|
952
|
+
log(`[before_model_resolve] Using defaults from config: model=${defaults.model}, provider=${defaults.provider}`);
|
|
953
|
+
// 同时覆盖 provider 和 model
|
|
954
|
+
// 这样 OpenClaw 会找 memoryx-proxy/auto,一定能找到
|
|
1016
955
|
return {
|
|
1017
|
-
providerOverride: 'memoryx-proxy'
|
|
956
|
+
providerOverride: 'memoryx-proxy',
|
|
957
|
+
modelOverride: 'auto'
|
|
1018
958
|
};
|
|
1019
959
|
});
|
|
1020
960
|
api.logger.info('[MemoryX] 🔄 Auto-routing enabled - all requests will go through MemoryX Proxy');
|
package/package.json
CHANGED