- 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>
86 lines
3.1 KiB
Markdown
86 lines
3.1 KiB
Markdown
# 工作文档 2026-06-29
|
||
|
||
## 一、修复删除智能体 500 错误
|
||
|
||
### 问题
|
||
Android 端删除智能体时返回 HTTP 500:`DATABASE_ERROR: Unknown column 'tasks.blocks'`
|
||
|
||
### 根因
|
||
1. `tasks` 表缺少 `blocks` 和 `owner` 两个列(SQLAlchemy 模型已定义但数据库未同步)
|
||
2. 删除 Agent 时 `assigned_tasks` backref 触发懒加载,查询了不存在的 `tasks.blocks` 列
|
||
3. 修复列缺失后,7 个外键表(`agent_llm_logs`、`agent_permissions`、`agent_schedules`、`executions`、`team_members`、`goals`、`tasks`)FK 约束阻止删除
|
||
|
||
### 修复
|
||
**数据库**:手动添加缺失列
|
||
```sql
|
||
ALTER TABLE tasks ADD COLUMN owner VARCHAR(200);
|
||
ALTER TABLE tasks ADD COLUMN blocks JSON;
|
||
```
|
||
|
||
**后端** `backend/app/api/agents.py`:
|
||
- 删除前先清理关联表记录(`agent_llm_logs`、`agent_permissions`、`agent_schedules`、`executions`、`team_members`)
|
||
- 解除分配关系(`goals.main_agent_id`、`tasks.assigned_agent_id` 设为 NULL)
|
||
- 最后删除 Agent 自身
|
||
|
||
### 影响文件
|
||
- `backend/app/api/agents.py`
|
||
|
||
---
|
||
|
||
## 二、修复不同人格 Agent 回复一模一样
|
||
|
||
### 问题
|
||
豆包(温暖陪伴风格)和 gpt(通用助手风格)对同一句话回复完全一致。
|
||
|
||
### 根因
|
||
后端 `ChatRequest.prompt_sections_enabled` 默认为 `true`,Python 端 `PromptComposer` 的英文通用段(capabilities、tool_instructions、safety_rules、output_style)覆盖了中文人格 system prompt,导致所有 Agent 回复趋同。
|
||
|
||
### 修复
|
||
Android `ChatRequest.promptSectionsEnabled` 默认值改为 `false`,绕过 `PromptComposer`,直接使用 Agent 原始 system prompt。
|
||
|
||
### 影响文件
|
||
- `android/.../data/remote/dto/Dtos.kt` — `ChatRequest.promptSectionsEnabled: Boolean = false`
|
||
|
||
---
|
||
|
||
## 三、移除硬编码人格模板,改为动态生成
|
||
|
||
### 问题
|
||
`CreateAgentRequest` 中有 4 个硬编码模板(DOUBAO_TRAITS、CODER_TRAITS、ARCHITECT_TRAITS、GENERAL_TRAITS),通过 `detectStyle()` 关键词匹配选择模板。用户在移动端创建智能体时人格被写死,无法灵活定义。
|
||
|
||
### 修复
|
||
移除所有硬编码模板和 `detectStyle()`,`buildSystemPrompt()` 改为动态生成:
|
||
|
||
```
|
||
你是{name}。
|
||
|
||
{description} ← 用户在创建时填写的描述直接成为人格
|
||
|
||
## 可用工具
|
||
...
|
||
|
||
## 安全边界
|
||
...
|
||
```
|
||
|
||
### 影响文件
|
||
- `android/.../data/remote/dto/Dtos.kt`
|
||
|
||
### 测试验证
|
||
创建「豆包2号」(描述:温暖陪伴风格)和「gpt2号」(描述:专业高效风格),发送同一句话「我想休假了」:
|
||
|
||
- **豆包2号**:哎呀,想休假了呀~ 🏖️ 完全理解你!...说吧,我在听~ 😊
|
||
- **gpt2号**:理解。休假是对长期压力的有效调节。...直接说你的情况。
|
||
|
||
风格差异明显,符合预设。
|
||
|
||
---
|
||
|
||
## 变更文件清单
|
||
|
||
| 文件 | 变更 |
|
||
|------|------|
|
||
| `backend/app/api/agents.py` | 删除 Agent 前清理关联表 + FK 解绑 |
|
||
| `android/.../data/remote/dto/Dtos.kt` | 移除硬编码模板,动态生成 system prompt;`promptSectionsEnabled` 默认 false |
|
||
| `agent_db.tasks` 表 | 添加 `owner`、`blocks` 列 |
|