fix agent: user-scoped conversation history + stricter _find_project matching
This commit is contained in:
parent
255f41c780
commit
053b71ae95
@ -48,12 +48,21 @@ def _guess_role(title):
|
||||
|
||||
async def _find_project(sor, name):
|
||||
if not name: return None
|
||||
# Exact match first
|
||||
recs = await sor.sqlExe("SELECT id,name FROM sd_projects WHERE name=${n}$",{"n":name})
|
||||
if recs: return recs[0]
|
||||
# Fuzzy match — require keyword >= 2 chars, prefer prefix match
|
||||
kw = name.lower().strip()
|
||||
if len(kw) < 2: return None
|
||||
allp = await sor.sqlExe("SELECT id,name FROM sd_projects ORDER BY created_at DESC",{})
|
||||
kw = name.lower()
|
||||
# First pass: name starts with kw
|
||||
for r in (allp or []):
|
||||
if kw in (getattr(r,'name','') or '').lower(): return r
|
||||
rn = (getattr(r,'name','') or '').lower()
|
||||
if rn.startswith(kw): return r
|
||||
# Second pass: kw is a word in name (split by common delimiters)
|
||||
for r in (allp or []):
|
||||
rn = (getattr(r,'name','') or '').lower()
|
||||
if kw in rn: return r
|
||||
return None
|
||||
|
||||
async def _load_ctx(sor, uid):
|
||||
@ -224,7 +233,7 @@ if action == 'send_message':
|
||||
env_text = f"项目: {ctx['pname'] or '未选择'}\n仓库: {repos_str}"
|
||||
system = AGENT_PROMPT.replace('__TOOLS__',TOOLS_TEXT).replace('__ENV__',env_text)
|
||||
msgs = [{"role":"system","content":system}]
|
||||
for h in (await sor.sqlExe("SELECT role,content FROM pipeline_conversations ORDER BY created_at ASC LIMIT 20",{}) or []):
|
||||
for h in (await sor.sqlExe("SELECT role,content FROM pipeline_conversations WHERE created_by=${u}$ ORDER BY created_at ASC LIMIT 20",{"u":uid}) or []):
|
||||
msgs.append({"role":'user' if getattr(h,'role','')=='user' else 'assistant',"content":getattr(h,'content','')})
|
||||
msgs.append({"role":"user","content":message_text})
|
||||
await sor.C('pipeline_conversations',{'id':getID(),'role':'user','content':message_text,'msg_type':'text','org_id':org_id,'created_by':uid})
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user