Skip to content
2 changes: 2 additions & 0 deletions assets/migrate/0012_add_quote_id_to_room_messages.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ALTER TABLE room_messages ADD COLUMN quote_id INTEGER;
CREATE INDEX IF NOT EXISTS ix_room_messages_quote_id ON room_messages (quote_id);
2 changes: 1 addition & 1 deletion frontend
3 changes: 2 additions & 1 deletion src/controller/roomController.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ class UpdateAgentsRequest(BaseModel):
class SendMessageRequest(BaseModel):
content: str | None = None
insert_immediately: bool = False
quote_id: int | None = None


class RoomApiResponse(BaseModel):
Expand Down Expand Up @@ -229,7 +230,7 @@ async def post(self, room_id_str: str) -> None:
error_code="immediate_insert_driver_not_supported",
)

await room.add_message(room.OPERATOR_MEMBER_ID, content, insert_immediately=request.insert_immediately)
await room.add_message(room.OPERATOR_MEMBER_ID, content, insert_immediately=request.insert_immediately, quote_id=request.quote_id)
if room.get_current_turn_agent_id() == room.OPERATOR_MEMBER_ID:
await room.handle_finish_request(room.OPERATOR_MEMBER_ID)
self.return_success()
Expand Down
2 changes: 2 additions & 0 deletions src/dal/db/gtRoomMessageManager.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ async def append_room_message(
send_time: datetime,
insert_immediately: bool = False,
seq: int | None = None,
quote_id: int | None = None,
) -> GtRoomMessage:
return await GtRoomMessage.aio_create(
room_id=room_id,
Expand All @@ -21,6 +22,7 @@ async def append_room_message(
send_time=send_time,
insert_immediately=insert_immediately,
seq=seq,
quote_id=quote_id,
)


Expand Down
13 changes: 13 additions & 0 deletions src/model/dbModel/gtRoomMessage.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,22 @@ class GtRoomMessage(DbModelBase):
insert_immediately: bool = peewee.BooleanField(null=False, default=False)
# V20: 消息在房间内的显示顺序。immediately 消息在注入前为 NULL,注入时由 agentTurnRunner 赋值。
seq: int | None = peewee.IntegerField(null=True, default=None)
# V21: 引用消息 ID,指向同房间内的一条历史消息。NULL 表示无引用。
quote_id: int | None = peewee.IntegerField(null=True, default=None, index=True)

# 非数据库字段,不持久化;由业务代码在创建或恢复消息时手动赋值
sender_display_name: str = ""
# 非数据库字段:引用消息的摘要信息,发送消息时由业务代码填充
quote_sender_name: str = ""
quote_content_preview: str = ""

def to_json(self) -> dict:
"""序列化,包含非持久化字段(sender_display_name / quote_sender_name / quote_content_preview)。"""
data = super().to_json()
data["sender_display_name"] = self.sender_display_name
data["quote_sender_name"] = self.quote_sender_name
data["quote_content_preview"] = self.quote_content_preview
return data

class Meta:
table_name = "room_messages"
6 changes: 5 additions & 1 deletion src/route.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

import tornado.web

from controller import roleTemplateController, agentController, roomController, wsController, teamController, deptController, configController, activityController, settingController, systemController, initController, superviseController
from controller import roleTemplateController, agentController, roomController, wsController, teamController, deptController, configController, activityController, settingController, systemController, initController, superviseController, workspaceController

import sys as _sys
if getattr(_sys, "frozen", False):
Expand Down Expand Up @@ -124,6 +124,10 @@ def set_extra_headers(self, path: str) -> None:
(r"/agents/(\d+)/activities.json", activityController.AgentActivitiesHandler),
(r"/teams/(\d+)/activities.json", activityController.TeamActivitiesHandler),

# Workspace 文件访问
(r"/workspace/files/list.json", workspaceController.WorkspaceListHandler),
(r"/workspace/files/(.*)", workspaceController.WorkspaceFileHandler),

# 前端静态文件(必须放最后,SPA fallback)
(r"/(.*)", _SPAHandler, {"path": _FRONTEND_DIST, "default_filename": "index.html"}),

Expand Down
4 changes: 2 additions & 2 deletions src/service/agentService/prompts.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@

## 四、 协作风格与待命

1. **沟通风格**:自然融入对话。请用简短的 1-2 句话回复,保持对话紧凑
2. **协作闭环**:任务完成后,应主动在相关房间发送简短同步消息,说明完成情况、关键结果或当前阻塞。长期任务应分阶段同步。
1. **沟通风格**:自然融入对话。回复应简洁且包含实质内容——给出具体结论、方案或发现,避免仅回复空泛确认(如单独的"收到""好的")。如需详细说明,可适当展开
2. **协作闭环**:任务完成后,应主动在相关房间同步进展,内容须包含关键结果、具体发现或当前阻塞点。长期任务应分阶段同步,每次同步应说明已完成的步骤和下一步计划
3. **待命约束**:未收到明确任务时,**不要**捏造进展。如本轮无话可说,直接调用 `finish_action`。若上一轮已说明待命且无新任务,直接跳过无需重复。
4. **节制交流**:新房间刚创建时,简单问候即可。自我介绍后若无明确任务,请停止发言并跳过轮次。
'''
Expand Down
Loading