mirror of
https://github.com/agentscope-ai/ReMe.git
synced 2026-08-28 05:25:04 +00:00
feat(fs): update model configurations and enhance summarizer functionality
This commit is contained in:
parent
011cabc5f1
commit
e70d19a201
5 changed files with 85 additions and 18 deletions
|
|
@ -6,6 +6,7 @@ from pathlib import Path
|
|||
from ...core.enumeration import Role, ChunkEnum
|
||||
from ...core.op import BaseReactStream
|
||||
from ...core.schema import Message, StreamChunk
|
||||
from ...tool.fs import BashTool, LsTool, ReadTool, WriteTool, EditTool
|
||||
|
||||
|
||||
class FsCli(BaseReactStream):
|
||||
|
|
@ -52,7 +53,17 @@ class FsCli(BaseReactStream):
|
|||
|
||||
# Summarize current conversation and save to memory files
|
||||
current_date = datetime.now().strftime("%Y-%m-%d")
|
||||
summarizer = FsSummarizer(tools=self.tools, working_dir=self.working_dir)
|
||||
summarizer = FsSummarizer(
|
||||
tools=[
|
||||
BashTool(cwd=self.working_dir),
|
||||
LsTool(cwd=self.working_dir),
|
||||
ReadTool(cwd=self.working_dir),
|
||||
WriteTool(cwd=self.working_dir),
|
||||
EditTool(cwd=self.working_dir),
|
||||
],
|
||||
working_dir=self.working_dir,
|
||||
language=self.language,
|
||||
)
|
||||
|
||||
result = await summarizer.call(
|
||||
messages=self.messages,
|
||||
|
|
@ -113,7 +124,7 @@ class FsCli(BaseReactStream):
|
|||
left_messages = cut_result.get("left_messages", [])
|
||||
|
||||
# Step 2: Generate summary via Compactor
|
||||
compactor = FsCompactor()
|
||||
compactor = FsCompactor(language=self.language)
|
||||
summary_content = await compactor.call(
|
||||
messages_to_summarize=messages_to_summarize,
|
||||
turn_prefix_messages=turn_prefix_messages,
|
||||
|
|
|
|||
|
|
@ -13,8 +13,9 @@ from ...core.utils import format_messages
|
|||
class FsSummarizer(BaseReact):
|
||||
"""Retrieve personal memories through vector search and history reading."""
|
||||
|
||||
def __init__(self, memory_dir: str = "memory", version: str = "default", **kwargs):
|
||||
def __init__(self, working_dir: str, memory_dir: str = "memory", version: str = "default", **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
self.working_dir: str = working_dir
|
||||
self.memory_dir: str = memory_dir
|
||||
self.version: str = version
|
||||
|
||||
|
|
@ -29,6 +30,7 @@ class FsSummarizer(BaseReact):
|
|||
content=self.prompt_format(
|
||||
"user_message_default",
|
||||
conversation=format_messages(messages, add_index=False),
|
||||
working_dir=self.working_dir,
|
||||
date=date_str,
|
||||
memory_dir=self.memory_dir,
|
||||
),
|
||||
|
|
|
|||
|
|
@ -10,24 +10,78 @@ user_message: |
|
|||
If nothing to store, reply with [SILENT].
|
||||
|
||||
user_message_default: |
|
||||
Pre-compaction memory flush turn.
|
||||
The session is near auto-compaction; capture durable memories to disk.
|
||||
|
||||
Current Date: {date}
|
||||
Working Dir: {working_dir}
|
||||
|
||||
Store durable memories now (use {memory_dir}/YYYY-MM-DD.md).
|
||||
|
||||
Workflow:
|
||||
1. Use read_tool to read {memory_dir}/YYYY-MM-DD.md (if file doesn't exist, read_tool tool will return an error)
|
||||
2. Intelligently merge new information with existing content (skip if file doesn't exist):
|
||||
- Avoid duplicating information that's already recorded
|
||||
- Enrich existing entries with new details when relevant
|
||||
- Maintain chronological order when applicable
|
||||
3. Write the updated content:
|
||||
- Use edit_tool to update specific sections when possible
|
||||
- Use write_tool to overwrite the entire file if major restructuring is needed
|
||||
4. Create {memory_dir}/ if it doesn't exist
|
||||
|
||||
Principles:
|
||||
- Always preserve timestamps, dates, and time-related context
|
||||
- Only add truly new or enriching information
|
||||
- Keep entries concise but complete
|
||||
- If nothing meaningful to store, reply with [SILENT]
|
||||
|
||||
|
||||
user_message_default_zh: |
|
||||
预压缩内存刷新轮次。
|
||||
当前会话即将进入自动压缩阶段;请将持久化记忆捕获并写入磁盘。
|
||||
|
||||
当前日期:{date}
|
||||
工作目录:{working_dir}
|
||||
|
||||
立即存储持久化记忆(使用路径 {memory_dir}/YYYY-MM-DD.md)。
|
||||
|
||||
工作流程:
|
||||
1. 使用 read_tool 读取 {memory_dir}/YYYY-MM-DD.md(如文件不存在,read_tool 会返回错误提示)
|
||||
2. 智能合并新信息与现有内容(若文件不存在则跳过合并):
|
||||
- 避免重复已记录的信息
|
||||
- 在相关时丰富现有条目的新细节
|
||||
- 在适用时保持时间顺序
|
||||
3. 写入更新后的内容:
|
||||
- 尽可能使用 edit_tool 更新特定部分
|
||||
- 如需大幅重构则使用 write_tool 覆盖整个文件
|
||||
4. 如 {memory_dir}/ 不存在则创建
|
||||
|
||||
原则:
|
||||
- 始终保留时间戳、日期和时间相关上下文
|
||||
- 仅添加真正新的或有丰富价值的信息
|
||||
- 保持条目简洁但完整
|
||||
- 若无有意义的内容可存储,请回复 [SILENT]
|
||||
|
||||
|
||||
user_message_v1: |
|
||||
<conversation>
|
||||
{conversation}
|
||||
</conversation>
|
||||
|
||||
The conversation is about to be compacted. Please extract persistent memories to disk.
|
||||
Current Date: {date}
|
||||
Working Dir: {working_dir}
|
||||
|
||||
Execution Flow:
|
||||
1. Determine if the conversation contains information worth storing
|
||||
- If no: Reply with reason + [SILENT]
|
||||
- If yes: Continue to step 2
|
||||
|
||||
2. Check file {memory_dir}/YYYY-MM-DD.md (use actual date)
|
||||
- File doesn't exist: Write new memories directly
|
||||
- File exists:
|
||||
a) Read existing content
|
||||
b) Compare and identify new/updated information
|
||||
c) Prefer edit_tool for precise additions (preserves existing content); write_tool overwrites entire file
|
||||
2. Use Read tool to read {memory_dir}/YYYY-MM-DD.md (use actual date)
|
||||
- If file doesn't exist (Read returns error): Write new memories directly
|
||||
- If file exists:
|
||||
a) Compare and identify new/updated information from the read content
|
||||
c) Prefer `edit_tool` for precise additions (preserves existing content); `write_tool` overwrites entire file
|
||||
d) If no new information: Reply with explanation + [SILENT]
|
||||
|
||||
Update Principles:
|
||||
|
|
@ -41,25 +95,25 @@ user_message_default: |
|
|||
|
||||
Please store persistent memories, keeping entries concise and well-structured.
|
||||
|
||||
user_message_default_zh: |
|
||||
user_message_v1_zh: |
|
||||
<conversation>
|
||||
{conversation}
|
||||
</conversation>
|
||||
|
||||
conversation即将压缩,请提取持久性记忆存储至磁盘。
|
||||
当前日期:{date}
|
||||
工作目录: {working_dir}
|
||||
|
||||
执行流程:
|
||||
1. 判断对话是否包含值得存储的信息
|
||||
- 若无:回复原因 + [SILENT]
|
||||
- 若有:继续步骤 2
|
||||
|
||||
2. 检查文件 {memory_dir}/YYYY-MM-DD.md(使用实际日期)
|
||||
- 文件不存在:直接写入新记忆
|
||||
2. 使用 Read 工具读取 {memory_dir}/YYYY-MM-DD.md(使用实际日期)
|
||||
- 文件不存在(Read 返回错误):直接使用 `write_tool` 写入新记忆
|
||||
- 文件已存在:
|
||||
a) 读取现有内容
|
||||
b) 对比识别新增/更新信息
|
||||
c) 优先使用 edit_tool 精准添加新信息(保留已有内容),write_tool 会覆盖整个文件
|
||||
a) 从读取的内容中对比识别新增/更新信息
|
||||
c) 优先使用 `edit_tool` 精准添加新信息(保留已有内容)
|
||||
d) 若无新信息:回复说明 + [SILENT]
|
||||
|
||||
更新原则:
|
||||
|
|
|
|||
|
|
@ -20,8 +20,7 @@ flows:
|
|||
llms:
|
||||
default:
|
||||
backend: openai
|
||||
# model_name: qwen3-30b-a3b-instruct-2507
|
||||
model_name: qwen3-next-80b-a3b-thinking
|
||||
model_name: qwen3-30b-a3b-instruct-2507
|
||||
# model_name: qwen3-30b-a3b-thinking-2507
|
||||
request_interval: 1
|
||||
# temperature: 0.0001
|
||||
|
|
|
|||
|
|
@ -4,7 +4,8 @@ llms:
|
|||
default:
|
||||
backend: openai
|
||||
# model_name: qwen3-30b-a3b-instruct-2507
|
||||
model_name: qwen3-30b-a3b-thinking-2507
|
||||
# model_name: qwen3-30b-a3b-thinking-2507
|
||||
model_name: qwen3-235b-a22b-thinking-2507
|
||||
request_interval: 1
|
||||
# temperature: 0.0001
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue