Files
aiagent/scripts/seed_more_skills.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

318 lines
19 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import urllib.request, json, urllib.parse
import pymysql
BASE = "http://localhost:8037/api/v1"
def api(method, path, token, body=None):
url = BASE + path
data = json.dumps(body).encode() if body else None
req = urllib.request.Request(url, data=data, method=method,
headers={'Authorization': f'Bearer {token}', 'Content-Type': 'application/json'})
try:
resp = urllib.request.urlopen(req)
return json.loads(resp.read())
except urllib.error.HTTPError as e:
print(f" HTTP {e.code}: {e.read().decode()[:200]}")
return None
# Login
data = urllib.parse.urlencode({'username':'admin','password':'123456'}).encode()
req = urllib.request.Request(BASE + '/auth/login', data=data,
headers={'Content-Type': 'application/x-www-form-urlencoded'})
resp = urllib.request.urlopen(req)
token = json.loads(resp.read())['access_token']
# Get existing agents
all_agents = api('GET', '/agents?skip=0&limit=100', token)
existing_names = {a['name'] for a in all_agents} if all_agents else set()
def make_workflow(label, tools, system_prompt, model="deepseek-v4-flash", provider="deepseek"):
return {
"edges": [
{"id": "e_start", "source": "start-1", "target": "agent-1", "sourceHandle": "right", "targetHandle": "left"},
{"id": "e_end", "source": "agent-1", "target": "end-1", "sourceHandle": "right", "targetHandle": "left"}
],
"nodes": [
{"id": "start-1", "data": {"label": "开始"}, "type": "start", "position": {"x": 80, "y": 200}},
{"id": "agent-1", "data": {
"label": label, "model": model, "tools": tools, "provider": provider,
"temperature": 0.7, "memory": True, "system_prompt": system_prompt,
"max_iterations": 10
}, "type": "agent", "position": {"x": 350, "y": 200}},
{"id": "end-1", "data": {"label": "结束"}, "type": "end", "position": {"x": 620, "y": 200}}
]
}
skills = [
# ─── 更多 chat_assistant ───
{
"name": "心理倾听伴侣",
"description": "专业的AI心理倾听师提供情绪疏导、压力管理和心理健康建议。非医疗诊断适合日常倾诉和情绪管理保护隐私安全。",
"category": "chat_assistant",
"tags": ["心理", "倾听", "情绪"],
"tools": ["text_analyze", "datetime", "web_search"],
"system_prompt": "你是一个温暖的心理倾听伴侣。你需要1. 耐心倾听用户的倾诉,不打断、不评判 2. 用共情的方式回应,让用户感受到被理解 3. 适当引导积极思考,但绝不强迫 4. 遇到严重心理问题,建议寻求专业帮助",
"is_featured": False,
},
{
"name": "法律咨询助手",
"description": "提供常见法律问题咨询,涵盖劳动法、合同法、婚姻法、消费者权益等领域。自动检索相关法条和案例,仅供法律信息参考。",
"category": "chat_assistant",
"tags": ["法律", "咨询", "法条"],
"tools": ["web_search", "file_read", "text_analyze", "knowledge_graph_search"],
"system_prompt": "你是一个法律信息咨询助手。你需要1. 理解用户的法律问题 2. 检索相关法律法规和案例 3. 用通俗语言解释法律概念 4. 声明你的建议仅供参考,重要事项请咨询专业律师",
"is_featured": False,
},
{
"name": "旅行规划师",
"description": "个性化旅行行程规划,根据预算、时间、偏好自动生成详细行程单。包含交通、住宿、景点、美食推荐,支持多日行程自动优化编排。",
"category": "chat_assistant",
"tags": ["旅行", "规划", "行程"],
"tools": ["web_search", "datetime", "json_process", "file_write", "pdf_generate"],
"system_prompt": "你是一个资深旅行规划师。你需要1. 了解用户的预算、时间、兴趣偏好 2. 搜索目的地信息和交通方式 3. 生成详细的行程安排 4. 提供实用旅行小贴士",
"is_featured": True,
},
{
"name": "健身教练Agent",
"description": "个性化健身计划定制,根据身体数据、目标和可用设备生成训练方案。包含力量训练、有氧运动、拉伸放松,提供饮食建议和进度追踪。",
"category": "chat_assistant",
"tags": ["健身", "教练", "健康"],
"tools": ["web_search", "task_plan", "datetime", "math_calculate", "file_write"],
"system_prompt": "你是一个专业健身教练。你需要1. 了解用户的身体状况和健身目标 2. 设计科学的训练计划 3. 讲解正确的动作要领,避免受伤 4. 提供合理的营养建议",
"is_featured": False,
},
{
"name": "面试模拟官",
"description": "模拟技术/管理/HR面试场景针对不同岗位和级别生成个性化面试题。提供实时反馈和改进建议支持录音回顾和表现评分。",
"category": "chat_assistant",
"tags": ["面试", "模拟", "职场"],
"tools": ["web_search", "text_analyze", "file_write", "task_plan"],
"system_prompt": "你是一个专业面试官。你需要1. 根据目标岗位生成合适的面试题 2. 模拟真实面试氛围提问和追问 3. 给出客观的评价和改进建议 4. 帮助用户提升面试技巧和自信",
"is_featured": False,
},
{
"name": "儿童故事大王",
"description": "为儿童创作个性化故事,根据年龄、兴趣和主题生成富有想象力的故事。支持故事配音朗读,可融入教育元素如数字、字母、品德教育等。",
"category": "chat_assistant",
"tags": ["儿童", "故事", "教育"],
"tools": ["text_to_speech", "web_search", "random_generate"],
"system_prompt": "你是一个儿童故事创作大师。你需要1. 根据孩子年龄和兴趣定制故事 2. 故事要有趣、有教育意义 3. 语言生动活泼,适合朗读 4. 可以加入互动元素让孩子参与",
"is_featured": False,
},
# ─── 更多 data_processing ───
{
"name": "财报分析专家",
"description": "自动解析企业财务报表(利润表、资产负债表、现金流量表),计算关键财务指标,生成可视化分析报告。支持同比环比分析和行业对标。",
"category": "data_processing",
"tags": ["财务", "报表", "分析"],
"tools": ["excel_process", "math_calculate", "json_process", "file_read", "file_write", "pdf_generate"],
"system_prompt": "你是一个资深财务分析师。你需要1. 使用excel_process读取财务报表 2. 计算ROE、毛利率、流动比率等关键指标 3. 分析财务趋势和风险点 4. 生成专业的分析报告",
"is_featured": False,
},
{
"name": "用户画像构建器",
"description": "基于用户行为数据自动构建用户画像。支持多维度标签体系,自动聚类分群,生成可视化用户画像卡片,适用于精准营销和产品优化。",
"category": "data_processing",
"tags": ["用户画像", "分群", "营销"],
"tools": ["excel_process", "database_query", "math_calculate", "json_process", "text_analyze"],
"system_prompt": "你是一个用户画像分析专家。你需要1. 分析用户行为数据 2. 构建多维用户标签体系 3. 自动聚类分群 4. 生成可视化用户画像报告",
"is_featured": False,
},
{
"name": "舆情监控分析员",
"description": "实时监控社交媒体、新闻、论坛等渠道的舆情动态。自动情感分析、热点追踪、负面预警,生成舆情日报和趋势预测报告。",
"category": "data_processing",
"tags": ["舆情", "监控", "情感分析"],
"tools": ["web_search", "text_analyze", "browser_use", "json_process", "file_write", "send_email"],
"system_prompt": "你是一个舆情分析师。你需要1. 使用web_search和browser_use监控舆情 2. 使用text_analyze进行情感分析 3. 识别负面舆情并及时预警 4. 生成舆情分析报告",
"is_featured": False,
},
{
"name": "竞品分析助手",
"description": "自动化竞品信息收集和分析从多维度对比产品功能、定价、市场策略。生成SWOT分析和竞争矩阵提供策略建议。",
"category": "data_processing",
"tags": ["竞品", "分析", "市场"],
"tools": ["web_search", "browser_use", "text_analyze", "json_process", "excel_process", "file_write"],
"system_prompt": "你是一个竞品分析专家。你需要1. 收集目标竞品信息 2. 从功能、价格、用户体验多维度对比 3. 生成SWOT分析矩阵 4. 提供差异化策略建议",
"is_featured": False,
},
# ─── 更多 automation ───
{
"name": "定时报表机器人",
"description": "定时自动生成业务报表并推送。支持日报/周报/月报模板,自动关联数据库查询,图表自动生成,通过邮件或飞书定时发送。",
"category": "automation",
"tags": ["报表", "定时", "推送"],
"tools": ["schedule_create", "database_query", "excel_process", "pdf_generate", "send_email", "datetime"],
"system_prompt": "你是一个报表自动化专家。你需要1. 使用schedule_create创建定时任务 2. 使用database_query查询数据 3. 自动生成报表文件 4. 通过send_email推送报表",
"is_featured": True,
},
{
"name": "数据备份卫士",
"description": "自动化数据库和文件备份方案,支持全量/增量备份策略,定时执行,异常自动重试。备份完成后自动验证完整性并发送通知。",
"category": "automation",
"tags": ["备份", "数据库", "安全"],
"tools": ["schedule_create", "database_query", "docker_manage", "system_info", "send_email", "datetime"],
"system_prompt": "你是一个数据备份专家。你需要1. 制定备份策略和计划 2. 使用schedule_create定时执行备份 3. 验证备份完整性 4. 备份失败时自动重试并告警",
"is_featured": False,
},
{
"name": "批量任务处理器",
"description": "自动化批量处理任务:批量文件重命名/格式转换、批量数据导入导出、批量API调用、批量邮件发送等。支持断点续传和失败重试。",
"category": "automation",
"tags": ["批量", "处理", "效率"],
"tools": ["file_read", "file_write", "http_request", "code_execute", "task_plan", "json_process"],
"system_prompt": "你是一个批量任务处理专家。你需要1. 理解批量处理需求 2. 使用task_plan规划处理步骤 3. 使用file_read/file_write处理文件 4. 处理失败自动重试,记录日志",
"is_featured": False,
},
{
"name": "网站健康监控",
"description": "7x24小时监控网站可用性和性能。定期检测HTTP状态码、响应时间、SSL证书有效期异常时通过飞书/邮件实时告警。",
"category": "automation",
"tags": ["监控", "网站", "告警"],
"tools": ["http_request", "schedule_create", "send_email", "datetime", "system_info"],
"system_prompt": "你是一个网站监控专家。你需要1. 使用http_request定期检测网站 2. 使用schedule_create设置监控频率 3. 记录响应时间和状态码 4. 异常时立即告警",
"is_featured": False,
},
# ─── 更多 llm ───
{
"name": "学术论文助手",
"description": "辅助学术写作全流程文献综述、提纲生成、论点展开、格式排版、参考文献管理。支持APA/MLA/GB等引用格式查重提醒。",
"category": "llm",
"tags": ["学术", "论文", "写作"],
"tools": ["web_search", "file_read", "file_write", "pdf_generate", "text_analyze"],
"system_prompt": "你是一个学术写作助手。你需要1. 帮助检索和整理相关文献 2. 协助构建论文提纲和逻辑框架 3. 提供写作建议和润色 4. 检查引用格式和质量",
"is_featured": True,
},
{
"name": "PPT大纲策划师",
"description": "输入主题自动生成结构化PPT大纲包含标题、目录、每页要点、配图建议和演讲备注。支持多种演讲场景汇报、路演、培训、发布会。",
"category": "llm",
"tags": ["PPT", "演示", "策划"],
"tools": ["web_search", "file_write", "json_process", "text_analyze"],
"system_prompt": "你是一个演示策划专家。你需要1. 理解用户演示目的和受众 2. 设计清晰的叙事结构 3. 为每页生成要点和配图建议 4. 提供演讲节奏和技巧建议",
"is_featured": False,
},
{
"name": "诗词创作家",
"description": "根据主题、风格和词牌创作格律诗词。支持唐诗、宋词、元曲、现代诗等多种体裁,可模仿名家风格,附带赏析注释。",
"category": "llm",
"tags": ["诗词", "创作", "文学"],
"tools": ["web_search", "file_write"],
"system_prompt": "你是一位才华横溢的诗人。你需要1. 根据主题和要求选择合适的诗词体裁 2. 讲究韵律和对仗 3. 融入优美的意象和意境 4. 可以附带简短的赏析解读",
"is_featured": False,
},
{
"name": "Prompt工程师",
"description": "帮助用户设计和优化AI提示词。分析任务需求生成高质量Prompt模板自动测试和迭代优化支持多模型适配GPT/Claude/DeepSeek",
"category": "llm",
"tags": ["Prompt", "AI", "优化"],
"tools": ["web_search", "file_write", "text_analyze", "json_process"],
"system_prompt": "你是一个Prompt工程专家。你需要1. 分析用户的AI使用场景 2. 设计结构化、高质量的Prompt 3. 提供Prompt优化建议 4. 考虑不同模型的特性差异",
"is_featured": False,
},
{
"name": "品牌文案写手",
"description": "快速生成各类品牌营销文案:广告语、公众号文章、产品描述、品牌故事、社交媒体帖子。根据品牌调性调整风格,提供多版本备选。",
"category": "llm",
"tags": ["文案", "营销", "品牌"],
"tools": ["web_search", "file_write", "text_analyze"],
"system_prompt": "你是一个资深品牌文案写手。你需要1. 理解品牌调性和目标受众 2. 创作吸引人的营销文案 3. 保持品牌风格一致性 4. 提供多版本供选择",
"is_featured": False,
},
# ─── 更多 integration ───
{
"name": "飞书消息桥接器",
"description": "连接飞书与内部系统的消息桥接Agent。自动转发飞书消息到指定服务将系统通知推送到飞书群/个人,支持自定义消息模板和路由规则。",
"category": "integration",
"tags": ["飞书", "消息", "桥接"],
"tools": ["http_request", "send_email", "json_process", "datetime"],
"system_prompt": "你是一个系统集成专家。你需要1. 使用http_request调用飞书API 2. 配置消息路由规则 3. 处理消息格式转换 4. 确保消息可靠送达",
"is_featured": False,
},
{
"name": "API编排调度器",
"description": "编排多个API调用为完整业务流程。支持顺序/并行/条件分支调用自动处理依赖关系和错误回滚生成API调用链可视化。",
"category": "integration",
"tags": ["API", "编排", "集成"],
"tools": ["http_request", "json_process", "task_plan", "code_execute"],
"system_prompt": "你是一个API集成专家。你需要1. 理解API调用序列和依赖关系 2. 使用http_request执行API调用 3. 处理响应数据流转 4. 错误时自动回滚",
"is_featured": False,
},
{
"name": "多平台同步助手",
"description": "自动同步数据到多个平台将数据库数据同步到飞书表格、将GitHub Issues同步到Gitea、将文档同步到多个知识库等。",
"category": "integration",
"tags": ["同步", "多平台", "数据"],
"tools": ["http_request", "database_query", "git_operation", "excel_process", "json_process"],
"system_prompt": "你是一个平台集成专家。你需要1. 使用http_request对接各平台API 2. 使用database_query读取源数据 3. 实现双向数据同步 4. 处理同步冲突",
"is_featured": False,
},
# ─── 新增分类: education ───
{
"name": "英语口语陪练",
"description": "沉浸式英语口语练习,模拟日常对话、商务会议、雅思口语等场景。纠正语法和发音,提供地道表达方式,支持文本+语音交互。",
"category": "chat_assistant",
"tags": ["英语", "口语", "陪练"],
"tools": ["text_to_speech", "speech_to_text", "web_search", "text_analyze"],
"system_prompt": "你是一个英语口语陪练老师。你需要1. 营造轻松的英语对话氛围 2. 纠正语法错误并提供地道表达 3. 根据用户水平调整对话难度 4. 多鼓励,建立用户自信",
"is_featured": True,
},
{
"name": "考试复习助手",
"description": "智能考试复习规划师,根据考试时间倒推学习计划。自动生成知识点卡片、模拟试题和错题本,支持公务员/考研/考证等多种考试类型。",
"category": "chat_assistant",
"tags": ["考试", "复习", "学习"],
"tools": ["task_plan", "knowledge_graph_add", "learning_path", "datetime", "web_search", "file_write"],
"system_prompt": "你是一个考试复习规划师。你需要1. 根据考试日期倒推学习计划 2. 使用learning_path规划知识学习顺序 3. 使用knowledge_graph_add构建知识体系 4. 定期检测学习进度",
"is_featured": False,
},
]
# Create agents
created = 0
for s in skills:
if s['name'] in existing_names:
print(f'SKIP: {s["name"]}')
continue
wf = make_workflow(s['name'], s['tools'], s['system_prompt'])
body = {
"name": s['name'],
"description": s['description'],
"workflow_config": wf,
}
result = api('POST', '/agents', token, body)
if result:
print(f'OK: {s["name"]} ({s["category"]})')
created += 1
else:
print(f'FAIL: {s["name"]}')
print(f'\nCreated {created} agents, now updating market fields...')
# Update market fields via DB
conn = pymysql.connect(
host='gz-cynosdbmysql-grp-d26pzce5.sql.tencentcdb.com',
port=24936, user='root', password='!Rjb12191',
database='agent_db', charset='utf8mb4'
)
with conn.cursor() as cur:
for s in skills:
tags_json = json.dumps(s['tags'], ensure_ascii=False)
cur.execute("""
UPDATE agents SET category=%s, tags=%s, is_public=1, is_featured=%s
WHERE name=%s
""", (s['category'], tags_json, 1 if s['is_featured'] else 0, s['name']))
conn.commit()
with conn.cursor() as cur:
cur.execute("SELECT COUNT(*) FROM agents WHERE is_public=1")
total = cur.fetchone()[0]
print(f'Total public agents: {total}')
conn.close()