lanceyq
15a863b41a
feat(memory): unify alias extraction into metadata pipeline and deduplicate user entity nodes
...
- Merge alias add/remove into MetadataExtractionResponse and Celery metadata task,
removing the separate sync step from extraction_orchestrator
- Replace first-person pronouns ("我") with "用户" in statement extraction to
preserve identity semantics for downstream metadata/alias extraction
- Update extract_statement.jinja2 prompt to enforce "用户" as subject for user
statements instead of resolving to real names
- Add alias change instructions (aliases_to_add/aliases_to_remove) to
extract_user_metadata.jinja2 with incremental merge logic
- Deduplicate special entities ("用户", "AI助手") in graph_saver by reusing
existing Neo4j node IDs per end_user_id
- Sync final aliases from PgSQL to Neo4j user entity nodes after metadata write
2026-04-09 21:55:59 +08:00
lanceyq
e0546e01ef
refactor(memory): delegate metadata merging to LLM instead of code-based merge
...
- Remove merge_metadata and its helper functions from metadata_utils.py
- Pass existing_metadata to MetadataExtractor.extract_metadata() as LLM context
- Add merge instructions to extract_user_metadata.jinja2 prompt (zh/en)
- Update Celery task to read existing metadata before extraction and overwrite
- Simplify field descriptions in UserMetadataProfile model
- Add _update_timestamps helper to track changed fields
2026-04-09 15:10:29 +08:00
lanceyq
f2d7479229
feat(memory): add async user metadata extraction pipeline
...
- Add MetadataExtractor to collect user-related statements post-dedup
and extract profile/behavioral metadata via independent LLM call
- Add Celery task (extract_user_metadata) routed to memory_tasks queue
- Add metadata models (UserMetadata, UserMetadataProfile, etc.)
- Add metadata utility functions (clean, validate, merge with _op support)
- Add Jinja2 prompt template for metadata extraction (zh/en)
- Fix Lucene query parameter naming: rename `q` to `query` across all
Cypher queries, graph_search functions, and callers
- Escape `/` in Lucene queries to prevent TokenMgrError
- Add `speaker` field to ChunkNode and persist it in Neo4j
- Remove unused imports (argparse, os, UUID) in search.py
- Fix unnecessary db context nesting in interest distribution task
2026-04-09 11:01:56 +08:00
Ke Sun
63235de42b
Merge pull request #774 from SuanmoSuanyangTechnology/feat/data-transformation
...
Feat/data transformation
2026-04-02 15:37:50 +08:00
lanceyq
abbd92b74c
Interface performance optimization, using only one function
2026-04-02 14:19:27 +08:00
Ke Sun
1c133d3d6c
Merge pull request #775 from SuanmoSuanyangTechnology/pref/redis-connections
...
refactor(tasks, redis_lock): improve Redis connection and lock handling
2026-04-02 14:06:46 +08:00
Eternity
d270d25a99
refactor(tasks, redis_lock): improve Redis connection and lock handling
...
- Increased max_connections for Redis pool from 10 to 100.
- Extended socket_timeout from 5 to 10 seconds.
- Added retry mechanism with exponential backoff for Redis operations in `RedisFairLock`.
2026-04-02 13:57:22 +08:00
Ke Sun
cdebe014cf
fix(tasks): disable late acknowledgment for write_message task
2026-04-01 18:21:16 +08:00
Eternity
8f609ba29c
fix(redis_lock): refactor RedisFairLock to use ZSET for queue management and fix loop shutdown
...
- Replace list-based queue with sorted set for better dead client cleanup
- Add zombie cleanup buffer to handle expired queue entries
- Fix potential None loop reference in graceful shutdown
- Add task start time to write_message_task result
- Update lock acquisition script to use ZSET operations
- Remove unused queue cleanup scripts
- Ensure proper lock release and renewal failure handling
2026-04-01 11:15:06 +08:00
Ke Sun
dbe387f666
fix(tasks): increase redis lock timeout and expiration for write_message_task
...
- Increase lock expiration time from 120 to 600 seconds (5 minutes)
- Increase lock timeout from 300 to 3600 seconds (1 hour)
- Prevents premature lock release during long-running memory write operations
2026-03-30 20:53:17 +08:00
lanceyq
6e7c641fd4
[fix] Remove duplicate creations
2026-03-30 18:46:25 +08:00
lanceyq
0c677701c0
[fix] iron release
2026-03-30 18:29:17 +08:00
lanceyq
c90b58bbcd
[fix] The "write_tools" module actively shuts down the client, and it closes before the task event loop is completed.
2026-03-30 18:19:50 +08:00
Eternity
8dd24533bf
fix(memory,task): add Redis fair lock for ordered memory writes
2026-03-30 17:20:54 +08:00
lanceyq
2319432182
[changes] Set up Celery tasks to perform clustering
2026-03-26 18:18:23 +08:00
lanceyq
f2c9902a07
[fix] Fix the forgotten periodic tasks
2026-03-26 11:13:12 +08:00
Eternity
89d188fbf3
Merge branch 'develop' into feature/multimodel_memory
...
# Conflicts:
# api/app/core/memory/storage_services/extraction_engine/knowledge_extraction/embedding_generation.py
# api/app/repositories/neo4j/add_nodes.py
# api/app/repositories/neo4j/cypher_queries.py
# api/app/repositories/neo4j/graph_saver.py
# api/app/services/memory_agent_service.py
# api/app/services/multimodal_service.py
2026-03-24 14:15:18 +08:00
Eternity
6bba574ca6
feat(memory, model): update multi-modal memory write and model list API
...
- Adjust multi-modal memory write behavior for text and visual data
- Mask API keys in model list response to prevent exposure
- Add capability-based filtering to the model list API
2026-03-24 13:54:15 +08:00
lanceyq
31b8a3764e
【change】 1.Standardize log specifications;2.Cluster settings trigger explicitly
2026-03-23 16:38:47 +08:00
Eternity
2ff81ba101
feat(memory): support perception-aware memory writing in workflow and Neo4j nodes
2026-03-23 16:33:25 +08:00
Eternity
c17a2dad2d
style(memory): Some code style optimizations
2026-03-20 21:05:22 +08:00
lanceyq
b4615bacdc
[changes] Modify the execution conditions of the task
2026-03-19 20:17:43 +08:00
lanceyq
f644c84fbb
[changes]Community node attribute check
2026-03-19 19:24:37 +08:00
Timebomb2018
ea391dc44e
feat(app):
...
1. Add new functional features to the agent;
2. Enhance the voice output;
3. Modify the end_user binding;
4. Delete and modify the tools.
2026-03-16 18:00:09 +08:00
lanceyq
bdf0c256b3
[add] Change the "last_done" storage to UTC and remove the intermediate conversion.
2026-03-16 16:13:30 +08:00
lanceyq
382e4c5377
[changes] The user's personal configuration and the clustering trigger boundary are clearly defined
2026-03-13 18:02:23 +08:00
lanceyq
668539e737
[add] Selective merge submission
2026-03-13 15:47:53 +08:00
Eternity
b71bc1f875
feat(multimodel): support multimodal memory display and improve code style
2026-03-13 14:47:56 +08:00
lanceyq
5438d35f17
[add] Specify the error types and clearly define the downgrade conditions
2026-03-09 16:19:55 +08:00
lanceyq
21ae448ed7
[add] Throw out explicit error messages; Using the CST time zone
2026-03-09 14:58:03 +08:00
lanceyq
50466124c8
[add] Verification of the existence of interest distribution
2026-03-09 14:57:22 +08:00
Ke Sun
c8065b0c60
feat(implicit-emotions): add Redis resilience and connection pooling
...
- Replace single Redis client with connection pool for better concurrency and auto-reconnection
- Add graceful degradation when Redis is unavailable (None handling in get_users_needing_refresh)
- Add RedisError exception handling with fallback to process all users on mget failures
- Add type hints (Optional[redis.StrictRedis]) to Redis client parameters
- Add health check and socket timeout configuration to connection pool
- Add logging for Redis connection failures and degradation events
- Reorganize imports alphabetically for consistency across both files
- Update get_sync_redis_client to validate connection with ping() before returning
2026-03-09 14:12:53 +08:00
lanceyq
476632294f
[changes] Remove the "worker-ondemand" queue
2026-03-09 14:02:23 +08:00
lanceyq
cef14cda9e
[add] Standardize time zones; Reuse a single Redis client; Use "mget" for batch writing requests
2026-03-07 16:36:24 +08:00
lanceyq
c14f067afb
[add] The "update-implicit-emotions-storage" task uses the timeline to filter the updated data users.
2026-03-07 16:23:59 +08:00
lanceyq
2612abc9d0
[add] Create a Celery task for checking the existence of the "implicit_emotions" data
2026-03-07 13:56:15 +08:00
Mark
404f78af0f
Merge tag 'v0.2.5-hotfix-1' into develop
...
v2.0.5-hotfix
# Conflicts:
# api/app/cache/__init__.py
# api/app/cache/memory/__init__.py
# api/app/celery_app.py
# api/app/core/config.py
# web/src/api/memory.ts
# web/src/views/Workflow/components/Chat/Chat.tsx
2026-03-05 14:37:35 +08:00
lixiangcheng1
f78f59ec42
Merge branch 'feature/knowledge_lxc' into develop
2026-03-04 15:42:06 +08:00
Ke Sun
aa69cd3a0c
Merge pull request #449 from SuanmoSuanyangTechnology/fix/time_task
...
[add] Set up scheduled tasks for existing and new users
2026-03-04 13:54:42 +08:00
lanceyq
7446241735
[changes] AI reviews and modifies the code
2026-03-04 12:34:24 +08:00
lanceyq
6033d37537
[changes] Implicit and emotional memories are stored in a database.
2026-03-04 12:34:24 +08:00
lanceyq
94836ed9af
[add] Set up scheduled tasks for existing and new users
2026-03-04 12:28:55 +08:00
lanceyq
006c6cd159
[changes] AI reviews and modifies the code
2026-03-03 15:33:38 +08:00
lanceyq
9675982555
[changes] Implicit and emotional memories are stored in a database.
2026-03-03 15:33:17 +08:00
Ke Sun
304ccef101
chore(api): organize imports and refactor database context management
2026-03-03 12:30:09 +08:00
lanceyq
3a36d038ee
[fix]Reconstructing memory incremental statistical scheduling task
2026-03-02 11:49:28 +08:00
lanceyq
a7ffc19ba1
[fix]Reconstructing memory incremental statistical scheduling task
2026-02-27 12:20:51 +08:00
lixiangcheng1
33238d34c9
[fix]Force re-importing Trio in child processes (to avoid inheriting the state of the parent process)
2026-02-26 10:17:44 +08:00
lixiangcheng1
2ef54168fc
Merge remote-tracking branch 'origin/feature/knowledge_lxc' into develop
2026-02-25 19:19:36 +08:00
lixiangcheng1
b33ccf00f9
[fix]Force re-importing Trio in child processes (to avoid inheriting the state of the parent process)
2026-02-25 19:09:52 +08:00