@yottameta/yotta-memory 0.5.1 → 0.5.3
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/SKILL.md +2 -2
- package/bin/yotta-memory.js +21 -15
- package/package.json +1 -1
- package/references/protocol.md +1 -1
package/SKILL.md
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: yotta-memory
|
|
3
3
|
description: "元忆 —— 有权限边界的文件式智能体记忆。文件式、零依赖、可 diff/回滚:让任何 AI 智能体活过会话,开工 recall 恢复上下文、重要信息 remember 落盘、收工归档。类型体系 FACT(公共共享)/ PREF / BOUND / COMMIT(私密隔离)。触发:记住、别忘了、记一笔、记忆、remember、recall、跨会话、上次说到、续测、交接、归档、记忆盘、共享记忆、局域网记忆"
|
|
4
|
-
version: 0.5.
|
|
4
|
+
version: 0.5.3
|
|
5
5
|
license: MIT
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# yotta-memory(元忆)— 有权限边界的文件式智能体记忆
|
|
9
9
|
|
|
10
10
|
> 一句话:元忆 —— 有权限边界的文件式智能体记忆(不注入、可 diff、能回滚;FACT 共享、PREF / BOUND / COMMIT 私密隔离)。
|
|
11
|
-
> 版本:0.5.
|
|
11
|
+
> 版本:0.5.3 | 最后更新:2026-08-25
|
|
12
12
|
|
|
13
13
|
## 这是什么
|
|
14
14
|
|
package/bin/yotta-memory.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// v0.4.0 新增:lan(Windows 计划任务开机自启 serve)/ init --dir(显式指定位置)/ serve --stdio(本地零进程模式)/ MCP 工具补 reindex/export/import
|
|
4
4
|
// v0.5.0 新增:隐私硬隔离——私密物理分目录 private/<agent_id>/{prefs,bounds,commits}/ + 关闭 --agent 越权读 + 私密写跨智能体需 --unsafe + 禁 shell 直读写(文档红线)
|
|
5
5
|
// v0.4.2 新增:iam/whoami 智能体身份自注册(agents.json 唯一性)+ 自我档案 PREF + 私密记忆须声明 owner
|
|
6
|
+
// v0.5.3 新增:CLI 选项可前置(--agent 等允许放在子命令前,不再误报"未知命令")/ lan enable 成功补"服务不会立刻启动"提示(v0.5.2 lan 引号修复无回归)
|
|
6
7
|
'use strict';
|
|
7
8
|
|
|
8
9
|
const fs = require('fs');
|
|
@@ -12,7 +13,7 @@ const crypto = require('crypto');
|
|
|
12
13
|
const http = require('http');
|
|
13
14
|
const child_process = require('child_process');
|
|
14
15
|
|
|
15
|
-
const VERSION = '0.5.
|
|
16
|
+
const VERSION = '0.5.3';
|
|
16
17
|
const TYPES = ['FACT', 'PREF', 'BOUND', 'COMMIT'];
|
|
17
18
|
const TYPE_DIRS = { FACT: 'facts', PREF: 'prefs', BOUND: 'bounds', COMMIT: 'commits' };
|
|
18
19
|
const PUBLIC_DIR = 'facts';
|
|
@@ -964,7 +965,9 @@ const LAN_TASK_NAME = 'YottaMemoryServe';
|
|
|
964
965
|
function lanTaskRunCmd(opts) {
|
|
965
966
|
const host = opts.host || '0.0.0.0';
|
|
966
967
|
const port = opts.port || 8787;
|
|
967
|
-
|
|
968
|
+
// schtasks /tr 不接受多余内嵌引号:路径无空格不加引号,含空格/引号用 \" 转义(0.5.2 修复)
|
|
969
|
+
const q = (p) => /[\s"]/.test(p) ? '\\"' + p.replace(/"/g, '\\"') + '\\"' : p;
|
|
970
|
+
return q(process.execPath) + ' ' + q(__filename) + ' serve --host ' + host + ' --port ' + port;
|
|
968
971
|
}
|
|
969
972
|
function cmdLanEnable(opts) {
|
|
970
973
|
if (process.platform !== 'win32') {
|
|
@@ -981,6 +984,7 @@ function cmdLanEnable(opts) {
|
|
|
981
984
|
}
|
|
982
985
|
console.log('已注册开机自启: 计划任务 ' + LAN_TASK_NAME + '(触发器 ' + trigger + ')');
|
|
983
986
|
console.log('运行命令: ' + tr);
|
|
987
|
+
console.log('备注: 服务不会立刻启动,需重启/重新登录后自动启动;如需现在运行请执行 yotta-memory serve');
|
|
984
988
|
}
|
|
985
989
|
function cmdLanDisable() {
|
|
986
990
|
if (process.platform !== 'win32') {
|
|
@@ -1053,14 +1057,13 @@ function usage() {
|
|
|
1053
1057
|
function main() {
|
|
1054
1058
|
const args = process.argv.slice(2);
|
|
1055
1059
|
if (!args.length) { usage(); return; }
|
|
1056
|
-
const first = args[0];
|
|
1057
|
-
if (first === '--version' || first === '-v') { console.log(VERSION); return; }
|
|
1058
|
-
if (first === '--help' || first === '-h') { usage(); return; }
|
|
1059
1060
|
const opts = {};
|
|
1060
1061
|
const positional = [];
|
|
1061
1062
|
const valueOpts = new Set(['--type', '--limit', '--days', '--out', '--owner', '--agent', '--threshold', '--scope', '--host', '--port', '--dir']);
|
|
1062
|
-
for (let i =
|
|
1063
|
+
for (let i = 0; i < args.length; i++) {
|
|
1063
1064
|
const a = args[i];
|
|
1065
|
+
if (a === '--version' || a === '-v') { console.log(VERSION); return; }
|
|
1066
|
+
if (a === '--help' || a === '-h') { usage(); return; }
|
|
1064
1067
|
if (a === '--project') opts.project = true;
|
|
1065
1068
|
else if (a === '--all') opts.all = true;
|
|
1066
1069
|
else if (a === '--unsafe') opts.unsafe = true;
|
|
@@ -1088,26 +1091,28 @@ function main() {
|
|
|
1088
1091
|
positional.push(a);
|
|
1089
1092
|
}
|
|
1090
1093
|
}
|
|
1094
|
+
const first = positional[0];
|
|
1095
|
+
const rest = positional.slice(1);
|
|
1091
1096
|
switch (first) {
|
|
1092
1097
|
case 'init': cmdInit(opts); break;
|
|
1093
1098
|
case 'whoami': cmdWhoami(); break;
|
|
1094
|
-
case 'iam': cmdIam(
|
|
1099
|
+
case 'iam': cmdIam(rest[0], opts); break;
|
|
1095
1100
|
case 'config': {
|
|
1096
|
-
const sub =
|
|
1097
|
-
if (sub === 'set') cmdConfigSet(
|
|
1101
|
+
const sub = rest[0];
|
|
1102
|
+
if (sub === 'set') cmdConfigSet(rest[1], rest[2]);
|
|
1098
1103
|
else if (sub === 'get') cmdConfigGet();
|
|
1099
1104
|
else { console.error('config 子命令: set memory_home <目录> / get'); process.exit(2); }
|
|
1100
1105
|
break;
|
|
1101
1106
|
}
|
|
1102
|
-
case 'remember': cmdRemember(
|
|
1103
|
-
case 'recall': cmdRecall(
|
|
1104
|
-
case 'forget': cmdForget(
|
|
1107
|
+
case 'remember': cmdRemember(rest[0], rest[1], rest[2], opts); break;
|
|
1108
|
+
case 'recall': cmdRecall(rest[0] || null, opts); break;
|
|
1109
|
+
case 'forget': cmdForget(rest[0]); break;
|
|
1105
1110
|
case 'archive': cmdArchive(opts); break;
|
|
1106
1111
|
case 'reindex': cmdReindex(); break;
|
|
1107
1112
|
case 'export': cmdExport(opts.out); break;
|
|
1108
|
-
case 'import': cmdImport(
|
|
1113
|
+
case 'import': cmdImport(rest[0]); break;
|
|
1109
1114
|
case 'token': {
|
|
1110
|
-
const sub =
|
|
1115
|
+
const sub = rest[0];
|
|
1111
1116
|
if (sub === 'new') cmdTokenNew(opts.agent, opts);
|
|
1112
1117
|
else if (sub === 'list') cmdTokenList();
|
|
1113
1118
|
else if (sub === 'revoke') cmdTokenRevoke(opts.agent);
|
|
@@ -1116,7 +1121,7 @@ function main() {
|
|
|
1116
1121
|
}
|
|
1117
1122
|
case 'serve': cmdServe(opts); break;
|
|
1118
1123
|
case 'lan': {
|
|
1119
|
-
const sub =
|
|
1124
|
+
const sub = rest[0];
|
|
1120
1125
|
if (sub === 'enable') cmdLanEnable(opts);
|
|
1121
1126
|
else if (sub === 'disable') cmdLanDisable();
|
|
1122
1127
|
else if (sub === 'status') cmdLanStatus();
|
|
@@ -1124,6 +1129,7 @@ function main() {
|
|
|
1124
1129
|
break;
|
|
1125
1130
|
}
|
|
1126
1131
|
default:
|
|
1132
|
+
if (!first) { usage(); return; }
|
|
1127
1133
|
console.error('未知命令: ' + first);
|
|
1128
1134
|
usage();
|
|
1129
1135
|
process.exit(2);
|
package/package.json
CHANGED
package/references/protocol.md
CHANGED