@scotthuang/engram 0.9.3 → 0.9.4
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/{src/index.js → index.js} +38 -2
- package/dist/{src/index.js.map → index.js.map} +1 -1
- package/package.json +4 -4
- package/dist/src/__tests__/bm25.test.d.ts +0 -1
- package/dist/src/__tests__/bm25.test.js +0 -198
- package/dist/src/__tests__/bm25.test.js.map +0 -1
- package/dist/src/__tests__/config.test.d.ts +0 -1
- package/dist/src/__tests__/config.test.js +0 -30
- package/dist/src/__tests__/config.test.js.map +0 -1
- package/dist/src/__tests__/face-auto-dryrun.d.ts +0 -12
- package/dist/src/__tests__/face-auto-dryrun.js +0 -166
- package/dist/src/__tests__/face-auto-dryrun.js.map +0 -1
- package/dist/src/__tests__/profile.test.d.ts +0 -1
- package/dist/src/__tests__/profile.test.js +0 -174
- package/dist/src/__tests__/profile.test.js.map +0 -1
- package/dist/src/__tests__/promotion-dryrun.d.ts +0 -6
- package/dist/src/__tests__/promotion-dryrun.js +0 -105
- package/dist/src/__tests__/promotion-dryrun.js.map +0 -1
- package/dist/src/__tests__/recall.test.d.ts +0 -1
- package/dist/src/__tests__/recall.test.js +0 -162
- package/dist/src/__tests__/recall.test.js.map +0 -1
- /package/dist/{src/bm25.d.ts → bm25.d.ts} +0 -0
- /package/dist/{src/bm25.js → bm25.js} +0 -0
- /package/dist/{src/bm25.js.map → bm25.js.map} +0 -0
- /package/dist/{src/config.d.ts → config.d.ts} +0 -0
- /package/dist/{src/config.js → config.js} +0 -0
- /package/dist/{src/config.js.map → config.js.map} +0 -0
- /package/dist/{face/src/face-api.d.ts → face-api.d.ts} +0 -0
- /package/dist/{face/src/face-api.js → face-api.js} +0 -0
- /package/dist/{face/src/face-api.js.map → face-api.js.map} +0 -0
- /package/dist/{face/src/face-store.d.ts → face-store.d.ts} +0 -0
- /package/dist/{face/src/face-store.js → face-store.js} +0 -0
- /package/dist/{face/src/face-store.js.map → face-store.js.map} +0 -0
- /package/dist/{src/image-store.d.ts → image-store.d.ts} +0 -0
- /package/dist/{src/image-store.js → image-store.js} +0 -0
- /package/dist/{src/image-store.js.map → image-store.js.map} +0 -0
- /package/dist/{src/index.d.ts → index.d.ts} +0 -0
- /package/dist/{src/logger.d.ts → logger.d.ts} +0 -0
- /package/dist/{src/logger.js → logger.js} +0 -0
- /package/dist/{src/logger.js.map → logger.js.map} +0 -0
- /package/dist/{src/profile.d.ts → profile.d.ts} +0 -0
- /package/dist/{src/profile.js → profile.js} +0 -0
- /package/dist/{src/profile.js.map → profile.js.map} +0 -0
- /package/dist/{src/promotion.d.ts → promotion.d.ts} +0 -0
- /package/dist/{src/promotion.js → promotion.js} +0 -0
- /package/dist/{src/promotion.js.map → promotion.js.map} +0 -0
- /package/dist/{src/recall.d.ts → recall.d.ts} +0 -0
- /package/dist/{src/recall.js → recall.js} +0 -0
- /package/dist/{src/recall.js.map → recall.js.map} +0 -0
- /package/dist/{src/settle.d.ts → settle.d.ts} +0 -0
- /package/dist/{src/settle.js → settle.js} +0 -0
- /package/dist/{src/settle.js.map → settle.js.map} +0 -0
- /package/dist/{src/vector.d.ts → vector.d.ts} +0 -0
- /package/dist/{src/vector.js → vector.js} +0 -0
- /package/dist/{src/vector.js.map → vector.js.map} +0 -0
- /package/dist/{face/src/voice-identify.d.ts → voice-identify.d.ts} +0 -0
- /package/dist/{face/src/voice-identify.js → voice-identify.js} +0 -0
- /package/dist/{face/src/voice-identify.js.map → voice-identify.js.map} +0 -0
- /package/dist/{face/src/voice-store.d.ts → voice-store.d.ts} +0 -0
- /package/dist/{face/src/voice-store.js → voice-store.js} +0 -0
- /package/dist/{face/src/voice-store.js.map → voice-store.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bm25.test.js","sourceRoot":"","sources":["../../../src/__tests__/bm25.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,MAAM,KAAK,GAAG,IAAI,SAAS,EAAE,CAAC;QAE9B,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YACtG,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YAEnG,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC9C,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,qCAAqC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YAC7H,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YAElG,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;YACtD,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YAEhG,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC9C,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC/C,MAAM,KAAK,GAAG,IAAI,SAAS,EAAE,CAAC;YAC9B,2DAA2D;YAC3D,MAAM,KAAK,CAAC,QAAQ,CAAC;gBACnB,IAAI,EAAE,yHAAyH;gBAC/H,IAAI,EAAE,YAAY;gBAClB,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE,qBAAqB;aAChC,CAAC,CAAC;YACH,MAAM,KAAK,CAAC,QAAQ,CAAC;gBACnB,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,YAAY;gBAClB,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;YAEH,4CAA4C;YAC5C,MAAM,KAAK,GAAG,aAAa,CAAC;YAC5B,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAE7C,oBAAoB;YACpB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC7B,iEAAiE;YACjE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;YACvC,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC;YACxC,aAAa;YACb,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC5B,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACvB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,QAAQ,WAAW,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7F,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;YAE1C,4BAA4B;YAC5B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/B,+EAA+E;YAC/E,uFAAuF;YACvF,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,wCAAwC;YACxC,+DAA+D;YAC/D,qEAAqE;QACvE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC/C,MAAM,KAAK,GAAG,IAAI,SAAS,EAAE,CAAC;YAC9B,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YACtG,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YAClG,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YAEhG,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC9C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;YACjD,aAAa;YACb,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;YACnC,MAAM,KAAK,GAAG,IAAI,SAAS,EAAE,CAAC;YAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YAC1G,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC7C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;YAClC,MAAM,KAAK,GAAG,IAAI,SAAS,EAAE,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAE3B,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YACpG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAE3B,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YACvG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,KAAK,GAAG,IAAI,SAAS,EAAE,CAAC;YAC9B,sCAAsC;YACtC,qBAAqB;YACrB,MAAM,WAAW,GAAG;;;;;;;;;;CAUzB,CAAC;YACI,uBAAuB;YACvB,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YAC7G,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YAE1G,MAAM;YACN,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEjD,MAAM;YACN,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACrE,MAAM,KAAK,GAAG,IAAI,SAAS,EAAE,CAAC;YAC9B,qBAAqB;YACrB,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YACzB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,0BAA0B,CAAC,CAAC;YAClE,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAElD,kCAAkC;YAClC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,YAAY,GAA4D,IAAI,CAAC;YAEjF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;gBACpE,IAAI,WAAW,EAAE,CAAC;oBAChB,gCAAgC;oBAChC,IAAI,YAAY,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACxD,MAAM,KAAK,CAAC,QAAQ,CAAC;4BACnB,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE;4BAC9B,QAAQ,EAAE,YAAY,CAAC,QAAQ;4BAC/B,IAAI,EAAE,YAAY;4BAClB,QAAQ;yBACT,CAAC,CAAC;oBACL,CAAC;oBACD,kBAAkB;oBAClB,YAAY,GAAG;wBACb,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;wBACxB,IAAI,EAAE,YAAY;wBAClB,IAAI,EAAE,EAAE;qBACT,CAAC;gBACJ,CAAC;qBAAM,IAAI,YAAY,EAAE,CAAC;oBACxB,YAAY,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC;gBACnC,CAAC;YACH,CAAC;YACD,qBAAqB;YACrB,IAAI,YAAY,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxD,MAAM,KAAK,CAAC,QAAQ,CAAC;oBACnB,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE;oBAC9B,QAAQ,EAAE,YAAY,CAAC,QAAQ;oBAC/B,IAAI,EAAE,YAAY;oBAClB,QAAQ;iBACT,CAAC,CAAC;YACL,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;YAE5D,4BAA4B;YAC5B,MAAM,MAAM,GAAG,YAAY,CAAC;YAC5B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAE/C,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,SAAS,QAAQ,CAAC,MAAM,WAAW,CAAC,CAAC;YACjD,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACxB,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;gBAChG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,QAAQ,WAAW,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC;YACxF,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;YAE1C,iCAAiC;YACjC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAE3C,4BAA4B;YAC5B,MAAM,MAAM,GAAG,SAAS,CAAC;YACzB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAE/C,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,SAAS,QAAQ,CAAC,MAAM,WAAW,CAAC,CAAC;YACjD,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACxB,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;gBAChG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,QAAQ,WAAW,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC;YACxF,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;YAE1C,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from "vitest";
|
|
2
|
-
import { parseConfig, DEFAULTS } from "../config.js";
|
|
3
|
-
describe("parseConfig", () => {
|
|
4
|
-
it("returns defaults when no config provided", () => {
|
|
5
|
-
const config = parseConfig();
|
|
6
|
-
expect(config.shortTermDays).toBe(DEFAULTS.shortTermDays);
|
|
7
|
-
expect(config.halfLifeDays).toBe(DEFAULTS.halfLifeDays);
|
|
8
|
-
expect(config.recallTopK).toBe(DEFAULTS.recallTopK);
|
|
9
|
-
expect(config.vectorWeight).toBe(DEFAULTS.vectorWeight);
|
|
10
|
-
expect(config.textWeight).toBe(DEFAULTS.textWeight);
|
|
11
|
-
});
|
|
12
|
-
it("returns defaults when empty object provided", () => {
|
|
13
|
-
const config = parseConfig({});
|
|
14
|
-
expect(config.shortTermDays).toBe(7);
|
|
15
|
-
expect(config.halfLifeDays).toBe(30);
|
|
16
|
-
});
|
|
17
|
-
it("overrides defaults with provided values", () => {
|
|
18
|
-
const config = parseConfig({ shortTermDays: 14, vectorWeight: 0.8 });
|
|
19
|
-
expect(config.shortTermDays).toBe(14);
|
|
20
|
-
expect(config.vectorWeight).toBe(0.8);
|
|
21
|
-
// 其他值保持默认
|
|
22
|
-
expect(config.halfLifeDays).toBe(DEFAULTS.halfLifeDays);
|
|
23
|
-
});
|
|
24
|
-
it("ignores invalid types and uses defaults", () => {
|
|
25
|
-
const config = parseConfig({ shortTermDays: "abc", halfLifeDays: null });
|
|
26
|
-
expect(config.shortTermDays).toBe(DEFAULTS.shortTermDays);
|
|
27
|
-
expect(config.halfLifeDays).toBe(DEFAULTS.halfLifeDays);
|
|
28
|
-
});
|
|
29
|
-
});
|
|
30
|
-
//# sourceMappingURL=config.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.test.js","sourceRoot":"","sources":["../../../src/__tests__/config.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAErD,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACxD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACxD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;QAC/B,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;QACrE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtC,UAAU;QACV,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,aAAa,EAAE,KAAY,EAAE,YAAY,EAAE,IAAW,EAAE,CAAC,CAAC;QACvF,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 图片自动人脸识别注入 — 本地模拟测试
|
|
3
|
-
*
|
|
4
|
-
* 用 memory-engram/images/ 中已存储的图片模拟微信发图场景,
|
|
5
|
-
* 验证 faceStore.detectAndMatch() + 上下文构建逻辑。
|
|
6
|
-
*
|
|
7
|
-
* 不依赖 OpenClaw,不修改任何数据,只做检测和打印。
|
|
8
|
-
* 需要 Python 人脸服务已启动(localhost:8765)。
|
|
9
|
-
*
|
|
10
|
-
* 用法: npx tsx src/__tests__/face-auto-dryrun.ts
|
|
11
|
-
*/
|
|
12
|
-
export {};
|
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 图片自动人脸识别注入 — 本地模拟测试
|
|
3
|
-
*
|
|
4
|
-
* 用 memory-engram/images/ 中已存储的图片模拟微信发图场景,
|
|
5
|
-
* 验证 faceStore.detectAndMatch() + 上下文构建逻辑。
|
|
6
|
-
*
|
|
7
|
-
* 不依赖 OpenClaw,不修改任何数据,只做检测和打印。
|
|
8
|
-
* 需要 Python 人脸服务已启动(localhost:8765)。
|
|
9
|
-
*
|
|
10
|
-
* 用法: npx tsx src/__tests__/face-auto-dryrun.ts
|
|
11
|
-
*/
|
|
12
|
-
import { FaceStore } from "../../face/src/face-store.js";
|
|
13
|
-
const WORKSPACE = process.env.WORKSPACE_DIR || `${process.env.HOME}/.openclaw/workspace`;
|
|
14
|
-
const faceStore = new FaceStore(WORKSPACE);
|
|
15
|
-
// ---- 测试用例 ----
|
|
16
|
-
const TEST_CASES = [
|
|
17
|
-
// Scott + Wandy 缆车合影 (faces=2)
|
|
18
|
-
{
|
|
19
|
-
label: "Scott + Wandy 白云山缆车",
|
|
20
|
-
imagePath: `${WORKSPACE}/memory-engram/images/2026-03/29/20260329_024148_83b84e.jpg`,
|
|
21
|
-
},
|
|
22
|
-
// Scott + Wandy 地铁(Wandy 睡着)(faces=2)
|
|
23
|
-
{
|
|
24
|
-
label: "Scott + Wandy 地铁",
|
|
25
|
-
imagePath: `${WORKSPACE}/memory-engram/images/2026-03/29/20260329_024151_ae582b.jpg`,
|
|
26
|
-
},
|
|
27
|
-
// Wandy 单人 九龙泉 (faces=1)
|
|
28
|
-
{
|
|
29
|
-
label: "Wandy 九龙泉",
|
|
30
|
-
imagePath: `${WORKSPACE}/memory-engram/images/2026-03/29/20260329_024144_70213a.jpg`,
|
|
31
|
-
},
|
|
32
|
-
// 一家三口火锅 (faces=6,含多人)
|
|
33
|
-
{
|
|
34
|
-
label: "一家三口火锅聚餐",
|
|
35
|
-
imagePath: `${WORKSPACE}/memory-engram/images/2026-03/29/20260329_192738_963e15.jpg`,
|
|
36
|
-
},
|
|
37
|
-
// Season 冰淇淋 (faces=0 in metadata, 但应该能检测到)
|
|
38
|
-
{
|
|
39
|
-
label: "Season 吃冰淇淋",
|
|
40
|
-
imagePath: `${WORKSPACE}/memory-engram/images/2026-04/10/20260410_204737_955aa8.jpg`,
|
|
41
|
-
},
|
|
42
|
-
// Wandy 海边沙滩 (faces=0 in metadata)
|
|
43
|
-
{
|
|
44
|
-
label: "Wandy 海边玩沙",
|
|
45
|
-
imagePath: `${WORKSPACE}/memory-engram/images/2026-04/06/20260406_165533_7e65e2.jpg`,
|
|
46
|
-
},
|
|
47
|
-
// 暴雨预警截图 — 应该无人脸
|
|
48
|
-
{
|
|
49
|
-
label: "暴雨预警截图(无人脸)",
|
|
50
|
-
imagePath: `${WORKSPACE}/memory-engram/images/2026-03/29/20260329_191026_b9b9fb.jpg`,
|
|
51
|
-
},
|
|
52
|
-
];
|
|
53
|
-
// ---- 模拟 before_prompt_build 中的人脸上下文构建 ----
|
|
54
|
-
async function buildFaceContext(imagePaths) {
|
|
55
|
-
const registry = await faceStore.loadRegistry();
|
|
56
|
-
if (registry.persons.length === 0)
|
|
57
|
-
return "";
|
|
58
|
-
const relationMap = new Map();
|
|
59
|
-
for (const p of registry.persons) {
|
|
60
|
-
if (p.relation)
|
|
61
|
-
relationMap.set(p.id, p.relation);
|
|
62
|
-
}
|
|
63
|
-
const allFaceLines = [];
|
|
64
|
-
let unknownCount = 0;
|
|
65
|
-
for (const imgPath of imagePaths) {
|
|
66
|
-
const matches = await faceStore.detectAndMatch(imgPath);
|
|
67
|
-
for (const m of matches) {
|
|
68
|
-
if (m.status === "matched") {
|
|
69
|
-
const rel = m.personId ? relationMap.get(m.personId) : "";
|
|
70
|
-
const relStr = rel ? `(${rel},` : "(";
|
|
71
|
-
allFaceLines.push(`- ${m.name}${relStr}${(m.confidence * 100).toFixed(0)}% 置信度)`);
|
|
72
|
-
}
|
|
73
|
-
else if (m.status === "uncertain") {
|
|
74
|
-
allFaceLines.push(`- 疑似 ${m.name}(${(m.confidence * 100).toFixed(0)}%,不确定)`);
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
unknownCount++;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
if (unknownCount > 0) {
|
|
82
|
-
allFaceLines.push(`- ${unknownCount} 张未知人脸`);
|
|
83
|
-
}
|
|
84
|
-
if (allFaceLines.length === 0)
|
|
85
|
-
return "";
|
|
86
|
-
return [
|
|
87
|
-
`<face-recognition>`,
|
|
88
|
-
`图片中识别到以下人物:`,
|
|
89
|
-
...allFaceLines,
|
|
90
|
-
`请结合以上信息理解图片内容。如用户问"这是谁",优先使用识别结果回答。`,
|
|
91
|
-
`</face-recognition>`,
|
|
92
|
-
].join("\n");
|
|
93
|
-
}
|
|
94
|
-
// ---- 主流程 ----
|
|
95
|
-
async function main() {
|
|
96
|
-
console.log("═══════════════════════════════════════════════════════════════");
|
|
97
|
-
console.log(" 图片自动人脸识别注入 — 本地模拟测试");
|
|
98
|
-
console.log("═══════════════════════════════════════════════════════════════");
|
|
99
|
-
// 1. 检查人脸服务
|
|
100
|
-
const available = await faceStore.isServiceAvailable();
|
|
101
|
-
console.log(`\n人脸服务状态: ${available ? "✅ 在线" : "❌ 离线"}`);
|
|
102
|
-
if (!available) {
|
|
103
|
-
console.log("请先启动 Python 人脸服务: cd face/service && python app.py");
|
|
104
|
-
process.exit(1);
|
|
105
|
-
}
|
|
106
|
-
// 2. 检查注册人物
|
|
107
|
-
const registry = await faceStore.loadRegistry();
|
|
108
|
-
console.log(`已注册人物: ${registry.persons.length}`);
|
|
109
|
-
for (const p of registry.persons) {
|
|
110
|
-
console.log(` ${p.id}: ${p.name} (relation=${p.relation}, samples=${p.sampleCount})`);
|
|
111
|
-
}
|
|
112
|
-
// 3. 逐个测试
|
|
113
|
-
console.log("\n───────────────────────────────────────────────────────────────\n");
|
|
114
|
-
for (const tc of TEST_CASES) {
|
|
115
|
-
console.log(`📸 ${tc.label}`);
|
|
116
|
-
console.log(` ${tc.imagePath}`);
|
|
117
|
-
const startMs = Date.now();
|
|
118
|
-
try {
|
|
119
|
-
const context = await buildFaceContext([tc.imagePath]);
|
|
120
|
-
const elapsed = Date.now() - startMs;
|
|
121
|
-
if (context) {
|
|
122
|
-
console.log(` ⏱️ ${elapsed}ms`);
|
|
123
|
-
console.log(` ${context.split("\n").map(l => ` ${l}`).join("\n")}`);
|
|
124
|
-
}
|
|
125
|
-
else {
|
|
126
|
-
console.log(` ⏱️ ${elapsed}ms — 无人脸检测到`);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
catch (err) {
|
|
130
|
-
console.log(` ❌ 检测失败: ${err}`);
|
|
131
|
-
}
|
|
132
|
-
console.log();
|
|
133
|
-
}
|
|
134
|
-
// 4. 模拟微信发图的完整 prompt
|
|
135
|
-
console.log("───────────────────────────────────────────────────────────────");
|
|
136
|
-
console.log("📱 模拟微信发图场景(Scott+Wandy 缆车合影)\n");
|
|
137
|
-
const mockPrompt = `[media attached: ${TEST_CASES[0].imagePath} (image/jpeg)]
|
|
138
|
-
|
|
139
|
-
To send an image back to the user, use this format: 
|
|
140
|
-
Keep caption in the text body.
|
|
141
|
-
|
|
142
|
-
Conversation info (untrusted metadata):
|
|
143
|
-
channel: weixin
|
|
144
|
-
|
|
145
|
-
Sender (untrusted metadata):
|
|
146
|
-
{"name":"Scott","id":"wxid_xxx"}`;
|
|
147
|
-
// 提取图片路径
|
|
148
|
-
const imagePathMatches = [...mockPrompt.matchAll(/\[media attached:\s*([^\s\]]+)\s*\(image\//gi)];
|
|
149
|
-
const imagePaths = imagePathMatches.map(m => m[1]);
|
|
150
|
-
console.log(` 提取到 ${imagePaths.length} 张图片: ${imagePaths.join(", ")}`);
|
|
151
|
-
const startMs = Date.now();
|
|
152
|
-
const faceContext = await buildFaceContext(imagePaths);
|
|
153
|
-
console.log(` 检测耗时: ${Date.now() - startMs}ms`);
|
|
154
|
-
if (faceContext) {
|
|
155
|
-
console.log(`\n === 将注入给 LLM 的 prependContext ===\n`);
|
|
156
|
-
console.log(faceContext);
|
|
157
|
-
}
|
|
158
|
-
else {
|
|
159
|
-
console.log(`\n (无人脸信息注入)`);
|
|
160
|
-
}
|
|
161
|
-
console.log("\n═══════════════════════════════════════════════════════════════");
|
|
162
|
-
console.log(" 模拟完成(未修改任何数据)");
|
|
163
|
-
console.log("═══════════════════════════════════════════════════════════════\n");
|
|
164
|
-
}
|
|
165
|
-
main().catch(console.error);
|
|
166
|
-
//# sourceMappingURL=face-auto-dryrun.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"face-auto-dryrun.js","sourceRoot":"","sources":["../../../src/__tests__/face-auto-dryrun.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeEach } from "vitest";
|
|
2
|
-
import { ProfileManager, EMPTY_PROFILE } from "../profile.js";
|
|
3
|
-
import { promises as fs } from "node:fs";
|
|
4
|
-
import { join } from "node:path";
|
|
5
|
-
import { tmpdir } from "node:os";
|
|
6
|
-
describe("ProfileManager", () => {
|
|
7
|
-
let manager;
|
|
8
|
-
let tempDir;
|
|
9
|
-
beforeEach(async () => {
|
|
10
|
-
tempDir = join(tmpdir(), `engram-test-${Date.now()}`);
|
|
11
|
-
await fs.mkdir(tempDir, { recursive: true });
|
|
12
|
-
manager = new ProfileManager(tempDir);
|
|
13
|
-
});
|
|
14
|
-
describe("load", () => {
|
|
15
|
-
it("returns empty profile when no file exists", async () => {
|
|
16
|
-
const profile = await manager.load();
|
|
17
|
-
expect(profile.summary).toBe("");
|
|
18
|
-
expect(profile.coreTags).toEqual([]);
|
|
19
|
-
expect(profile.tags).toEqual({});
|
|
20
|
-
});
|
|
21
|
-
it("loads existing profile from file", async () => {
|
|
22
|
-
const profileDir = join(tempDir, "memory", "profile");
|
|
23
|
-
await fs.mkdir(profileDir, { recursive: true });
|
|
24
|
-
const saved = { ...EMPTY_PROFILE, summary: "test summary", coreTags: ["tag1"] };
|
|
25
|
-
await fs.writeFile(join(profileDir, "semantic_profile.json"), JSON.stringify(saved));
|
|
26
|
-
const manager2 = new ProfileManager(tempDir);
|
|
27
|
-
const loaded = await manager2.load();
|
|
28
|
-
expect(loaded.summary).toBe("test summary");
|
|
29
|
-
expect(loaded.coreTags).toEqual(["tag1"]);
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
describe("addTag", () => {
|
|
33
|
-
it("adds a new tag with default layer (interest)", async () => {
|
|
34
|
-
const profile = { ...EMPTY_PROFILE };
|
|
35
|
-
const result = manager.addTag(profile, "口味偏好", "喜欢辣");
|
|
36
|
-
expect(result.tags["口味偏好"]).toHaveLength(1);
|
|
37
|
-
expect(result.tags["口味偏好"][0].value).toBe("喜欢辣");
|
|
38
|
-
expect(result.tags["口味偏好"][0].confidence).toBe(0.7);
|
|
39
|
-
expect(result.tags["口味偏好"][0].layer).toBe("interest");
|
|
40
|
-
});
|
|
41
|
-
it("adds identity tag with high confidence", async () => {
|
|
42
|
-
const profile = { ...EMPTY_PROFILE };
|
|
43
|
-
manager.addTag(profile, "居住地", "广州天河", "identity");
|
|
44
|
-
expect(profile.tags["居住地"][0].confidence).toBe(0.95);
|
|
45
|
-
expect(profile.tags["居住地"][0].layer).toBe("identity");
|
|
46
|
-
});
|
|
47
|
-
it("increases confidence for existing tag", async () => {
|
|
48
|
-
const profile = {
|
|
49
|
-
...EMPTY_PROFILE,
|
|
50
|
-
tags: { 口味偏好: [{ value: "喜欢辣", confidence: 0.5, lastSeen: "2026-01-01", layer: "pattern" }] },
|
|
51
|
-
};
|
|
52
|
-
const result = manager.addTag(profile, "口味偏好", "喜欢辣");
|
|
53
|
-
expect(result.tags["口味偏好"]).toHaveLength(1);
|
|
54
|
-
expect(result.tags["口味偏好"][0].confidence).toBeCloseTo(0.6);
|
|
55
|
-
});
|
|
56
|
-
it("promotes tag layer when higher layer is specified", () => {
|
|
57
|
-
const profile = {
|
|
58
|
-
...EMPTY_PROFILE,
|
|
59
|
-
tags: { 居住地: [{ value: "广州", confidence: 0.7, lastSeen: "2026-01-01", layer: "interest" }] },
|
|
60
|
-
};
|
|
61
|
-
manager.addTag(profile, "居住地", "广州", "identity");
|
|
62
|
-
expect(profile.tags["居住地"][0].layer).toBe("identity");
|
|
63
|
-
});
|
|
64
|
-
it("adds multiple tags to same dimension", async () => {
|
|
65
|
-
const profile = { ...EMPTY_PROFILE };
|
|
66
|
-
manager.addTag(profile, "口味偏好", "喜欢辣");
|
|
67
|
-
manager.addTag(profile, "口味偏好", "不吃香菜");
|
|
68
|
-
expect(profile.tags["口味偏好"]).toHaveLength(2);
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
describe("decayTags", () => {
|
|
72
|
-
it("does not decay identity tags", () => {
|
|
73
|
-
const profile = {
|
|
74
|
-
...EMPTY_PROFILE,
|
|
75
|
-
tags: {
|
|
76
|
-
身份: [{ value: "Scott", confidence: 0.95, lastSeen: "2026-03-17", layer: "identity" }],
|
|
77
|
-
},
|
|
78
|
-
};
|
|
79
|
-
manager.decayTags(profile);
|
|
80
|
-
expect(profile.tags["身份"][0].confidence).toBeCloseTo(0.95);
|
|
81
|
-
});
|
|
82
|
-
it("slowly decays pattern tags", () => {
|
|
83
|
-
const profile = {
|
|
84
|
-
...EMPTY_PROFILE,
|
|
85
|
-
tags: {
|
|
86
|
-
习惯: [{ value: "晚睡", confidence: 0.9, lastSeen: "2026-03-17", layer: "pattern" }],
|
|
87
|
-
},
|
|
88
|
-
};
|
|
89
|
-
manager.decayTags(profile);
|
|
90
|
-
expect(profile.tags["习惯"][0].confidence).toBeCloseTo(0.9 * 0.995);
|
|
91
|
-
});
|
|
92
|
-
it("quickly decays interest tags", () => {
|
|
93
|
-
const profile = {
|
|
94
|
-
...EMPTY_PROFILE,
|
|
95
|
-
tags: {
|
|
96
|
-
项目: [{ value: "声纹识别", confidence: 0.7, lastSeen: "2026-03-17", layer: "interest" }],
|
|
97
|
-
},
|
|
98
|
-
};
|
|
99
|
-
manager.decayTags(profile);
|
|
100
|
-
expect(profile.tags["项目"][0].confidence).toBeCloseTo(0.7 * 0.95);
|
|
101
|
-
});
|
|
102
|
-
it("removes tags below their layer threshold", () => {
|
|
103
|
-
const profile = {
|
|
104
|
-
...EMPTY_PROFILE,
|
|
105
|
-
tags: {
|
|
106
|
-
过时: [{ value: "旧兴趣", confidence: 0.15, lastSeen: "2026-01-01", layer: "interest" }],
|
|
107
|
-
},
|
|
108
|
-
};
|
|
109
|
-
manager.decayTags(profile);
|
|
110
|
-
expect(profile.tags["过时"]).toBeUndefined();
|
|
111
|
-
});
|
|
112
|
-
it("treats tags without layer as interest (backward compat)", () => {
|
|
113
|
-
const profile = {
|
|
114
|
-
...EMPTY_PROFILE,
|
|
115
|
-
tags: {
|
|
116
|
-
旧数据: [{ value: "旧标签", confidence: 0.9, lastSeen: "2026-03-17" }],
|
|
117
|
-
},
|
|
118
|
-
};
|
|
119
|
-
manager.decayTags(profile);
|
|
120
|
-
// 旧数据没有 layer → 视为 interest → factor=0.95
|
|
121
|
-
expect(profile.tags["旧数据"][0].confidence).toBeCloseTo(0.9 * 0.95);
|
|
122
|
-
});
|
|
123
|
-
});
|
|
124
|
-
describe("generateCoreTags", () => {
|
|
125
|
-
it("prioritizes identity over pattern over interest", () => {
|
|
126
|
-
const profile = {
|
|
127
|
-
...EMPTY_PROFILE,
|
|
128
|
-
tags: {
|
|
129
|
-
兴趣: [{ value: "声纹项目", confidence: 0.9, layer: "interest" }],
|
|
130
|
-
身份: [{ value: "广州天河", confidence: 0.8, layer: "identity" }],
|
|
131
|
-
习惯: [{ value: "晚睡", confidence: 0.85, layer: "pattern" }],
|
|
132
|
-
},
|
|
133
|
-
};
|
|
134
|
-
const tags = manager.generateCoreTags(profile);
|
|
135
|
-
expect(tags[0]).toBe("广州天河"); // identity 优先
|
|
136
|
-
expect(tags[1]).toBe("晚睡"); // pattern 次之
|
|
137
|
-
expect(tags[2]).toBe("声纹项目"); // interest 最后
|
|
138
|
-
});
|
|
139
|
-
});
|
|
140
|
-
describe("getRecallContext", () => {
|
|
141
|
-
it("returns empty string for empty profile", () => {
|
|
142
|
-
const ctx = manager.getRecallContext(EMPTY_PROFILE);
|
|
143
|
-
expect(ctx).toBe("");
|
|
144
|
-
});
|
|
145
|
-
it("returns summary and core tags", () => {
|
|
146
|
-
const profile = { ...EMPTY_PROFILE, summary: "辣味中餐爱好者", coreTags: ["辣味中餐", "天河"] };
|
|
147
|
-
const ctx = manager.getRecallContext(profile);
|
|
148
|
-
expect(ctx).toContain("辣味中餐爱好者");
|
|
149
|
-
expect(ctx).toContain("辣味中餐");
|
|
150
|
-
expect(ctx).toContain("天河");
|
|
151
|
-
});
|
|
152
|
-
});
|
|
153
|
-
describe("save", () => {
|
|
154
|
-
it("saves profile to file", async () => {
|
|
155
|
-
const profile = { ...EMPTY_PROFILE, summary: "test" };
|
|
156
|
-
await manager.save(profile);
|
|
157
|
-
const raw = await fs.readFile(join(tempDir, "memory", "profile", "semantic_profile.json"), "utf-8");
|
|
158
|
-
const loaded = JSON.parse(raw);
|
|
159
|
-
expect(loaded.summary).toBe("test");
|
|
160
|
-
});
|
|
161
|
-
it("updates updatedAt on save", async () => {
|
|
162
|
-
const profile = { ...EMPTY_PROFILE };
|
|
163
|
-
const before = new Date();
|
|
164
|
-
await manager.save(profile);
|
|
165
|
-
const after = new Date();
|
|
166
|
-
const raw = await fs.readFile(join(tempDir, "memory", "profile", "semantic_profile.json"), "utf-8");
|
|
167
|
-
const loaded = JSON.parse(raw);
|
|
168
|
-
const updated = new Date(loaded.updatedAt);
|
|
169
|
-
expect(updated.getTime()).toBeGreaterThanOrEqual(before.getTime());
|
|
170
|
-
expect(updated.getTime()).toBeLessThanOrEqual(after.getTime());
|
|
171
|
-
});
|
|
172
|
-
});
|
|
173
|
-
});
|
|
174
|
-
//# sourceMappingURL=profile.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"profile.test.js","sourceRoot":"","sources":["../../../src/__tests__/profile.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 晋升评分引擎模拟测试
|
|
3
|
-
*
|
|
4
|
-
* 使用真实的 recall-hits.json 数据,模拟 6 维评分 + 筛选,不执行真实晋升
|
|
5
|
-
*/
|
|
6
|
-
import { readFileSync } from "node:fs";
|
|
7
|
-
import { join } from "node:path";
|
|
8
|
-
// 直接导入 promotion 模块
|
|
9
|
-
import { rankPromotionCandidates, filterPromotionCandidates, PROMOTION_PRESETS, DEFAULT_WEIGHTS, } from "../promotion.js";
|
|
10
|
-
// ---- 加载真实数据 ----
|
|
11
|
-
const WORKSPACE = process.env.WORKSPACE_DIR || join(process.env.HOME || "", ".openclaw/workspace");
|
|
12
|
-
const recallHitsPath = join(WORKSPACE, "memory-engram", "recall-hits.json");
|
|
13
|
-
let hits;
|
|
14
|
-
try {
|
|
15
|
-
const raw = readFileSync(recallHitsPath, "utf-8");
|
|
16
|
-
const parsed = JSON.parse(raw);
|
|
17
|
-
hits = {};
|
|
18
|
-
for (const [key, value] of Object.entries(parsed)) {
|
|
19
|
-
if (typeof value === "number") {
|
|
20
|
-
hits[key] = { recallCount: 1, firstHit: value, lastHit: value, settled: false, queryHashes: [], recallDays: [], totalScore: 0, maxScore: 0, dailyCount: 0, conceptTags: [] };
|
|
21
|
-
}
|
|
22
|
-
else if (typeof value === "object" && value !== null) {
|
|
23
|
-
const entry = value;
|
|
24
|
-
if (entry.recallCount == null && entry.hitCount != null) {
|
|
25
|
-
entry.recallCount = entry.hitCount;
|
|
26
|
-
}
|
|
27
|
-
if (entry.recallCount == null)
|
|
28
|
-
entry.recallCount = 0;
|
|
29
|
-
if (!entry.queryHashes)
|
|
30
|
-
entry.queryHashes = [];
|
|
31
|
-
if (!entry.recallDays)
|
|
32
|
-
entry.recallDays = [];
|
|
33
|
-
if (entry.totalScore == null)
|
|
34
|
-
entry.totalScore = 0;
|
|
35
|
-
if (entry.maxScore == null)
|
|
36
|
-
entry.maxScore = 0;
|
|
37
|
-
if (entry.dailyCount == null)
|
|
38
|
-
entry.dailyCount = 0;
|
|
39
|
-
if (!entry.conceptTags)
|
|
40
|
-
entry.conceptTags = [];
|
|
41
|
-
hits[key] = entry;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
catch (err) {
|
|
46
|
-
console.error(`Failed to load ${recallHitsPath}: ${err}`);
|
|
47
|
-
process.exit(1);
|
|
48
|
-
}
|
|
49
|
-
console.log("═══════════════════════════════════════════════════════════════");
|
|
50
|
-
console.log(" Engram 晋升评分模拟测试(Dry-Run)");
|
|
51
|
-
console.log("═══════════════════════════════════════════════════════════════");
|
|
52
|
-
console.log(`\n数据源: ${recallHitsPath}`);
|
|
53
|
-
console.log(`总条目: ${Object.keys(hits).length}`);
|
|
54
|
-
console.log(`已晋升: ${Object.values(hits).filter(e => e.settled || e.promotedAt).length}`);
|
|
55
|
-
console.log(`权重: ${JSON.stringify(DEFAULT_WEIGHTS)}`);
|
|
56
|
-
// ---- 排名 ----
|
|
57
|
-
const ranked = rankPromotionCandidates(hits);
|
|
58
|
-
console.log(`\n─── 全部候选排名(${ranked.length} 条)───\n`);
|
|
59
|
-
console.log("排名 | 文件名 | 综合分 | freq | rel | div | rec | cons | conc | rcl | sig | queries | days | age(d)");
|
|
60
|
-
console.log("─────┼────────────────────┼─────────┼────────┼────────┼────────┼────────┼────────┼────────┼──────┼──────┼─────────┼──────┼───────");
|
|
61
|
-
for (let i = 0; i < ranked.length; i++) {
|
|
62
|
-
const c = ranked[i];
|
|
63
|
-
const w = DEFAULT_WEIGHTS;
|
|
64
|
-
console.log(` ${String(i + 1).padStart(2)} | ${c.key.padEnd(18)} | ${c.score.toFixed(4).padStart(7)} | ` +
|
|
65
|
-
`${(c.components.frequency * w.frequency).toFixed(3).padStart(6)} | ` +
|
|
66
|
-
`${(c.components.relevance * w.relevance).toFixed(3).padStart(6)} | ` +
|
|
67
|
-
`${(c.components.diversity * w.diversity).toFixed(3).padStart(6)} | ` +
|
|
68
|
-
`${(c.components.recency * w.recency).toFixed(3).padStart(6)} | ` +
|
|
69
|
-
`${(c.components.consolidation * w.consolidation).toFixed(3).padStart(6)} | ` +
|
|
70
|
-
`${(c.components.conceptual * DEFAULT_WEIGHTS.conceptual).toFixed(3).padStart(6)} | ` +
|
|
71
|
-
`${String(c.recallCount).padStart(4)} | ${String(c.signalCount).padStart(4)} | ${String(c.uniqueQueries).padStart(7)} | ${String(c.uniqueDays).padStart(4)} | ${c.ageDays.toFixed(1).padStart(6)}`);
|
|
72
|
-
}
|
|
73
|
-
// ---- 三档预设筛选 ----
|
|
74
|
-
for (const mode of ["core", "deep", "rem"]) {
|
|
75
|
-
const preset = PROMOTION_PRESETS[mode];
|
|
76
|
-
const config = { mode, ...preset };
|
|
77
|
-
const eligible = filterPromotionCandidates(ranked, config);
|
|
78
|
-
console.log(`\n─── ${mode.toUpperCase()} 模式筛选结果(minScore=${config.minScore}, minHits=${config.minRecallCount}, minQueries=${config.minUniqueQueries})───`);
|
|
79
|
-
if (eligible.length === 0) {
|
|
80
|
-
console.log(" (无候选通过筛选)");
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
for (const c of eligible) {
|
|
84
|
-
console.log(` ✓ ${c.key} score=${c.score.toFixed(4)} signals=${c.signalCount} recalls=${c.recallCount} queries=${c.uniqueQueries} days=${c.uniqueDays}`);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
console.log(` 总计: ${eligible.length} / ${ranked.length} 通过`);
|
|
88
|
-
}
|
|
89
|
-
// ---- 分析旧数据特征 ----
|
|
90
|
-
console.log("\n─── 旧数据分析 ───\n");
|
|
91
|
-
const noQueryData = ranked.filter(c => c.uniqueQueries === 0);
|
|
92
|
-
const noScoreData = ranked.filter(c => c.avgScore === 0);
|
|
93
|
-
const noTagData = ranked.filter(c => {
|
|
94
|
-
const entry = hits[c.key];
|
|
95
|
-
return !entry.conceptTags || entry.conceptTags.length === 0;
|
|
96
|
-
});
|
|
97
|
-
console.log(`无 queryHashes 数据: ${noQueryData.length} / ${ranked.length} (diversity 维度=0)`);
|
|
98
|
-
console.log(`无 totalScore 数据: ${noScoreData.length} / ${ranked.length} (relevance 维度=0)`);
|
|
99
|
-
console.log(`无 conceptTags 数据: ${noTagData.length} / ${ranked.length} (conceptual 维度=0.5 fallback)`);
|
|
100
|
-
console.log(`\n结论: 旧数据只有 frequency + recency 两个维度有效值,其余均为默认值。`);
|
|
101
|
-
console.log(`随着 0.8.0 积累新的 recall 数据(queryHashes, scores, #tags),评分精度会逐步提升。`);
|
|
102
|
-
console.log("\n═══════════════════════════════════════════════════════════════");
|
|
103
|
-
console.log(" 模拟完成(未执行任何写入操作)");
|
|
104
|
-
console.log("═══════════════════════════════════════════════════════════════\n");
|
|
105
|
-
//# sourceMappingURL=promotion-dryrun.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"promotion-dryrun.js","sourceRoot":"","sources":["../../../src/__tests__/promotion-dryrun.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|