Skip to content

Commit 232a1bb

Browse files
committed
feat(profile-helper): decouple profile-helper from agent-links
- Revert profile_helper/agent.py to 7322752: remove system_prompt param that was added solely to serve agent-links needs. - Revert profile_helper/sessions.py to 7322752: remove list_ids() that was added solely to serve agent-links needs. - Add internal session registry (_active_session_ids, register_session, get_active_ids) in agent_links_runtime so agent-links owns its own active-session tracking, independent of profile_helper internals. - Replace all profile_sessions.list_ids() calls in agent_links API with agent_links_runtime.get_active_ids(). Made-with: Cursor
1 parent 3537fe8 commit 232a1bb

4 files changed

Lines changed: 18 additions & 13 deletions

File tree

app/api/agent_links.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ def start_link_session(slug: str, req: StartLinkSessionRequest):
254254
sid,
255255
session,
256256
link,
257-
active_session_ids=set(profile_sessions.list_ids()),
257+
active_session_ids=agent_links_runtime.get_active_ids(),
258258
)
259259
welcome = link.get("welcome_message") or ""
260260
return StartLinkSessionResponse(
@@ -278,7 +278,7 @@ async def chat_via_agent_link(slug: str, req: LinkChatRequest):
278278
session_id,
279279
session,
280280
link,
281-
active_session_ids=set(profile_sessions.list_ids()),
281+
active_session_ids=agent_links_runtime.get_active_ids(),
282282
)
283283

284284
model = req.model or link.get("default_model") or None
@@ -331,7 +331,7 @@ async def upload_workspace_file(
331331
sid,
332332
session,
333333
link,
334-
active_session_ids=set(profile_sessions.list_ids()),
334+
active_session_ids=agent_links_runtime.get_active_ids(),
335335
)
336336
filename = (file.filename or "").strip()
337337
if not filename:

app/services/agent_links_runtime.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,19 @@
1212
from app.models.schemas import DEFAULT_ALLOWED_TOOLS
1313
from app.services.profile_helper.prompts import META_SYSTEM_PROMPT
1414

15+
# Internal registry of active agent-link session IDs — independent from profile_helper.
16+
_active_session_ids: set[str] = set()
17+
18+
19+
def register_session(session_id: str) -> None:
20+
"""Mark a session as active so its workspace is not cleaned up."""
21+
_active_session_ids.add(session_id)
22+
23+
24+
def get_active_ids() -> set[str]:
25+
"""Return the set of currently registered active session IDs."""
26+
return set(_active_session_ids)
27+
1528

1629
def _session_root() -> Path:
1730
root = get_workspace_base() / "agent_links_sessions"
@@ -37,6 +50,7 @@ def ensure_session_workspace(
3750
active_session_ids: set[str] | None = None,
3851
) -> str:
3952
"""Ensure per-session workspace exists and return its absolute path."""
53+
register_session(session_id)
4054
if active_session_ids is not None:
4155
_cleanup_orphans(active_session_ids)
4256

app/services/profile_helper/agent.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -118,29 +118,26 @@ def run_agent(
118118
*,
119119
stream: bool = False,
120120
model: str | None = None,
121-
system_prompt: str | None = None,
122121
):
123122
"""
124123
Run agent loop. session is from sessions.get().
125124
If stream=True, yield each chunk; else yield full reply.
126125
model: optional override for this request; defaults to AI_GENERATION_MODEL.
127-
system_prompt: optional override for system prompt.
128126
"""
129127
client = create_client()
130128
if not client:
131129
yield "错误:未配置 AI 生成 API。请在 .env 中设置 AI_GENERATION_BASE_URL 和 AI_GENERATION_API_KEY。"
132130
return
133131

134132
model = model or get_default_model()
135-
prompt_text = system_prompt or META_SYSTEM_PROMPT
136133
messages = session["messages"].copy()
137134
messages.append({"role": "user", "content": user_message})
138135

139136
max_iterations = 20
140137
for _ in range(max_iterations):
141138
response = client.chat.completions.create(
142139
model=model,
143-
messages=[{"role": "system", "content": prompt_text}] + messages,
140+
messages=[{"role": "system", "content": META_SYSTEM_PROMPT}] + messages,
144141
tools=_build_tools(),
145142
tool_choice="auto",
146143
)

app/services/profile_helper/sessions.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,3 @@ def reset(session_id: str) -> dict:
8282
"""Reset session: clear messages and restore template profile."""
8383
_sessions[session_id] = _new_session()
8484
return _sessions[session_id]
85-
86-
87-
def list_ids() -> list[str]:
88-
"""List current active session IDs after best-effort cleanup."""
89-
_cleanup()
90-
return list(_sessions.keys())

0 commit comments

Comments
 (0)