Initial commit

This commit is contained in:
Zhongwei Li
2025-11-29 18:24:34 +08:00
commit 3a6a27d00c
16 changed files with 2959 additions and 0 deletions

View File

@@ -0,0 +1,161 @@
#!/bin/bash
# 记忆系统快速查询脚本
MEMORY_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
CLI_SCRIPT="$MEMORY_ROOT/memory_cli.py"
# 帮助信息
show_help() {
cat << EOF
记忆系统快速查询工具
用法: $0 [命令] [选项]
命令:
today 查看今天的事件
week 查看本周的事件
recent <天数> 查看最近N天的事件
search <关键词> 搜索标题包含关键词的事件
types 统计事件类型分布
tags 统计标签使用情况
stats 显示系统统计信息
help 显示此帮助信息
示例:
$0 today
$0 week
$0 recent 3
$0 search "认证"
$0 types
$0 tags
$0 stats
EOF
}
# 检查Python环境
check_python() {
if ! command -v python3 &> /dev/null; then
echo "错误: 未找到python3请确保Python 3已安装"
exit 1
fi
# 检查必要的Python模块
python3 -c "import sys; sys.exit(0)" 2>/dev/null || {
echo "错误: Python环境异常"
exit 1
}
}
# 检查CLI脚本是否存在并可执行
check_cli() {
if [ ! -f "$CLI_SCRIPT" ]; then
echo "错误: 找不到 memory_cli.py 脚本 ($CLI_SCRIPT)"
exit 1
fi
if [ ! -x "$CLI_SCRIPT" ] && [ ! -x "$(which python3)" ]; then
echo "错误: 无法执行Python脚本请检查权限"
exit 1
fi
}
# 执行查询并处理错误
run_query() {
if ! python3 "$CLI_SCRIPT" query "$@" 2>&1; then
echo "查询执行失败,可能的原因:"
echo "1. 记忆系统尚未初始化"
echo "2. 查询语法错误"
echo "3. 文件权限问题"
echo "请检查 memory_cli.py 是否正常工作"
return 1
fi
}
# 主逻辑
main() {
check_python
check_cli
case "${1:-help}" in
"today")
echo "=== 今天的事件 ==="
run_query --where "date='$(date +%Y-%m-%d)'" --order-by "timestamp desc"
;;
"week")
echo "=== 本周的事件 ==="
run_query --where "date>='$(date -d 'last monday' +%Y-%m-%d)'" --order-by "timestamp desc"
;;
"recent")
days="${2:-7}"
echo "=== 最近 $days 天的事件 ==="
run_query --where "timestamp >= '$(date -d "$days days ago" +%Y-%m-%dT%H:%M:%S)'" --order-by "timestamp desc"
;;
"search")
keyword="${2:-}"
if [ -z "$keyword" ]; then
echo "错误: 请提供搜索关键词"
exit 1
fi
echo "=== 搜索包含 '$keyword' 的事件 ==="
# 注意: 当前CLI不支持LIKE操作这里用简单的方式
run_query --where "title LIKE '%$keyword%'" 2>/dev/null || run_query | grep -i "$keyword"
;;
"types")
echo "=== 事件类型统计 ==="
if run_query --select "type" --format json 2>/dev/null | python3 -c "
import sys, json
try:
data = json.load(sys.stdin)
types = {}
for item in data:
t = item.get('type', 'unknown')
types[t] = types.get(t, 0) + 1
if not types:
print('暂无事件数据')
else:
for t, count in sorted(types.items(), key=lambda x: x[1], reverse=True):
print(f'{t}: {count}')
except Exception as e:
print(f'统计失败: {e}')
print('请检查Python环境和JSON数据格式')
" 2>/dev/null; then
echo "统计功能需要Python 3和JSON支持"
fi
;;
"tags")
echo "=== 标签使用统计 ==="
if run_query --select "tags" --format json 2>/dev/null | python3 -c "
import sys, json
try:
data = json.load(sys.stdin)
tags = {}
for item in data:
for tag in item.get('tags', []):
tags[tag] = tags.get(tag, 0) + 1
if not tags:
print('暂无标签数据')
else:
for tag, count in sorted(tags.items(), key=lambda x: x[1], reverse=True)[:20]:
print(f'{tag}: {count}')
except Exception as e:
print(f'统计失败: {e}')
print('请检查Python环境和JSON数据格式')
" 2>/dev/null; then
echo "统计功能需要Python 3和JSON支持"
fi
;;
"stats")
echo "=== 记忆系统统计 ==="
echo "Episodic事件数量: $(find "$MEMORY_ROOT/episodic" -name "*.md" 2>/dev/null | wc -l)"
echo "Long-term文档数量: $(find "$MEMORY_ROOT/long-term" -name "*.md" 2>/dev/null | wc -l)"
echo "Short-term文件数量: $(find "$MEMORY_ROOT/short-term" -name "*.md" 2>/dev/null | wc -l)"
echo "总计: $(find "$MEMORY_ROOT" -name "*.md" 2>/dev/null | wc -l)"
;;
"help"|*)
show_help
;;
esac
}
main "$@"