设置中心
点击侧栏用户行右侧的 ⚙️ 齿轮按钮进入设置中心。设置中心侧栏显示设置导航菜单,点击左上角 ← 返回按钮可回到对话页面。
6.1 操作规则
路径:设置 → Prompt
包含三个 Tab(部分 Tab 默认隐藏,需在 通用 → 高级功能 开启):
6.1.1 Profile(用户画像)
- 配置 Agent 对你的认知(投资偏好、专业背景、个性化备注等)
- 版本管理:保存任意版本,支持 Diff 对比和一键回滚
- 用户画像通过
{user_profile_context}占位符注入到 System Prompt
6.1.2 操作规则(System Prompt + 能力提示词)
仅在 通用 → 高级功能 → 操作规则 开启时显示。
- 编辑 Prompt:在文本编辑器中修改当前 System Prompt
- 保存版本:可为每次修改添加标签和备注
- 版本历史:查看所有历史版本列表
- Diff 对比:查看两个版本之间的差异
- 回滚:一键回滚到任意历史版本
- 重置:恢复为系统默认 Prompt
- 能力提示词:折叠面板,展开可逐条编辑/恢复默认(如 scheduler 必须用什么时区格式、媒体生成怎么用
<<FILE:>>标签)
6.1.3 Memory & Soul(记忆与灵魂)
仅在 通用 → 高级功能 → Memory & Soul 开启时显示。
- Memory Subagent 写入:Switch
- 关闭:Memory Subagent 仅能读对话和 inbox
- 开启:Memory Subagent 可在
filesystem/soul/创建/编辑/删除笔记(Agent 主动总结记忆到长期人格中) - 下方附带可编辑的能力提示词
- Soul 文件系统:Switch
- 关闭:主 Agent 不可见
/soul/目录 - 开启:主 Agent 在文件面板和工具中可直接读写
/soul/ - 下方附带可编辑的能力提示词
- 关闭:主 Agent 不可见
- 包含消费者对话:Switch — Memory Subagent 是否能读取 Service Consumer 对话历史
- 最近消息条数:默认 5(注入到调度任务和 inbox agent 的 prompt 前缀)
Soul 系统详细说明见 §9。
6.2 Subagent 管理
路径:设置 → Subagent 管理
配置主 Agent 可调用的子代理(Subagent),实现复杂任务的分工协作。
功能:
- 创建子代理:设置名称、描述、使用的模型、可用工具
- 编辑配置:修改已有子代理的配置
- 删除子代理:移除不需要的子代理
- 工具配置:从可用工具池中勾选(包括联网/媒体/调度/记忆/Soul 等)
- 模型选择:为子代理指定独立的模型(可与主 Agent 不同)
内置 Memory Subagent:
- 默认提供,不可删除(可禁用)
- 默认工具:读 Admin 对话 / 读 Service Consumer 对话 / 读 inbox
- 启用 Memory Subagent 写入后追加 soul 写工具(list/read/write/delete)
Subagent 可用工具池:
| 类别 | 工具 |
|---|---|
| 通用 | run_script / web_search / web_fetch / generate_image / generate_speech / generate_video / schedule_task / manage_scheduled_tasks / publish_service_task / send_message |
| 记忆 | list_conversations / read_conversation / list_service_conversations / read_service_conversation / read_inbox / soul_list / soul_read / soul_write / soul_delete |
6.3 Python 环境(per-user venv)
路径:设置 → Python 环境
每个 Admin 拥有独立的 Python 虚拟环境(users/{你的用户名}/venv/),用于脚本执行。
功能:
- 初始化环境:首次使用需点击 初始化 创建 venv(继承系统预装包:numpy/pandas/matplotlib 等)
- 安装包:输入包名(如
requests、scikit-learn)点击安装 - 卸载包:在已安装列表中点击删除
- 查看已安装包:列表展示版本号
安全限制:
- 包名不允许包含 `;|&$`` 等注入字符
- pip 操作仅在你的 venv 内执行,不影响其他用户
- 持久化:安装的包记录到
users/{你的用户名}/venv/requirements.txt,重启/Docker 重建时自动还原
6.4 收件箱
路径:设置 → 收件箱(侧栏菜单显示未读消息数量徽章)
接收来自 Service Agent 的消息:当 Service Consumer 在对话中触发了 contact_admin 工具,或某些 Service 任务需要管理员决策时,消息会出现在这里。
功能:
- 消息列表:显示未读 / 已读 / 已处理的消息
- 未读计数:侧栏菜单显示未读数量徽章
- 标记状态:将消息标记为已读 / 已处理 / 删除
- 查看详情:查看消息的完整内容、发送来源(Service / 对话 ID)、紧急程度
自动转发到微信(智能 Inbox Agent):
如果你已通过 §6.8 微信接入 连接了 Admin 自己的微信,则每条收到的 inbox 消息都会触发一个 Inbox Agent:
- 自动评估消息的紧急程度和上下文
- 决定是否转发到你的微信(避免被无关消息打扰)
- 发送时附带摘要而非整段原文
消息来源标注:
| 来源 | 标记 |
|---|---|
| Service Consumer 主动呼叫 | contact_admin 工具 |
| Service 定时任务 | [系统指令 - 来自管理员] 触发的 contact_admin |
| Inbox Agent 自评估 | [系统指令 - Service 收件箱通知] |
6.5 通用
路径:设置 → 通用
6.5.1 API Keys(强烈推荐)
每个 Admin 可配置自己的 API Key,优先级高于环境变量。AES-256-GCM 加密存储。
| 类型 | 字段 |
|---|---|
| Anthropic | anthropic_api_key + anthropic_base_url |
| OpenAI | openai_api_key + openai_base_url |
| Tavily | tavily_api_key |
| 多媒体(按需) | image_* / tts_* / video_* / s2s_* / stt_* 的 key + base_url |
操作:
- 编辑:点击折叠面板展开,输入 Key
- 测试连接:验证连通性
- 保存:自动加密存储 + 清除 Agent 缓存(下次请求生效)
如果你既未配置 per-admin Key 也未在
.env中配置环境变量,登录后会弹出引导 Modal 提示设置。
6.5.2 时区设置
- 设置默认时区(影响:定时任务的 cron 表达式解释、聊天消息时间戳注入)
- 时区改动会同步到
users/{uid}/preferences.json
6.5.3 主题选择
详细的主题切换 + 预览(dark / cyber-ocean / terminal)。
6.5.4 高级功能开关
控制 设置 → Prompt 页内 Advanced Tab 的可见性:
- 操作规则 Switch:是否显示 System Prompt 编辑器 + 能力提示词
- Memory & Soul Switch:是否显示 Soul 配置页
默认关闭。新手不需要看到,避免误操作。
6.5.5 批量运行(内嵌 BatchRunner)
通过 Excel 文件批量执行 Agent 任务,适合数据处理、批量分析等场景。
使用流程:
- 上传 Excel:选择包含任务数据的 Excel 文件(
.xlsx) - 配置运行:
- 选择输入列(作为 Agent 的消息)
- 选择使用的模型
- 配置能力开关
- 设置自定义 Prompt(可选)
- 开始运行:批量任务开始执行
- 查看进度:实时显示当前进度(已完成/总数)
- 下载结果:完成后下载包含 AI 回复的结果 Excel
注意事项:
- 每行数据独立执行,互不影响
- 支持中途取消
- 结果文件包含原始数据 + AI 回复列
旧链接
/settings/batch会自动重定向到/settings/general。
6.6 Service 管理
路径:设置 → Service 管理
将配置好的 Agent 发布为 Service,供外部消费者(Consumer)通过 API 或微信扫码使用。
6.6.1 界面布局
- 左侧 (30%):Service 列表卡片
- 绿色圆点 = 已发布
- 灰色圆点 = 草稿
- 选中时左侧显示品牌色高亮条
- 右侧 (70%):选中 Service 的详情,分为 4 个标签页
6.6.2 Basic Info(基础信息)
| 字段 | 说明 |
|---|---|
| 名称 | Service 显示名称 |
| 描述 | Service 说明文本(简介) |
| 模型 | 选择 Service 使用的 AI 模型 |
| System Prompt | 可选:使用某个保存的 Prompt 版本,或自定义 |
| User Profile | 可选:使用某个用户画像版本(注入到 prompt) |
| 能力 | 勾选 Service 开放的能力:web / scheduler / image / speech / video / humanchat |
| 可访问的文档/脚本 | 可视化勾选树(来自 /docs/ 和 /scripts/),文件夹勾选 = 整个目录 |
| 欢迎语 | 聊天页首屏的渐变大字(最多 300 字) |
| 快速问题 | 首屏 chips 横排(每条最多 80 字,最多 6 条) |
| 发布状态 | Switch 切换 发布/草稿 |
6.6.3 API Keys
每个 Service 可创建多把 sk-svc-... 格式的 API Key 供 Consumer 使用。
| 操作 | 说明 |
|---|---|
| 生成 Key | 创建新的 API Key(只在创建那一刻能看到完整 Key,关闭后只能看到哈希) |
| 附 Key 链接 | 创建后 Modal 额外显示 /s/{service_id}?key=sk-svc-xxx 一键访问链接 |
| 复制 Key | 一键复制 Key 到剪贴板 |
| 删除 Key | 撤销某个 Key |
⚠️ 附 Key 链接等同分享 Key。链接虽然在用户访问时立即从 URL 中清除并写入 localStorage,但 referer/网关访问日志中可能留痕。
6.6.4 WeChat Channel(微信渠道)
详见 §7。
| 字段 | 说明 |
|---|---|
| 启用/禁用 | Switch 开关微信扫码渠道 |
| 过期时间 | 设置渠道有效期 |
| 最大会话数 | 限制同时连接的微信用户数 |
| QR 链接 | 获取微信扫码中间页链接(/wc/{service_id}) |
| 活跃会话 | 查看当前连接的微信用户列表 |
| 断开会话 | 主动断开某个微信用户 |
| 查看对话 | 进入某个微信用户的对话历史 |
6.6.5 Test(内联测试)
无需离开管理页面,直接与 Service 进行测试对话。自动创建临时 API Key 和测试对话。
⚠️ 已知问题:每次新测试会创建新的 API Key 但不会自动清理(孤立 Key),需手动在 API Keys Tab 删除。
6.7 定时任务
路径:设置 → 定时任务
管理定时执行的自动化任务,分为 管理员任务 和 服务任务 两个 Tab。
6.7.1 管理员任务
任务类型:
- Script:定时执行
scripts/目录下的 Python 脚本 - Agent:定时执行 Agent 任务(发送 Prompt + 可选文档上下文)
调度类型:
- once:一次性执行(指定 ISO 时间,建议带时区后缀,如
2026-12-31T09:00:00+08:00) - cron:Cron 表达式定时(如
0 9 * * *每天 9 点) - interval:间隔执行(秒数)
沙箱权限(仅 Script 任务):
- 可配置脚本读/写目录(默认
docs/scripts/generated/tasks) - 路径相对用户文件系统根目录
reply_to 选项:
- ☐ 不推送:仅记录运行结果
- ☐ 推送到我的微信:通过已绑定的 Admin WeChat 投递(需先在 §6.8 接入)
6.7.2 服务任务
由 Admin 给某个 Service 派发,或由 Consumer 在对话中通过 schedule_task 工具创建。
- 仅支持 Agent 类型(无脚本)
- 使用 Consumer Agent 执行(按 Service 配置的能力 + 文档限制)
- reply_to 路由(决定结果推送到哪里):
| Channel | 目标 | 适用场景 |
|---|---|---|
wechat | 推送到微信用户(来源 session) | Service 微信渠道用户 |
inbox | 写入 Admin 收件箱(自动评估转发) | 需管理员审阅 |
admin_chat | 写入 Admin 普通聊天对话 | Service 主动汇报 |
- Service 任务列表显示 service_id、📬 推送标记、reply_to 信息
- Service 的
manage_scheduled_tasks仅能操作当前 conversation 的任务(权限隔离)
6.7.3 运行记录
每次执行记录详细的步骤日志:
| 步骤 | 含义 |
|---|---|
start | 开始执行 |
docs_loaded | 文档加载完成(仅 Agent) |
loop | Agent 循环迭代 |
tool_call / tool_result | 工具调用与结果 |
ai_message | AI 消息 |
auto_approve | 自动审批(HITL) |
wechat_warning / wechat_error | 微信投递警告/错误 |
finish | 完成 |
error | 错误 |
reply | 兜底推送 |
可以查看每次运行的耗时、错误信息、完整步骤。
6.7.4 立即执行
每个任务列表行右侧的 运行 按钮可立即触发一次执行(不影响下次定时)。
6.8 微信接入(管理员自接入)
路径:设置 → 微信接入
将 管理员自己的主 Agent 通过微信 iLink 协议接入,实现在微信中直接与你的 JellyfishBot 对话。
这与 §7 Service 渠道 是两套完全独立的栈:Admin 接入用的是你的主 Agent(完整权限),Service 渠道服务于 Consumer(受限权限)。
6.8.1 接入流程
- 进入 设置 → 微信接入,点击 生成二维码。
- 用微信扫描 QR 码(即 iLink Bot 协议的扫码登录)。
- 扫码成功后:
- 状态自动变为 已连接
- 你在微信中给 JellyfishBot 发消息,机器人会回复
- 首次扫码后,你的微信账号绑定关系会被持久化到
users/{你的用户名}/admin_wechat_session.json,Docker / 服务重启后自动恢复连接。 - 主动断开:点击 断开连接 按钮,或微信端取消授权。
6.8.2 多模态支持
- 接收图片:CDN 下载 → AES 解密 → 自动作为多模态消息发给 GPT-4o / Claude(Vision 能力)
- 接收语音:CDN 下载 → AES 解密 → SILK→WAV → Whisper 转文字
- 发送图片/视频:自动通过
<<FILE:>>标签触发(图片走 iLink CDN 上传,视频/MP3 走文件附件) - 发送 TTS 语音:以文件附件形式发送(语音条暂不可用)
6.8.3 管理界面
- 状态卡片:显示当前连接状态、绑定的微信用户标识
- 消息列表:查看微信对话记录(可在
/api/admin/wechat/messages接口拉取) - 断开按钮:主动断开当前连接
6.8.4 主要场景
| 场景 | 操作 |
|---|---|
| 出门时用微信问 Agent 简单问题 | 直接在微信发消息 |
| 接收定时任务推送 | 在 §6.7 任务的 reply_to 选「推送到我的微信」 |
| 接收 Service 收件箱重要通知 | Inbox Agent 自动评估转发(见 §6.4) |
| 让 Agent 主动汇报 | Admin 通过 publish_service_task 工具下发任务,Service 完成后推送回微信 |