Files
aiagent/docs/工作文档0629.md
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

86 lines
3.1 KiB
Markdown
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.
# 工作文档 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` 列 |