Files
aiagent/_check_agents.py
renjianbo beff3fac8d fix: delete agent 500 error + dynamic personality + deployment guide
- Fix delete agent 500: clean up FK records (agent_llm_logs, permissions,
  schedules, executions, team_members) and unbind goals/tasks before delete
- Remove hardcoded personality templates in Android, replace with dynamic
  system prompt generation from name + description
- Set promptSectionsEnabled=false to bypass PromptComposer for personality
- Add Tencent Cloud Linux deployment guide (Docker Compose)
- Accumulated backend service updates, frontend UI fixes, Android app changes

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-29 01:17:21 +08:00

77 lines
2.9 KiB
Python

import urllib.request
import json
BASE = "http://127.0.0.1:8037/api/v1"
# Login
req = urllib.request.Request(
f"{BASE}/auth/login",
data=b"username=admin&password=123456",
headers={"Content-Type": "application/x-www-form-urlencoded"}
)
token = json.loads(urllib.request.urlopen(req).read())["access_token"]
print(f"Token: {token[:50]}...")
# Get agents
req = urllib.request.Request(
f"{BASE}/agents?page_size=50",
headers={"Authorization": f"Bearer {token}"}
)
data = json.loads(urllib.request.urlopen(req).read())
agents = data if isinstance(data, list) else data.get("data", [])
print(f"\nTotal agents: {len(agents)}")
# Team members to check
team_members = {
"architect": "7ae1ace0-d2a6-4e55-855c-678489700b2b",
"test_planner": "705811aa-32dd-44fc-ada6-069414ceb25e",
"functional_tester": "d271d75f-f2c1-4b5c-94b5-0cdd0bc14d5a",
"ux_reviewer": "75b295a7-3031-4e8c-bf61-8299e7e19b56",
"edge_explorer": "f7305b12-fb1a-438c-a8fc-08dc5ce4e086",
"performance_evaluator": "a3dde5d4-1ae3-4223-bed0-9c9fd7ababf8",
}
for role, aid in team_members.items():
try:
req = urllib.request.Request(
f"{BASE}/agents/{aid}",
headers={"Authorization": f"Bearer {token}"}
)
agent = json.loads(urllib.request.urlopen(req).read())
if "error" in agent:
print(f"\n[{role}] ERROR: {agent.get('message')}")
# Search by name
matching = [a for a in agents if role in a.get("name","").lower() or role in a.get("description","").lower()]
if matching:
a = matching[0]
print(f" Found by search: {a['name']} ({a['id'][:12]}...)")
agent = a
else:
continue
name = agent.get("name", "?")
wc = agent.get("workflow_config")
nodes = wc.get("nodes", []) if wc else []
llm = [n for n in nodes if n.get("type") == "llm"]
if llm:
nd = llm[0]["data"]
tools = nd.get("selected_tools", [])
print(f"\n{'='*60}")
print(f"[{role}] {name}")
print(f" Model: {nd.get('model')} | Temp: {nd.get('temperature')} | MaxIter: {nd.get('max_iterations')}")
print(f" Tools ({len(tools)}): {tools}")
prompt = nd.get("prompt", "")
print(f" Prompt length: {len(prompt)} chars")
# Key instructions
for kw in ["file_read", "grep", "scan", "directory", "源码", "Android"]:
if kw.lower() in prompt.lower():
idx = prompt.lower().find(kw.lower())
snippet = prompt[max(0,idx-30):idx+100].replace('\n', ' ')[:130]
print(f" [{kw}]: ...{snippet}...")
else:
print(f"\n[{role}] {name} - No LLM node found")
print(f" workflow_config: {json.dumps(wc, ensure_ascii=False)[:300] if wc else 'NONE'}")
except Exception as e:
print(f"\n[{role}] Exception: {e}")