@t0ken.ai/memoryx-openclaw-plugin 2.2.34 → 2.2.35

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.
@@ -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,wBAs0BE;AAEF,OAAO,EAAE,aAAa,EAAE,CAAC"}
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,wBA4vBE;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.34";
29
+ const PLUGIN_VERSION = "2.2.35";
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
- // OpenClaw config 动态提取模型列表
747
- // OpenClaw provider 下查找 model,所以 model id 不需要 provider 前缀
748
- function extractModelsFromConfig(config) {
749
- const modelsMap = new Map();
750
- // 默认虚拟模型 - 类似 SlimClaw 的 auto
751
- modelsMap.set('auto', {
752
- id: 'auto',
753
- name: 'MemoryX Auto Router',
754
- reasoning: true,
755
- input: ['text', 'image'],
756
- cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
757
- contextWindow: 200000,
758
- maxTokens: 8192,
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: extractModelsFromConfig(api.config),
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
- // 解析 model ID:去除 memoryx-proxy/ 前缀
914
- let actualModel = params.model || '';
915
- if (actualModel.startsWith('memoryx-proxy/')) {
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}`);
@@ -1002,19 +927,25 @@ export default {
1002
927
  // 保存原始请求信息,供 sendMessage 使用
1003
928
  let lastRequestInfo = {};
1004
929
  // 用 before_model_resolve 自动切换到 Proxy Provider
1005
- // 注意:event 只有 prompt 字段,provider 信息在 ctx.messageProvider
930
+ // 关键:同时覆盖 provider model,让 OpenClaw 找到 memoryx-proxy/auto
931
+ // 原始 model 保存在 lastRequestInfo 中,sendMessage 用它去代理
1006
932
  api.on('before_model_resolve', (event, ctx) => {
1007
933
  log(`\n[before_model_resolve] Intercepting request`);
1008
934
  log(` Prompt Preview: ${event.prompt?.slice(0, 200)}...`);
1009
935
  log(` Context Provider: ${ctx.messageProvider}`);
936
+ log(` Context Model: ${ctx.model}`);
1010
937
  log(` Context AgentId: ${ctx.agentId}`);
1011
938
  // 保存原始信息(从 context 获取)
1012
939
  lastRequestInfo = {
940
+ model: ctx.model,
1013
941
  provider: ctx.messageProvider
1014
942
  };
1015
- // 只覆盖 provider,让 OpenClaw 使用原始 model
943
+ log(`[before_model_resolve] Saved original: model=${ctx.model}, provider=${ctx.messageProvider}`);
944
+ // 同时覆盖 provider 和 model
945
+ // 这样 OpenClaw 会找 memoryx-proxy/auto,一定能找到
1016
946
  return {
1017
- providerOverride: 'memoryx-proxy'
947
+ providerOverride: 'memoryx-proxy',
948
+ modelOverride: 'auto'
1018
949
  };
1019
950
  });
1020
951
  api.logger.info('[MemoryX] 🔄 Auto-routing enabled - all requests will go through MemoryX Proxy');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@t0ken.ai/memoryx-openclaw-plugin",
3
- "version": "2.2.34",
3
+ "version": "2.2.35",
4
4
  "description": "MemoryX real-time memory capture and recall plugin for OpenClaw (powered by @t0ken.ai/memoryx-sdk)",
5
5
  "type": "module",
6
6
  "author": "MemoryX Team",