Repository navigation
Releases
Releases · llc370219/onefrog
v0.2.0 · AI 助理改用 Frog Bot 完整架构,每个 Bot 都是一个助理
OneFrog v0.2.0 正式发布。AI 助理整体改用 Frog Bot 的架构,并和 OneFrog 的 Bot、服务器、审批、密钥保险箱和自动化打通。
变化
- AI 助理改用 Frog Bot 的完整架构:聊天层负责对话,要动手的事交给后台 Agent;后台任务有队列、检查点、暂停/恢复/取消/重试,卡住会被发现,面板重启后会接着跑,每个任务只汇报一次。
- 「Bot」页里每个启用的 Bot(「自定义模块」Bot 除外)都是 AI 助理里的一个助理,各自有对话、后台任务、私有记忆和工作区,同一账号下还有共享记忆。助理之间可以互相询问和留言。宽屏时左侧切换,窄屏时点顶部名字切换;「Bot」页恢复了「对话」按钮。
- 后台 Agent 直接使用 OneFrog 原有的服务器工具(执行命令、检查服务、接入服务器、安装探针、面板和模块操作、生成密钥),按 Bot 的职责提供,用的是这个 Bot 自己的模型路由,用量记在它名下。
- 对话页右上角可以给每个助理选「可直接操作的服务器」。选中的服务器按「设置 → 审批」的模式处理(智能模式下只有有风险的命令才问);没选中的服务器每条命令都要确认。
- OneFrog 要求确认的操作,审批卡片只能「批准一次」,卡片上写明服务器、命令和原因。审批卡片和选项卡片仍是两种卡片。
- 自动化到点后进入执行者 Bot 的后台队列,自动化里指定的服务器在这次运行中算作选中的服务器,自动化自己的审批模式照常生效。「在 AI 助理中查看」会打开对应的助理。
- 移除单独的
/frog-bot.html页面(会跳回面板),AI 助理直接在面板里渲染,浅色、深色和窄屏下的样式与面板一致。
接口
- 新增
GET /api/frog-bot/bots(助理列表,来自「Bot」页)和GET/POST /api/frog-bot/bots/{id}/scope(可直接操作的服务器)。 - 每个助理的对话、任务、审批和事件流在
/api/frog-bot/bots/{id}/*。主控的 id 是main,旧的frog-bot仍可用。 POST /api/frog-bot/bots不再新建助理,请在「Bot」页管理。
升级须知
- 升级会保留账号、设置、服务器、保险箱、Bot、自动化和 AI 助理的数据,容器会重启。没有数据库迁移,也不删除数据。
- 原来的 Frog Bot 成为主控的助理,对话、任务、记忆和工作区原样保留。其他 Bot 第一次打开时是空对话。
- 执行者是「Frog Bot(AI 助理)」的自动化改由主控执行,可以重新选执行者和服务器。
- 面板的备份与迁移会一起打包所有助理的数据和服务器选择。
- 主机指纹校验、灾难性命令拦截、密钥只在执行时替换并在输出中打码、不内置 Google 客户端密钥,这些都不变。
已知限制
- 面板首页的指令卡片、服务监控和订阅页的「让 Bot 检查」、「自定义模块」构建器,以及执行者是「自定义模块」Bot 或没有账号归属的自动化,仍由原来的任务引擎执行。
- 审批卡片 10 分钟内没处理会自动拒绝,无人值守的自动化也一样。
- 「Bot」页里的记忆只作为参考带进对话,助理自己记下的记忆单独保存,不会写回「Bot」页。
- 助理不能在 AI 助理页里新建或删除,请在「Bot」页管理;一个账号最多 32 个助理。
升级方式
在面板「设置 → 关于与更新」检查并升级;也可以在安装 OneFrog 的服务器上执行:
curl -fsSL https://raw.githubusercontent.com/llc370219/onefrog/main/install.sh | sudo OF_CHANNEL=stable bash使用自定义安装目录的用户需继续指定原来的 OF_INSTALL_DIR。
v0.2.0-beta.1 · AI 助理改用 Frog Bot 完整架构,每个 Bot 都是一个助理
OneFrog v0.2.0-beta.1 测试版。AI 助理整体改用 Frog Bot 的架构,并和 OneFrog 的 Bot、服务器、审批、密钥保险箱和自动化打通。
变化
- AI 助理改用 Frog Bot 的完整架构:聊天层负责对话,要动手的事交给后台 Agent;后台任务有队列、检查点、暂停/恢复/取消/重试,卡住会被发现,面板重启后会接着跑,每个任务只汇报一次。
- 「Bot」页里每个启用的 Bot(「自定义模块」Bot 除外)都是 AI 助理里的一个助理,各自有对话、后台任务、私有记忆和工作区,同一账号下还有共享记忆。助理之间可以互相询问和留言。宽屏时左侧切换,窄屏时点顶部名字切换;「Bot」页恢复了「对话」按钮。
- 后台 Agent 直接使用 OneFrog 原有的服务器工具(执行命令、检查服务、接入服务器、安装探针、面板和模块操作、生成密钥),按 Bot 的职责提供,用的是这个 Bot 自己的模型路由,用量记在它名下。
- 对话页右上角可以给每个助理选「可直接操作的服务器」。选中的服务器按「设置 → 审批」的模式处理(智能模式下只有有风险的命令才问);没选中的服务器每条命令都要确认。
- OneFrog 要求确认的操作,审批卡片只能「批准一次」,卡片上写明服务器、命令和原因。审批卡片和选项卡片仍是两种卡片。
- 自动化到点后进入执行者 Bot 的后台队列,自动化里指定的服务器在这次运行中算作选中的服务器,自动化自己的审批模式照常生效。「在 AI 助理中查看」会打开对应的助理。
- 移除单独的
/frog-bot.html页面(会跳回面板),AI 助理直接在面板里渲染,浅色、深色和窄屏下的样式与面板一致。
接口
- 新增
GET /api/frog-bot/bots(助理列表,来自「Bot」页)和GET/POST /api/frog-bot/bots/{id}/scope(可直接操作的服务器)。 - 每个助理的对话、任务、审批和事件流在
/api/frog-bot/bots/{id}/*。主控的 id 是main,旧的frog-bot仍可用。 POST /api/frog-bot/bots不再新建助理,请在「Bot」页管理。
升级须知
- 升级会保留账号、设置、服务器、保险箱、Bot、自动化和 AI 助理的数据,容器会重启。没有数据库迁移,也不删除数据。
- 原来的 Frog Bot 成为主控的助理,对话、任务、记忆和工作区原样保留。其他 Bot 第一次打开时是空对话。
- 执行者是「Frog Bot(AI 助理)」的自动化改由主控执行,可以重新选执行者和服务器。
- 面板的备份与迁移会一起打包所有助理的数据和服务器选择。
- 主机指纹校验、灾难性命令拦截、密钥只在执行时替换并在输出中打码、不内置 Google 客户端密钥,这些都不变。
已知限制
- 面板首页的指令卡片、服务监控和订阅页的「让 Bot 检查」、「自定义模块」构建器,以及执行者是「自定义模块」Bot 或没有账号归属的自动化,仍由原来的任务引擎执行。
- 审批卡片 10 分钟内没处理会自动拒绝,无人值守的自动化也一样。
- 「Bot」页里的记忆只作为参考带进对话,助理自己记下的记忆单独保存,不会写回「Bot」页。
- 助理不能在 AI 助理页里新建或删除,请在「Bot」页管理;一个账号最多 32 个助理。
升级方式
在面板「设置 → 关于与更新」检查并升级;也可以在安装 OneFrog 的服务器上执行:
curl -fsSL https://raw.githubusercontent.com/llc370219/onefrog/main/install.sh | sudo OF_CHANNEL=beta bash使用自定义安装目录的用户需继续指定原来的 OF_INSTALL_DIR。
v0.1.33 · 运维会话下线,AI 助理成为唯一聊天入口
OneFrog v0.1.33 正式发布。原来的「运维会话」已移除,「AI 助理」(Frog Bot)移到它原来在主菜单里的位置,现在面板里只有这一个聊天入口。
变化
- 主菜单现在是:面板、AI 助理、模块、服务器、Bot、密钥保险箱、变更记录。AI 助理在第二项,就是原来「运维会话」的位置;原来单独的「AI 助理」标签合并进来,不再重复。
- 移除「运维会话」页面:Bot 单聊、隔离项目、收件箱和自动化对话列表、项目工作记忆,以及对话里的附件上传。
- 移除「代码工作区」页面。
- 服务器页的「交给 Bot」和密钥保险箱的「发给助理」会打开 AI 助理,并把内容放进输入框。
- 服务监控和订阅页的「让 Bot 检查」改由面板首页的主控 Bot 执行,结果显示在面板卡片上,命令仍要审批。
- 自定义模块的「AI 改造」和「修复」会把要求填进本页的构建器,不再跳去对话。
- Bot 页去掉了每个 Bot 的「对话」按钮。
- 自动化:普通 Bot 的运行在等待审批或运行中时,卡片下方直接显示任务卡,可以批准、拒绝、暂停或停止。Frog Bot 的运行仍在 AI 助理里查看。
接口
- 移除
POST /api/chat、/ws/chat、GET /api/sessions、DELETE /api/sessions/:id、/api/sessions/:id/project-memory*和/api/workspace*。 - 保留
/api/tasks*、GET /api/sessions/:id/messages、/api/attachments、/api/frog-bot*和其他接口。面板任务卡、自定义模块构建器和自动化仍然使用这些接口。
升级须知
- 升级会保留账号、设置、服务器、保险箱、Bot、自动化和 Frog Bot 的数据,容器会重启。
- 没有数据库迁移,也不删除数据。原来运维会话里的对话、消息和项目记忆仍留在数据库里,只是页面上不再显示,也不会搬进 Frog Bot。
- 登录、审批、密钥保险箱、「只自动安装正式版」的更新策略和自动化调度都不变。
已知限制
- 无法再在网页上打开旧的单聊、隔离项目和收件箱对话。Bot 之间用
message_agent发的消息仍在后台处理,但网页上不再有地方查看这些收件箱对话。 - 无法再在网页上用代码工作区开发仓库。
- Frog Bot 不能创建或修改自定义模块,这类改动请在「模块 → 自定义模块」的构建器里做。
升级方式
在面板「设置 → 关于与更新」检查并升级;也可以在安装 OneFrog 的服务器上执行:
curl -fsSL https://raw.githubusercontent.com/llc370219/onefrog/main/install.sh | sudo OF_CHANNEL=stable bash使用自定义安装目录的用户需继续指定原来的 OF_INSTALL_DIR。
v0.1.32 · Frog Bot 成为 AI 助理
OneFrog v0.1.32 正式发布。「AI 助理」改由 Frog Bot v0.1.2 驱动,并且只用 OneFrog 自己的登录、模型、密钥保险箱和自动化,不再另起一套。本版同时包含 v0.1.32 测试版(beta.1 到 beta.11)里的全部改动。
AI 助理(Frog Bot)
- 聊天层先回答你,耗时的事交给后台 Agent。任务在服务器上继续跑,刷新或关掉页面也不会中断;任务卡可以暂停、恢复、取消和重试,正在工作时一直有进度显示。
- 长任务会自动压缩上下文,不会因为对话太长而失败。事件日志写入更稳,断电留下的半行数据会在启动时自动清理。
- 密钥卡片直接存进「密钥保险箱」,不会进入聊天记录,助理也看不到明文;使用时写成
{{secret:NAME}},每次都要你确认,输出里的密钥值会被遮盖。 - 在对话里说「每天 9 点帮我……」,确认审批卡片后会在「模块 → 自动化」里新建一条,执行者是「Frog Bot(AI 助理)」。也可以直接在自动化页面选它。需要你处理时,自动化显示「等待处理」。
- 操作服务器时,每条远程命令都要你单独批准一次,并经过 SSH 指纹校验和审计。Frog Bot 不能在面板所在的宿主机上执行 Shell。
- 每个账号有自己的 Frog Bot、对话和工作区,互相看不到;数据按账号加密保存在
OF_DATA_DIR/frog-bot/,备份与迁移会一起打包。 - 原来的群聊、Bot 专属会话和代码工作区移到「运维会话」,记录照常保留。
测试版里的其他改动
- 加密备份恢复,以及用一次性迁移码在线搬家。
- 代码工作区:通过 SSH 打开宿主机上的仓库。
- 运维会话的持久后台任务运行时、独立模型审批、任务进度卡片、按 Bot 并发与全链路取消。
- 群聊按项目隔离记忆;聊天时可以连续发消息、直接回答和纠正当前轮。
- 面板探针一排最多三张;补回默认主控「服务器管理」。
- 设置里可以切换正式版和测试版更新渠道,旧升级程序切测试版时不再假装成功。
更新
- 「自动安装新正式版」只会自动安装正式版。选了测试版渠道也不会自动装测试版,需要你手动点「立即升级」。
升级须知
- 升级会保留账号、设置、服务器、保险箱和自动化,容器会重启。
- Frog Bot 第一次打开时是空对话。原来的会话在「运维会话」里,不会自动搬过来。
- 自动化里已有的计划不受影响,仍由原来选的 Bot 执行。
已知限制
- AI 助理和运维会话目前仍是两个聊天入口:Frog Bot 负责日常对话和后台任务,多 Bot 群聊和代码工作区仍在运维会话里。之后会继续合并。
- Frog Bot 只能引用由大写字母、数字和下划线组成的密钥名(例如
GITHUB_TOKEN),其他名字的密钥它看不到。 - Frog Bot 的定时计划每周只能选一天,时间按 OneFrog 服务器的时区。
- 这一版用模拟模型和本地数据库测试过登录、对话、后台任务、审批卡片、密钥卡片和自动化;还没有在真实模型和多台真实服务器上长时间运行。
升级方式
在面板「设置 → 关于与更新」检查并升级;也可以在安装 OneFrog 的服务器上执行:
curl -fsSL https://raw.githubusercontent.com/llc370219/onefrog/main/install.sh | sudo OF_CHANNEL=stable bash使用自定义安装目录的用户需继续指定原来的 OF_INSTALL_DIR。
v0.1.32-beta.9 · 恢复对话回复动画
- 暂停展示聊天、面板和自定义模块构建器的大进度卡。Bot 处理时显示正式版的等待动画,结束后用普通聊天气泡显示答复。
- 审批、追问和停止回复仍可在对话里操作;等待用户操作时显示静态提示。
- 保留后台任务恢复和历史滚动修复,翻阅旧消息时不会被新回复拉回底部。
v0.1.32-beta.8 · 聊天回复与进度展示
- 普通短对话只显示简短的运行状态。运行满 15 秒、多步骤、委派或需要操作的任务才显示可收起的进度卡。
- 成功完成后,进度卡退出对话,最终答复作为普通助手消息显示。即使任务状态先更新,对话也会继续读取随后写入的答复。
- 向上翻阅历史时,新消息和任务状态更新不会把对话拉回底部。回到底部或主动发送消息后恢复跟随。
v0.1.32-beta.7 · 任务生命周期收紧:实时活动可见可停、按 Bot 并发与全链路取消
- 实时任务活动与可见停止:任务卡片的活动流实时反映模型调用与工具执行的
起止;进行中的模型活动在操作员暂停或取消任务时立即标记为「已中断」,请求
本身在网络上被取消(httptest 服务器实测收到请求断开),不再只是状态翻转。 - 按 Bot 并发的持久任务:不同 Bot(不同会话)的任务同时运行;同一会话内
的任务严格串行,重复调度不会绕过会话槽位,前一个窗口释放后下一个才开始。 - 全链路取消范围:取消或暂停一个任务会停掉它的模型 HTTP 请求(真实
context 传递到模型调用)、本地工作区命令的整个进程组、属于该任务的后台
作业(按 Bot + 任务号精确匹配,不误伤其他任务或其他 Bot 的作业),以及
该任务派生的子任务;其他 Bot / 会话的任务不受影响。 - 调度竞态修复:窗口的取消句柄在任务认领前注册,暂停/取消不可能错过
在途模型操作;窗口启动前同时检查运行上下文与持久化 running 状态,过期
窗口不再为已暂停/已取消的任务调用模型;派工子任务的激活改为注册表原子
操作,父任务已暂停/取消/子任务已独立取消时拒绝复活过期快照里的排队子任务。 - 回归验证:新增确定性测试覆盖——两个 Bot 并行且取消 A 后 B 继续完成、
同会话串行、真实 HTTP 请求取消(暂停与取消两条路径)、活动流 running →
interrupted 状态迁移、子任务激活竞态拒绝与正常放行。 - 已知限制:后台作业状态仍在进程内,重启后不可查询(沿用既有行为);
本轮验证基于本地单测与竞态检测,尚未在生产长任务中验证。
v0.1.32-beta.6 · 持久自主任务运行时:本地工作区、后台作业与独立模型审批
- 持久自主任务运行时:任务接受后写入加密任务文件,由后台 Runner 在自己的
goroutine 中执行,断线或刷新页面不会取消任务;支持暂停、恢复与取消。任务
卡片以活动流展示进度,已完成计划的段落是静态的完成区间(进度条内不再渲染
数字),另有收尾消息、验证证据(finish 需要最后一次变更之后的只读观察)与
未知副作用核验门。 - 独立模型审批(三态):审批模型返回 allow / deny / ask。allow 直接放行,
deny 直接拒绝,ask(以及模型不可用或结果无法解析)一律转人工审批卡片,
绝不静默放行;风险等级只是决策证据,不改变 allow 的结果。 - 隔离项目与 Bot 记忆:原群聊更名为隔离项目,项目记忆仅在该项目中保留,
不读写 Bot 私有记忆。每个 Bot 有独立私有记忆,Bot 之间通过 ask_agent 派工
或 message_agent 交接结论,而非共享记忆池。 - 显式本地工作区:任务在操作员明确允许的目录内读写、搜索、编辑文件并执行
命令。允许列表来自OF_LOCAL_WORKSPACE_ROOTS(ENV-only,为空即整个功能
关闭),命令执行需要单独的OF_LOCAL_COMMAND_EXECUTION=1,两者都是操作员
显式开启,运行期不可更改。路径解析用 os.Root 防护,敏感文件统一拒绝;edit
带 revision 校验,write 原子落盘。 - 后台作业:构建、测试、迁移等长命令可用
job_start以真实后台进程运行,
job_status/job_cancel/job_wait查询与等待;作业属于启动它的任务,
结束后保留一段时间供查询。 - Docker 部署的诚实说明:容器内的
local指容器内文件系统与容器进程权限。
要操作宿主机项目,必须由操作员显式挂载项目目录,或通过已接入的 SSH 服务器;
面板不会"魔法地"访问宿主机。命令以 OneFrog 进程的系统账号权限执行,
这不是沙箱。 - 已知限制:作业状态存在进程内,服务重启后不可查询,恢复的任务收到
"作业结果未知,未重放",必须只读核验工作区现状;未知副作用的变更调用不会
自动重放,需要核验后才能 finish。 - 验证范围:本测试版经过本地单测与 UI fixture 验证,尚未在生产环境的真实
长任务中验证。
v0.1.32-beta.11 · 在对话里直接回答与纠正
- Bot 提出问题时,可在聊天输入框回答当前轮,也可以明确选择「排到下一轮」。审批和凭据输入仍使用专用入口。
- Bot 工作时,可选择「纠正当前轮」,让它在下一步按最新要求调整。已经开始的操作不会因此被强行中断。
- 无法核实任务是否完成时,明确提示原因并结束本轮;旧版本留下的无问题卡等待也会在升级重启后解除。
v0.1.32-beta.10 · 回复时可以继续发消息
- Bot 回复或等待审批时,仍可继续发消息。排队消息立即显示在对话里,刷新后仍可查看。
- 同一对话按顺序处理,每条新回复都能接上上一轮答复。
- 可以单独取消还没开始的排队消息;停止当前回复、回答追问和审批仍有各自的操作入口。