Commit graph

78 commits

Author SHA1 Message Date
jinliyl
37628ba524
refactor(truncation): improve file truncation logic (#184)
* refactor(file_store): simplify ChromaDB client initialization and improve file truncation logic

- Remove shutil import and _create_chroma_client method from chroma_file_store.py
- Directly initialize ChromaDB PersistentClient in start method without retry logic
- Reduce DEFAULT_MAX_BYTES from 100KB to 50KB in file_utils.py
- Update truncation notice format to provide clearer continuation instructions
- Add _truncate_fresh and _retruncate functions for better text truncation handling
- Replace inline truncation logic with dedicated function calls in file_utils.py
- Rename skills_tool_ids to md_file_tool_ids in tool_result_compactor.py
- Update file detection logic to identify any .md files instead of only skill.md
- Create comprehensive unit tests for truncation functionality in test_truncate_text_output.py

* chore(version): bump version to 0.3.1.6

- Update __version__ from 0.3.1.5 to 0.3.1.6 in __init__.py
2026-03-28 18:41:09 +08:00
Xinmin Zeng
bf79986f9c
fix: surface summarize/retrieve failures instead of masking them (#160)
* fix(memory): surface summarize and retrieve failures clearly

* fix(memory): make raise_exception configurable

* fix(tests): resolve flake8 and pylint errors in error handling tests

- Remove unnecessary sys.path.insert hack
- Add module/class/function docstrings
- Initialize call_kwargs in __init__ to fix W0201
- Suppress W0212 with inline pylint disable for _started access
- Remove unnecessary lambda wrappers (W0108)
2026-03-27 12:22:29 +08:00
jinliyl
dc8eab56a1
refactor(core): replace text truncation utilities with new marker system (#179)
* refactor(core): replace text truncation utilities with new marker system

- Remove old truncate_text_utils module and its exports
- Replace TRUNCATION_MARKER_START with _TRUNCATION_NOTICE_MARKER constant
- Update as_msg_stat.py to split content using new marker format
- Modify FileIO tool to use TRUNCATION_NOTICE_MARKER for continuation hints
- Change is_truncated function checks to use marker presence detection
- Move transformers dependency from main deps to light extra dependencies
- Update tool result compactor tests to verify marker instead of is_truncated calls

* feat(file_io): enhance file operations with path resolution and append functionality

- Add expanduser() to resolve file paths with ~ symbol
- Implement proper file existence and type validation in update_file
- Add new append_file method to append content to files
- Update truncation notice format for better readability
- Fix typo in error message from "provide" to "provided"
- Update transformers dependency in pyproject.toml
- Remove duplicate transformers dependency from light extras

* refactor(file_io): disable pylint too-many-return-statements warning

* perf(file_watcher): increase default polling delay and optimize watcher configuration

- Increased default poll_delay_ms from 1000ms to 2000ms to reduce CPU usage
- Removed force_polling parameter as it's no longer needed with updated polling strategy
- Simplified async watch configuration by removing conditional force_polling logic
- Reduced overall system resource consumption during file watching operations

* refactor(memory): update conversation log documentation in memory summary

- Changed "Raw conversation logs" to "Earlier conversation logs" for clarity
- Added warning note about potentially large dialog file sizes
- Improved formatting with additional line break for better readability
- Maintained existing compressed summary integration unchanged

* feat(memory): add long-term memory support to file-based memory system

- Initialize _long_term_memory attribute as empty string
- Add memories section to content when long-term memory exists
- Consolidate summary and memories into single user message
- Format memories with markdown header # Memories
- Maintain existing compressed summary functionality
- Join multiple content parts with double newlines
2026-03-26 12:10:24 +08:00
jinliyl
5b801c0d3e
refactor(file_io): update file I/O operations and truncation logic (#177)
* refactor(file_io): update file I/O operations and truncation logic

* refactor(memory): update file-based memory compaction logic
2026-03-25 20:21:37 +08:00
jinliyl
7b02c45218
style(memory): update message formatting and improve logging (#175)
* style(memory): update message formatting and improve logging

- Change default include_thinking parameter to True in as_msg_handler.py
- Replace angle brackets with square brackets for block formatting in as_msg_stat.py
- Add newline replacement in text truncation method in as_msg_stat.py
- Add loading duration timing to embedding cache loading in base_embedding_model.py
- Replace XML-style tags with markdown headers in compactor.py conversation format
- Update compactor.yaml prompts to reference markdown-style headers instead of XML tags
- Modify summarizer.py to use markdown-style conversation header format

* refactor(file-watcher): replace scan_on_start with rebuild_index_on_start parameter

- Replace scan_on_start and clear_on_start boolean parameters with single rebuild_index_on_start
- Update BaseFileWatcher constructor to use rebuild_index_on_start instead of two separate flags
- Modify initialization logic to clear and rescan when rebuild_index_on_start is True
- Remove scan_on_start parameter from CLI and light configuration files
- Update documentation to remove scan_on_start from quick start guides
- Rename all test methods and classes from scan_on_start to rebuild_index_on_start
- Add timezone-aware datetime helper method to summarizer component
- Format log message with proper line breaks for readability

* fix(core): resolve file watcher initialization issue and update version

- Fixed file watcher task creation to properly handle rebuild index on start logic
- Moved initialization and watch loop into async function to ensure proper execution order
- Updated package version from 0.3.1.1 to 0.3.1.2
- Added missing comma in embedding model logging statement

* fix(core): reduce max formatter text length limit

- Changed _DEFAULT_MAX_FORMATTER_TEXT_LENGTH from 2000 to 1000
- Updated constant value in as_msg_stat.py schema module

* fix(file-watcher): change default rebuild index behavior on start

- Changed rebuild_index_on_start parameter default from False to True
- This ensures index is rebuilt by default when file watcher starts
- Maintains consistent state initialization for file watching operations

* feat(compactor): add return_dict option and improve summary validation

- Add _is_valid_summary function to validate summary content format
- Introduce return_dict parameter to return structured results with validation
- Update prompt templates with clearer task descriptions and formatting rules
- Refactor update_user_message prompts to combine prefix and suffix logic
- Return dictionary with user_message, history_compact, and is_valid fields when enabled
- Add proper error handling for exception cases in memory compaction
- Maintain backward compatibility with string return when return_dict=False

* feat(memory): add thinking block configuration option

- Add add_thinking_block parameter to compactor component
- Pass include_thinking flag to message formatting in compactor
- Add add_thinking_block parameter to reme_light compact function
- Add add_thinking_block parameter to reme_light summarize function
- Add add_thinking_block parameter to summarizer component
- Pass include_thinking flag to message formatting in summarizer
- Remove previous-summary tags from compressed summary format
2026-03-24 00:20:15 +08:00
jinli.yl
b8619aaabc test(config): enable environment loading in test configuration 2026-03-20 15:22:28 +08:00
jinliyl
9a6cf2b994
Dev/token (#159)
* update

* refactor(memory): remove unnecessary type check and update error logging

* refactor(core): standardize logger import and update agentscope dependency

* fix(memory): disable console output and add logging for summarizer component

* feat(core): replace OpenAI token counter with custom ReMe token counter

- Replace OpenAITokenCounter with ReMeTokenCounter implementation
- Add support for HuggingFace mirror and configurable tokenizer
- Register ReMeTokenCounter as default token counter in registry
- Update config to use hf backend with Qwen2.5-7B-Instruct model

refactor(memory): convert token counting methods to async in message handlers

- Change count_str_token, stat_message, count_msgs_token to async methods
- Update format_msgs_to_str and context_check to use async token counting
- Modify _format_tool_result_output to support async token counting
- Adjust all dependent methods to await async token counting calls

feat(memory): add dialog persistence to in-memory storage

- Implement _append_messages_to_dialog for saving messages to JSONL files
- Add dialog_path parameter to ReMeInMemoryMemory constructor
- Persist messages to daily JSONL files based on timestamp grouping
- Update mark_messages_compressed to save and remove compressed messages
- Modify clear_content to persist all messages before clearing memory

refactor(ops): update token counter type hints and initialization

- Change BaseOp to use HuggingFaceTokenCounter instead of TokenCounterBase
- Update type annotations for as_token_counter property and parameters
- Remove direct token counter injection from Compactor and ContextChecker
- Pass as_token_counter parameter through service context mechanism

style(logging): improve error logging with exception details

- Replace logger.error with logger.exception in browser control tool
- Change logger.error to logger.exception in memory get tool error handling
- Add proper exception logging with stack trace information

chore(config): add token counter configuration to light YAML

- Add as_token_counters section with default hf backend configuration
- Configure Qwen/Qwen2.5-7B-Instruct model with mirror support enabled
- Set up pretrained_model_name_or_path and use_mirror parameters

test(context): update context check tests to async implementation

- Convert verify_context_check_invariants to async function
- Update context check test methods to use async calls
- Change stat_message calls to await async implementation
- Modify test_empty_messages and test_below_threshold_returns_all to async

* feat(core): implement context checking and memory management features

* refactor(core): replace direct loguru import with logger utility function

* refactor(reme): remove RuntimeContext dependency and simplify context checking

* feat(docs): add raw conversation persistence to ReMe framework
2026-03-17 11:07:31 +08:00
jinliyl
5e08aa48b8
refactor(memory): restructure file-based memory components and enhance message handling (#145) 2026-03-07 15:22:56 +08:00
jinliyl
d0c9d89092
feat(memory): add ContextChecker component for context size management (#144)
* feat(memory): add ContextChecker component for context size management

* refactor(memory): restructure file-based memory tools and update imports

* docs(readme): update documentation with detailed architecture and components

* docs(readme): update Chinese documentation with enhanced memory management diagrams

* refactor(cookbook): move cookbook files to test directory and clean up docs

* docs(readme): update link path for old version documentation

* docs(readme): update documentation with improved architecture diagrams and component details

* docs(readme): update documentation with improved clarity and structure

* refactor(docs): update in-memory memory documentation

* docs(readme): add experiment reproduction link to quickstart guide
2026-03-06 23:43:42 +08:00
jinli.yl
dcf97dc77f docs(readme): update documentation and examples 2026-03-06 16:34:04 +08:00
jinli.yl
a0d3120d53 fix(tests): update context check tests to handle additional return value 2026-03-06 16:18:50 +08:00
jinli.yl
46ffe42a40 feat(config): update ReMeLight initialization with default configurations 2026-03-06 15:50:47 +08:00
jinli.yl
32f9074235 refactor(memory): update import paths and enhance message token counting 2026-03-06 15:28:33 +08:00
jinli.yl
30278b4a4d style(tests): reorder imports in test_compactor.py 2026-03-06 02:09:55 +08:00
jinli.yl
22331ea963 refactor(tests): update test configurations and remove unused test file 2026-03-06 02:09:04 +08:00
jinli.yl
fc7b1cdba8 refactor(core): update registry registration syntax and improve code formatting 2026-03-06 01:57:29 +08:00
jinli.yl
3dc3c4bf52 feat(memory): replace memory formatter with AsMsgHandler for enhanced message processing 2026-03-05 20:27:24 +08:00
jinliyl
3347506e22
feat(file-watcher): add configurable retry for file watcher (#140)
* feat(file-watcher): enhance file watcher with robust path validation and interruptible sleep

* feat(file-watcher): enhance file watcher with robust path validation and interruptible sleep
2026-03-05 14:34:00 +08:00
jinliyl
9e2e98ef40
Dev/readme (#137)
* refactor(memory): rename copaw to reme and update module structure

* chore(release): bump version to 0.3.0.6b1

* refactor(docs): update README and ReMeLight implementation

* refactor(reme): rename ReMeCopaw to ReMeLight and remove CLI module

* docs(readme): update Chinese documentation with enhanced structure and content

* docs(readme): update Chinese documentation for context compression

* docs(readme): update context compression section header

* docs(readme): update documentation with installation and usage guide

* docs(readme): update Chinese documentation table

* chore(deps): update dependency extras configuration

* chore(test): remove deprecated test files for message operations

* docs(readme): update documentation with ReMeLight implementation changes
2026-03-04 18:43:21 +08:00
jinliyl
5584a5c239
feat(memory): add CoPaw file-based memory system with compaction and … (#134)
* feat(memory): add CoPaw file-based memory system with compaction and summarization

* feat(reme): add tool result cleanup and retention management

* fix(memory): resolve copaw memory processing and prompt formatting issues

* docs(reme_copaw): update documentation and initialization logic

* refactor(reme): remove override parameters from compact_tool_result

* feat(docs): update README to reflect CoPaw memory system integration

* chore(docs): update model names in documentation
2026-03-04 10:55:43 +08:00
jinli.yl
1d2cc36957 refactor(memory): integrate procedural memory into extension module 2026-02-27 14:55:00 +08:00
jinli.yl
e8d7c56739 feat(file_store): make embedding_model optional in base file store 2026-02-26 21:28:45 +08:00
jinli.yl
115373ab30 refactor(benchmark): remove unused llm config and update test parameters 2026-02-26 18:20:12 +08:00
jinli.yl
23f7c51a1a refactor(core): restructure application initialization and service context 2026-02-26 17:56:59 +08:00
jinli.yl
6efecf1a3e refactor(memory): rename fs components to fb and reorganize modules 2026-02-26 16:47:04 +08:00
jinli.yl
64b497e330 refactor(core): replace memory stores with file stores and update architecture 2026-02-26 14:18:12 +08:00
jinli.yl
e9757bccf6 refactor(core): restructure application initialization and component management 2026-02-24 19:45:47 +08:00
jinli.yl
48b1136707 refactor(memory_store): remove async executor for file operations and add metadata caching 2026-02-20 00:29:38 +08:00
jinli.yl
1cd957c14f feat(memory_store): add pure-python local memory store implementation 2026-02-19 23:58:54 +08:00
jinli.yl
71d36e61e4 feat(cli): add horse easter egg with fireworks and galloping animation 2026-02-15 20:25:57 +08:00
jinli.yl
cdda48aab4 feat(core): add async code execution and improve execution utilities 2026-02-14 21:27:04 +08:00
jinli.yl
52d21392f2 feat(store): add ChromaDB memory store implementation with hybrid search 2026-02-12 20:34:50 +08:00
jinli.yl
eae6c63d15 feat(cli): add ReMeCli class with interactive chat functionality 2026-02-11 17:23:15 +08:00
jinli.yl
700f09c088 chore(tests): remove memory path from console output in fs summary tests 2026-02-10 03:12:59 +08:00
jinli.yl
c98050dc0d feat(config): switch to thinking model and enhance memory system 2026-02-10 03:12:19 +08:00
jinli.yl
0692023379 refactor(core): rename API base parameters and remove snippet character limit 2026-02-10 00:30:06 +08:00
jinli.yl
82337ead33 feat(file-watcher): add file watching functionality with error handling 2026-02-08 21:37:55 +08:00
jinli.yl
0c23a3ac66 feat(core): add memory storage and context checking capabilities 2026-02-08 19:24:53 +08:00
jinli.yl
1a35150648 feat(core): add config path parameter and enhance fs cli capabilities 2026-02-08 04:56:10 +08:00
jinli.yl
f0bc2da7b0 feat(chat): add FsCli chat agent with streaming capabilities 2026-02-08 03:05:11 +08:00
jinli.yl
55d61f1dc5 refactor(core): update registry naming and application configuration 2026-02-07 15:05:02 +08:00
jinli.yl
de28c8e243 refactor(core): rename memory_storage to memory_store and add base fs tool 2026-02-07 03:37:12 +08:00
jinli.yl
c8bbb54de1 feat(utils): add cosine similarity functions and integrate into vector operations 2026-02-06 17:45:59 +08:00
jinli.yl
bc5e87db5f refactor(vector_store): simplify search method signature and remove threshold parameter 2026-02-06 16:53:57 +08:00
jinli.yl
b0b800fbd8 feat(vector-store): add threshold-based filtering to vector search 2026-02-06 15:52:09 +08:00
jinli.yl
c5438c52fc feat(memory): implement file watcher with delta and full sync strategies 2026-02-06 01:58:28 +08:00
jinli.yl
857cd52a8e feat(memory): add memory management and file system tools 2026-02-03 22:29:45 +08:00
jinli.yl
4159cfc51c feat(memory): add ReadHistoryV2 tool with enhanced history retrieval capabilities 2026-02-02 17:14:16 +08:00
jinli.yl
6a7396732b feat(reme): add comprehensive memory management API 2026-01-31 03:40:38 +08:00
jinli.yl
3680571c94 refactor(core): simplify component registration and improve application lifecycle management 2026-01-31 01:05:31 +08:00