From ac313276e013d85d57b1a9384c1d9ba3d65cafc7 Mon Sep 17 00:00:00 2001 From: Guofang Date: Mon, 9 Nov 2026 23:42:12 +0800 Subject: [PATCH] Persist input history across runs Load and save readline history in .cache/history (last 1000 entries). Co-Authored-By: Claude Sonnet 5.5 --- __pycache__/embedlab.cpython-315.pyc | Bin 16101 -> 17142 bytes embedlab.py | 16 ++++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/__pycache__/embedlab.cpython-315.pyc b/__pycache__/embedlab.cpython-315.pyc index aaf77604b77eddbe5499c33723c91b5cf5002df5..fa4bdcb733dc188bd5a6e75f033479d6455fcde2 100644 GIT binary patch delta 2990 zcmb7GYiwLc6`t93(zOoS8E-XU=?c|Mt~?9i^qaN_}nu<;wM&2Y#?_xwPIksVuMC+{*2blS$Wj zb%XtwdTn47y}9`0E_JX+z65-q%wa-XK~(rH_~dHK^$1uD@-JG-Dp z&-a#i`@L;!O;?Et8gNv9#=%$q4+p)p;I>$6KCP@*Dd>0&tg;POSvzfyuP^8%iWB#R zn~Up7KyN?M$|tB+!5g{>_fLD{{oV0&QF#hSIs8p4BG6<|oK25ix4 z09&(ZJ5 zqgoKKTMO~^S_?=UrhBy3zQ+hjz)|_h^ak-`TMO+F7i}M@uGu8dW!aPYH+8Jb?5h~f28!B7Mv|Y6LcJ!elqR5q4N-jHRDKIg|GwmoY%FE4^nJBL4elQJ+ z@A*#CKz^_^Og)=H!SH-pugH|uRmx2}=M840IU50eT%0VMhTgZz29(Dh0L3{Qb3$d= z)25M$xGe{tPbG7fk}@;wLFovsN-~qP+>aWm1#^_KEMuF{gtJ-YGB|qLIHbdv{kd5- zD2`Wk*A(K-&73Z$XM3RYBl+J~y-Deq_(n~1lU$};@E|(Fyf{Z#0A)GW%gj5YIfGmv z^Wx*09$0)+ZB%I=z>Z%4fQVH?Wzn2PllMf6)r)jPm_8+z8%CXD*gqy#8>Y%zQN;Py zwjpBv4(CJI9u(ZaqfSom;j`IA9Ztc_a5e|Vh5QwN1%>JV-uN=^;dr1UbjOqBG&2dv zl0r=EkPPXFlf}iwKx>(Fr|@K&ErOe4f;K-v1A;fN4&4m_W}{qE@%-&+gU!Kd2=QDn4lDX|aEn5}B>dscn`A_6pWnH2=XK~nA{BR!iVcFoaxf#a z-(+&T_kn`-iKF3>&QfWEdzF~Al!TFs_$)`xJe1>XpR^RNz)^7{+(32VZrdog#pcli z!i)JGZ9$CAf%YFMp2MhiAdHLF$RizcqdTxI=f%Xb)NS#HA0FB{vO7}3X3+GMcqtNa z4xuii@?8p%Ts&XO%kBblWU$6+N@;em6F}>#1n%q!z}6NE@QFRaRkCO`1mluGvtQNjv;cN@ErHNFnlt$96K3bj-Q>l zT)lDY`H`#YkPKh=k{Uic@t(Tz_Nu2+2FSW6KwlrK8mcF6)q93ImA5)5VE#zARzi=7 zcl*9YPYbg@*mMSG{|>@S0EZnLfN?_XyQp|ktn?26W&NqYj%LKa`x8revJ9UO`Kn3g zvFzic6O)!BnVDb6F=RGN9gU9_`2J<=ij*U%uyBhEk|Y{ZKf=H zCd<<73Dns4Eu>PGGnY*z#rvDRvEQK*A14mEXgAn?E_ndxCq1+F2p%*O7CprA5P|<> zDLf89kI4-C0QCRJN4KolCgnbH!|B2ghrV@XHoKD zH!u8o7zd4H%Ge9p(}#L|Lm}MoRB-kvDh3fSc=G3@a56mvqFy*D8E3qhYlX%PX> z#d2k``hI526pjE%gvmpeN%<}|F|~s z0*?{?Ga!YV3Z?X>lThbHXYcv8tK`AI5Z?!4?t$-b{6ksAiN$9ZPaJvn$hU{j#7@P| z#81Uv8GbExF7{gdT>Sj_<>=_;rm=U_i@T;SmrXzI6~2KLw~w~|GvuJY8|C6B1L5+R RN<5o6{*1i6p?0j*`5*Wky4U~! delta 2230 zcmY*aYitx%6rQ`Y&%U;$FS@(!ZXYacS!!Q4rG=K(E`>^42Baa{W*BydGIVyf-n$D( zAOuW*m=KfZMn%P@7=DPx1l`2=h+=}qKPEnYfSHIP5facp5`#aCiJo(}1=(c3xpU6B z=bn4cch3B^K<=C>+f!CrB*E{%z57RgjV_k0bzE{RZs-k+y0VUXY1GX;_0o)_ICexv zeatsn#EKTrCi;uxlF~RqScxLD(rGdoLKlz!Cc}@v;~QEo{(#T+ ziP#^7{b=K7+EHCKHI`M=nUrqQHjqAcu^;Q7z5rFc^*V zUFFlT|8n_&O#1oV%5d-2RR^|gSXsMhN;7kMg3=779jL-n>~e7lHLV?2P2HN!9;O3) zuxeAa2-C;(tSSznd%$>a{!G$Jd z5aJItae3VqG~5ROnW}_`O|mvI9?KG~{#|o#mq>!6Z(?HN9vDcmibvIw9PuO%LAi;ba6+oP(fOj1?tGGH;&Rn1DN z2MsF~Beo0*hU0amCCh-Vxp|f9S_&^juYl@n__HZ~w{1twb#KpYZ}|;x_(yMe*?-;J zE~uVQbSOTuz+dZom0aL${o&ACu!X*k@Fu_s*Au{)2z>(u=ef~8P=`c5;hBk~jC5b* zgf|kgG89(S7>*Fx2MaIeeCrFGMG;;}S?66c|uY1-~=#xz=47U-7AL595aDk^ctFrC^? zjm|Prbz4rRQ$X);x73vjdOOpaVbSlw`ey#YmSxA&;;Rkw}lFf+=|j>gpCLX5aIx~M?1*owd`TrtEz_# zQ&&|g=K9-cQGymF@R87tYKEyDGoNpV@pWl$FZ6_W3$$|1 z)CcHIP$50pS-|@;;ax)&e01m{uNz)=c}T|}Rs7m;bNQS{D(+=&FuWG3NtC$%1KU#w A5C8xG diff --git a/embedlab.py b/embedlab.py index 38c2608..79d8f04 100755 --- a/embedlab.py +++ b/embedlab.py @@ -2,6 +2,7 @@ print("Loading torch/transformers, please wait...", flush=True) +import atexit import os import readline @@ -22,6 +23,7 @@ MODELS = { PARAM_KEYS = ["pooling", "max_length", "batch_size"] DEFAULT_MODEL = "BAAI/bge-small-zh-v1.5" LAST_MODEL_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), ".cache", "last_model") +HISTORY_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), ".cache", "history") COMMANDS = ["/select", "/sim", "/tokens", "/params", "/set", "/reset", "/lsmod", "/help", "/quit", "/exit"] device = "cuda" if torch.cuda.is_available() else "cpu" @@ -202,6 +204,20 @@ def setup_readline(): readline.parse_and_bind("bind ^I rl_complete") else: readline.parse_and_bind("tab: complete") + try: + readline.read_history_file(HISTORY_FILE) + except OSError: + pass + readline.set_history_length(1000) + atexit.register(save_history) + + +def save_history(): + try: + os.makedirs(os.path.dirname(HISTORY_FILE), exist_ok=True) + readline.write_history_file(HISTORY_FILE) + except OSError: + pass HELP = """Commands: