Repository navigation
release: v0.6.0 —— 过夜打磨批 + 技能体系重构 + 会话管理增强 - #47
Merged
Merged
Conversation
…entities/groups(智能体组);修复 skills 未入镜像
feat: 编成目录重构 entities/ + 单体模式自由化 + 提示词体系与 UX 迭代
…建组和子个体(GET /api/templates + agent_manage templates/create + 前端模板选择)
…ocker 构建注入 GIT_HASH
…p -d,状态轮询端点 + 设置页一键更新按钮与恢复检测
…ration file provided
…min,一键更新内层构建不再触发 rustup 全量同步)
feat: 编成模板机制 + 版本更新与一键更新 + 构建链路健壮化
…ExmConfig::default)
…外扣减:任何扣减都会落成底部不对称缝);headless 实测:修正前顶 18px/底 6px 失衡 → 顶 10px/底 10px 对称,外层溢出 0
…是复合键 exm.drafts,切视图重挂载读回已发送文本(两键都清);②回填乱序覆盖:selectSession/run.finished/unit.finished/WS 断连补偿四处的 messages 整体覆盖加选择代际守卫(selectSeq,快速切换时旧响应不得覆盖新状态)
…,与 liveOrch「输出中」正文卡同体分裂(大小写还各异:identifier machina vs 显示名 Machina);单智能体模式下过滤掉交互主体自身的 liveParts 卡(过程并入 liveOrch 卡的工具栏,后者本就聚合 thinking + runToolCalls)
…随滚动进视线;原先流式输出期间用户盯底部根本看不到上方静态卡);② 审批到达强制拉底(阻塞等待时效性强,上翻回看也该被打断);③ 侧栏「审批」导航项加 pending 计数角标(amber 脉冲徽标)+ 60s 轮询兜底(WS 丢事件/刷新后计数可恢复)+ approval.required 事件即时刷新
…丢弃 approval.required,内联审批卡永不出现,用户被迫去独立页面裁决(阻塞等待窗内错过即工具受阻);② selectSession 回放恢复内联审批卡:approvals 只由 WS 实时事件维护,刷新/切会话后清空——从事件流尾部扫 approval.required 对照 approvals API pending 集过滤仍待决的卡;③ GET /api/config security 块补 approvalWaitSecs 回显(PUT 可写但 GET 漏字段,设置页该字段恒空)
…strator.emit 才落库,gate_command 直接 events.send),事件流回放永远回放不出;pending 审批表自带 sessionId 归属,直接过滤恢复刷新/切会话后丢失的内联卡
…门拦截原地挂起,轮询窗口耗尽致「聊天回复」项假失败;指令显式禁工具只验证聊天链路往返
…直推已放行跨会话事件的口径不一致;恢复全部 pending,卡上「跳转子会话」按钮承担归属导航
…照合并,跨会话口径与直推/恢复一致
…悬停看全文,toast 报错截断 80 字符,表格加横向滚动兜底;连接类报错(IO error: Connection refused 等)曾把整表挤出画面
…etch 对齐等高;sticky 吸顶与滚动拆到内层 cfg-nav-scroll(sticky 放外层会破坏 flex stretch 等高);窄屏横条分支同步覆盖(position:static + 横排)
….md/PROMPT.md 互认,存量目录未迁移提示词不丢);写入即迁移(编辑存量 PROMPT.md 保存时落盘 AGENTS.md、删旧名、回写 def.promptFile);模板与 machina 目录同步改名;prompt_exists 双名判定
…aphite;antd token/CSS 色阶块/强调色矩阵/i18n 同步清理;设置页布局双修:短页 min-height(100dvh-120px) 占满视口不再悬空,长页侧栏卡 max-height 视口封顶不再随内容拉出数屏空壳(内层 sticky 保持条目可视)
…付的话术;读数条 GROUP 行同步分叉(single 模式显示 AGENT 行)
- 设置页多余滚动根治:删 min-height 视口魔数改全链 flex 填充 (app-content:has(.settings2) 纵向 flex → view-stage/pane-wrap/settings2 逐层下放剩余高度),短页占满零溢出、长页内容自然滚;cfg-nav 封顶改 精确表达式(100dvh − 遥测条 − 168px),内层 sticky 滚动区同口径 - 掩码哨兵不再伪装已输入文本:新增 MaskedInput/MaskedPasswordInput (呈现层隐藏哨兵=空框+placeholder「已配置(留空=沿用)」,表单值不动 提交语义零改动),接入设置页/通道页/模型 Key 池/插件凭据;插件凭据 哨兵统一全局 KEY_MASK - 通道管理者补全:Channel.admins 清单(外部用户 ID),判权跨通道匹配 (跟人不跟执行通道——QQ 里点播 B 站评论查任一通道清单命中即 admin); 身份管控豁免同口径;设置项提至表单主体(不再藏高级折叠) - 设置页「界面」分区置顶 + 默认选中 - WS 应用层心跳修复(20s ping 计活,断连误判根除) - 文案精简:设置面板 desc 去冗余尾巴、hotTip 拼接移除、空态文案去 「独立/全程」强调、帮助文本不再教用户认掩码 - cargo fmt 波纹(telegram 等格式化)
此前 | && || ; 一刀切拒绝,agent 的基本干活形态「curl 拉数据 | python3 解析」整条被拒。改为链式分隔符逐段白名单判定: - 分隔符(| && || ;):split_chain_segments 引号感知分段, 每段首命令(+子命令前缀)都过白名单才放行——危险命令藏在 任何一段都拒绝,攻击面与单命令一致 - 逃逸/写入语义(` $( > < &):仍一律拒绝——命令替换绕过解析、 重定向写文件、后台执行,白名单管不住 - 引号内符号不参与判定(URL 带 & 不误判、引号内管道不分段) - 工具 schema 与错误提示同步更新
- 观看提示注入评论写作规范(硬要求):字数预算提前告知(宁短勿长、 一句一个点)+ 反 AI 味负面清单(禁套话/排比/总结升华/表情轰炸) + 人设优先声明——此前只有一句软约束「不要套模板腔」,与智械体 人设的机械语言指令打架,模型无所适从 - video__act 工具描述同步规范(点播场景只看得到 schema,不看观看提示) - 超长不再静默截断:超 maxCommentChars 回拒并要求重写(挑一个点一两句 说完),避免拦腰砍出半句 AI 腔;clean_comment 硬截断保留为最后兜底 - AI 味套话检测(detect_cliche):命中高频总结腔/强调轰炸词(总的来说/ 不得不说/泪目/yyds/首先其次最后…)回拒并给重写指引,不静默修剪 - 观看提示尾部「风格保持自己的说话方式」升级为「你是谁就怎么说话: 人设与口癖优先于本提示通用措辞」 - 「写不出真诚的评论就只看不说」——强行硬夸比沉默更假
…描述清理 - PROMPT.md 恢复为系统级提示词正式名(AGENTS.md 是项目级规则语义): 读侧优先级反转(PROMPT.md 优先、AGENTS.md 回落)、写入即迁移方向 反转(存 AGENTS.md 保存时落 PROMPT.md 删旧名回写 promptFile)、 新建个体默认 promptFile = <id>/PROMPT.md;machina 目录与四个模板改名; i18n 与协议文档同步 - web_fetch 视频平台引导:抓到 bilibili/youtube 链接时注入提示——有 video__act 指路专用工具(登录态 + 风控养护,评论才真实上屏);没有则 明确告知无法实际评论、禁止把评论文本写进回复冒充已发布(修复点播 评论假装完成:通道停用致工具面消失时 agent 裸抓 API 交差) - 设置页头删除多余解释性描述(settings.desc 整条移除,zh/en + 引用点) - cargo fmt 波纹
- 置顶:Session.pinned 字段(sqlite 列 + 旧库 ALTER 平滑升级 + fsdb 顺带), PUT /sessions/:id/pin 端点,列表排序置顶优先;「⋮」菜单 pin/unpin、 标题侧小图钉、置顶分组常驻列表头(不随时间分组沉底);乐观更新失败回滚 - 末条预览上列表:后端 list_sessions 一直算好的 lastMessagePreview 前端 从未显示(副标题浪费在几乎全列表同名的组名上)——副标题改为末条预览, 无预览回落组名;搜索同时匹配标题与预览 - 未读圆点:切走会话期间收到新末条(后台回复/通道消息)计未读,行右上 accent 圆点带计数(9+ 封顶),进入会话即清
…事件自检 P0: - TraceStep 工具步骤键名修为 callId(enum 容器级 rename_all 不作用于变体字段, 字段级 rename+alias 兼容旧蛇形 call_id 存量,回归测试锁定三形态) - Key 变两把修复:save_profile keep/掩码沿用的重复首键收敛(明文输入不误删)、 activate/save 的运行时补位键不落档案、put_config 回写档案时剔除运行时补位 P1: - 点播纪律段随 video__* 工具注册注入(评论必须经 video__act / dry-run 转述标注 「未实际发送」/ 工具缺失如实报告),观看提示 dry-run 口径同步 - 回收站保留契约:TrashConfig(保留期+容量上限,双约束先到先清)、周期清理 (1h 巡检+启动错峰)、审计落账 trash_cleanup、设置页「回收站」分组 - 会话导出文件名补日期、会话列表「全部已读」 P2: - napcat 事件管道自检:last_event_at 对账(连结后 30min 零事件 → degraded 限频 告警,事件到达自动回 ok,状态面板带恢复建议) - RSS 盘点结论:无通道绑定回落默认体、逐源失败不阻塞、超时回收清理——纯健康
skills_dir 此前解析到项目根 skills/(agents 结构重组的遗留路径),而技能实体 实际存放于 entities/skills/(d8e986c 起 9 个出厂技能包):容器内根 skills/ 恒为空目录,技能面 API 返回 0、触发词注入全部失效。 - skills_dir 改指 entities/skills;旧根 skills/ 存量 json 自动迁移(新目录 优先,迁移失败退回旧目录只读兼容) - Dockerfile 移除 COPY skills(空目录不再进镜像);compose 移除 /app/skills 挂载(entities 挂载已覆盖技能目录) - 回归测试:新路径优先 / 旧目录迁移 / 新旧并存
弃用私有 json 单文件格式,对齐跨工具通用的 SKILL.md 约定: - 存储:entities/skills/<id>/SKILL.md(frontmatter:id/name/description/ triggers/agents/createdAt + 正文=instructions);REST 面 SkillDef 契约不变 - 装载:SKILL.md 优先 + 旧 *.json 兼容读(同 id 双源不分叉,存量零迁移) - 写入:write_skill 落 SKILL.md 并清除同 id 旧 json;remove 双格式同清 - 解析:行级 frontmatter(protocol 文档同风格,零 YAML 依赖),triggers/ agents 支持内联列表与逐行 - item 两种写法 - 存量 10 个技能包(含容器删除测试误删后恢复的 git-safety,绑定清空为 全体可见)一次性转为 SKILL.md - 回归测试 +3:SKILL.md 往返 / 同 id 双源优先级 / 逐行列表与异常路径
- 登录页 hero:轨道环资产层(OrbitRings:同心虚线轨道 + 在轨卫星点,集群母题)、 角落微标(EST. 2026 / EXMACHINA-PROJECT);「智械计划」标语行回退(恢复 i18n login.sub 原标语位) - TelemetryBar / TimelineTag / 各 views 的品牌语汇对齐(用户自有工作一并入库) - skills/git-safety.json 旧路径删除记录(技能已迁 entities/skills/<id>/SKILL.md) - MEMORY.md 组浅层记忆快照例行刷新
PR #47 首跑 CI 暴露的积欠(CI 仅 PR 触发,dev 直推从不检查): - 测试函数名 snake_case 化 9 处(中文+英文混名里的大写字母 SKILLMD/None/JSON/Core/VideoState/exmMin 触发 non_snake_case) - 集成测试 &PathBuf → &Path、&[s.clone()] → from_ref、永真式断言修正、 重复 #[test] 属性、type_complexity 起别名(SpawnExec) - e2e 技能断言同步新目录口径:entities/skills/<id>/SKILL.md(旧脚本 仍写根 skills/*.json,技能目录迁移后该断言必挂) - e2e 通道会话断言改全局视角:machina 单智能体在编后通道默认绑定 single:machina,入站会话归属 single scope,原激活组视角断言必挂 - e2e 首启引导自持:本机 config 残留 keySetupDismissed 会漂进验收, 显式清零回到首启原态 - 场景1 永真断言修正:plan 模式写被拦、mod.rs 未落地,读它必败—— 改读工作区根(必然存在),保住「读不拦截」本意
CI 跑 rust-1.99(for_kv_map 已稳定),本地 1.95 尚无该 lint—— 两处 map 迭代触发:triggers.rs 热驱槽位改 values_mut()、 bridge.rs 插件退出唤醒改 into_values()。其余 for (_, x) 均为 Vec 元组迭代(不触发),已逐一核对。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
v0.6.0 变更集
P0 修复
技能体系
会话管理
视频/点播
基础设施
合并方式:Squash and merge(main 分支规则禁止 merge commit)
合入后 release 流水线自动打 tag v0.6.0 + 全平台构建 + 发 GitHub Release。