Skip to content

docs: 仓库链接修正(KurohaneKaoruko → ExMachina-Project) - #48

Merged
BlackStar-Agent merged 395 commits into
mainfrom
dev
Oct 31, 2026
Merged

BlackStar-Agent merged 395 commits into
mainfrom
dev

Conversation

@BlackStar-Agent

Copy link
Copy Markdown
Collaborator

README/贡献指南/安全报告/安装与快速开始脚本中的克隆地址、raw 直链、Releases 入口更正为组织仓库,共 9 文件 20 处。

版本号未 bump(仍为 0.6.0,tag 已存在)——release 流水线按设计整条跳过,合并不发版。

合并方式:Squash and merge

feat: 编成目录重构 entities/ + 单体模式自由化 + 提示词体系与 UX 迭代
…建组和子个体(GET /api/templates + agent_manage templates/create + 前端模板选择)
…p -d,状态轮询端点 + 设置页一键更新按钮与恢复检测
feat: 编成模板机制 + 版本更新与一键更新 + 构建链路健壮化
…heck

fix: 更新检查分支感知——本地在什么分支就对比该分支的上游
feat: 单体智能体直接工具循环(常见单 agent 同款) + 编成模板 + 版本更新/一键更新
KurohaneKaoruko and others added 29 commits October 30, 2026 13:25
…,与 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 保持条目可视)
- 设置页多余滚动根治:删 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 元组迭代(不触发),已逐一核对。
仓库已迁移到组织账户,README/贡献指南/安全报告/安装与快速开始
脚本(sh + bat)中的克隆地址、raw 直链、Releases 入口一并更正,
共 9 文件 20 处。
删除 quickstart.sh/.bat,install.sh/.bat 重写为交互式双路径安装器:

- 无参运行交互询问:1) 预编译发行版(默认,无需 Rust/Node)2) 源码构建
- --bin / --src 跳过询问直达路径;curl | bash 管道安装同样可交互
  (sh 侧读 /dev/tty 绕开 stdin 管道;提示走 stderr 防命令替换污染)
- 交互提示/预检/校验和/升级语义/启动收尾全部沿用两脚本既有实现,
  Windows 侧 PowerShell Read-Host 天然走控制台不受管道影响
- README / README_EN / CONTRIBUTING 同步:安装入口合一为 install
@BlackStar-Agent
BlackStar-Agent merged commit 25f3674 into main Oct 31, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants