Skip to content

Commit 2aef830

Browse files
committed
fix(core): message index, eil log
1 parent 1ae1d51 commit 2aef830

6 files changed

Lines changed: 24 additions & 25 deletions

File tree

src/server/core/acontext_core/llm/agent/task.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
from ...util.generate_ids import track_process
1414
from ..tool.task_lib.ctx import TaskCtx
1515
from ..tool.task_lib.insert import _insert_task_tool
16-
from ...schema.llm import LLMResponse
1716

1817
NEED_UPDATE_CTX = {
1918
_insert_task_tool.schema.function.name,
@@ -94,8 +93,6 @@ async def task_agent_curd(
9493
if eil:
9594
return r
9695
_messages.append(response_to_sendable_message(llm_return))
97-
if eil:
98-
return r
9996
LOG.info(f"LLM Response: {llm_return.content}...")
10097
if not llm_return.tool_calls:
10198
LOG.info("No tool calls found, stop iterations")

src/server/core/acontext_core/llm/tool/task_lib/append.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ async def _append_messages_to_task_handler(
2626
)
2727
actually_task_id = ctx.task_ids_index[task_order - 1]
2828
actually_message_ids = [
29-
ctx.message_ids_index[i - 1]
29+
ctx.message_ids_index[i]
3030
for i in message_order_indexes
31-
if i <= len(ctx.message_ids_index)
31+
if i < len(ctx.message_ids_index)
3232
]
3333
if not actually_message_ids:
3434
return Result.resolve(

src/server/core/acontext_core/schema/config.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55

66

77
class ProjectConfig(BaseModel):
8+
project_session_message_use_previous_messages_turns: int = 3
89
project_session_message_buffer_max_turns: int = 6
10+
project_session_message_buffer_max_overflow_turns: int = 18
911
project_session_message_buffer_ttl_seconds: int = 10
1012

1113

src/server/core/acontext_core/service/controller/message.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,34 +3,37 @@
33
from ...schema.session.task import TaskStatus
44
from ...schema.session.message import MessageBlob
55
from ...schema.utils import asUUID
6+
from ...llm.agent import task as AT
67
from ...schema.result import ResultError
78
from ...env import LOG, DEFAULT_CORE_CONFIG
8-
from ...llm.agent import task as AT
9+
from ...schema.config import ProjectConfig
910

1011

11-
async def process_session_pending_message(session_id: asUUID):
12+
async def process_session_pending_message(
13+
project_config: ProjectConfig, session_id: asUUID
14+
):
1215
pending_message_ids = None
1316
try:
1417
async with DB_CLIENT.get_session_context() as session:
1518
r = await MD.unpending_session_messages_to_running(session, session_id)
1619
pending_message_ids, eil = r.unpack()
1720
if eil:
18-
LOG.error(f"Exception while unpending session messages: {eil}")
1921
return
2022

2123
async with DB_CLIENT.get_session_context() as session:
2224
r = await MD.fetch_messages_data_by_ids(session, pending_message_ids)
2325
messages, eil = r.unpack()
2426
if eil:
25-
LOG.error(f"Exception while fetching session messages: {eil}")
2627
return
2728

2829
r = await MD.fetch_previous_messages_by_datetime(
29-
session, session_id, messages[0].created_at, limit=1
30+
session,
31+
session_id,
32+
messages[0].created_at,
33+
limit=project_config.project_session_message_use_previous_messages_turns,
3034
)
3135
previous_messages, eil = r.unpack()
3236
if eil:
33-
LOG.error(f"Exception while fetching previous messages: {eil}")
3437
return
3538
messages_data = [
3639
MessageBlob(message_id=m.id, role=m.role, parts=m.parts)

src/server/core/acontext_core/service/data/message.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -116,9 +116,6 @@ async def fetch_messages_data_by_ids(
116116
for message, parts_result in zip(ordered_messages, parts_results):
117117
d, eil = parts_result.unpack()
118118
if eil:
119-
LOG.error(
120-
f"Exception while fetching parts for message {message.id}: {eil}"
121-
)
122119
message.parts = None
123120
continue
124121
message.parts = d
@@ -161,19 +158,20 @@ async def fetch_session_messages(
161158
return await fetch_messages_data_by_ids(db_session, message_ids)
162159

163160

164-
async def get_latest_message_ids(
161+
async def get_message_ids(
165162
db_session: AsyncSession,
166163
session_id: asUUID,
167164
status: str = "pending",
168165
limit: int = 1,
166+
asc: bool = False,
169167
) -> Result[List[asUUID]]:
170168
query = (
171169
select(Message.id)
172170
.where(
173171
Message.session_id == session_id,
174172
Message.session_task_process_status == status,
175173
)
176-
.order_by(Message.created_at.desc())
174+
.order_by(Message.created_at.asc() if asc else Message.created_at.desc())
177175
.limit(limit)
178176
)
179177

src/server/core/acontext_core/service/session_message.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,9 @@ async def waiting_for_message_notify(wait_for_seconds: int, body: InsertNewMessa
6161
async def insert_new_message(body: InsertNewMessage, message: Message):
6262
LOG.debug(f"Insert new message {body.message_id}")
6363
async with DB_CLIENT.get_session_context() as read_session:
64-
r = await MD.get_latest_message_ids(read_session, body.session_id)
64+
r = await MD.get_message_ids(read_session, body.session_id)
6565
message_ids, eil = r.unpack()
6666
if eil:
67-
LOG.error(f"Exception while fetching session messages: {eil}")
6867
return
6968
if not len(message_ids):
7069
LOG.debug(f"No pending message found for session {body.session_id}, ignore")
@@ -79,13 +78,11 @@ async def insert_new_message(body: InsertNewMessage, message: Message):
7978
r = await PD.get_project_config(read_session, body.project_id)
8079
project_config, eil = r.unpack()
8180
if eil:
82-
LOG.error(f"Exception while fetching project config: {eil}")
8381
return
8482

8583
r = await MD.session_message_length(read_session, body.session_id)
8684
pending_message_length, eil = r.unpack()
8785
if eil:
88-
LOG.error(f"Exception while fetching session messages: {eil}")
8986
return
9087
if (
9188
pending_message_length
@@ -110,14 +107,13 @@ async def insert_new_message(body: InsertNewMessage, message: Message):
110107
routing_key=RK.session_message_insert_retry,
111108
body=body.model_dump_json(),
112109
)
113-
114110
return
115111

116112
try:
117113
LOG.info(
118114
f"Session message buffer is full (size: {pending_message_length}), start process"
119115
)
120-
await MC.process_session_pending_message(body.session_id)
116+
await MC.process_session_pending_message(project_config, body.session_id)
121117
finally:
122118
await release_session_message_lock(str(body.session_id))
123119

@@ -145,10 +141,9 @@ async def insert_new_message(body: InsertNewMessage, message: Message):
145141
)
146142
async def buffer_new_message(body: InsertNewMessage, message: Message):
147143
async with DB_CLIENT.get_session_context() as session:
148-
r = await MD.get_latest_message_ids(session, body.session_id)
144+
r = await MD.get_message_ids(session, body.session_id)
149145
message_ids, eil = r.unpack()
150146
if eil:
151-
LOG.error(f"Exception while fetching latest message id {eil}")
152147
return
153148
if not len(message_ids):
154149
LOG.debug(f"No pending message found for session {body.session_id}, ignore")
@@ -159,6 +154,10 @@ async def buffer_new_message(body: InsertNewMessage, message: Message):
159154
f"Message {body.message_id} is not the latest pending message, ignore"
160155
)
161156
return
157+
r = await PD.get_project_config(session, body.project_id)
158+
project_config, eil = r.unpack()
159+
if eil:
160+
return
162161
LOG.info(f"Message {body.message_id} IDLE, process it now")
163162
_l = await check_session_message_lock_or_set(str(body.session_id))
164163
if not _l:
@@ -172,6 +171,6 @@ async def buffer_new_message(body: InsertNewMessage, message: Message):
172171
)
173172
return
174173
try:
175-
await MC.process_session_pending_message(body.session_id)
174+
await MC.process_session_pending_message(project_config, body.session_id)
176175
finally:
177176
await release_session_message_lock(str(body.session_id))

0 commit comments

Comments
 (0)