Commit Graph
677 Commits
Author SHA1 Message Date
qing 36feeb4b9f feat(actpred): 新增 ONNX Runtime 推理后端 OnnxPredictor
维度从 ONNX session 元数据自动推导,预处理复现训练流水线;Pi 5 实测
12ms/次含预处理(纯推理 5.9ms),与 torch 前向差异 <1e-5。新增 6 个
单测(真实导出 ONNX 对齐验证),全量 71 测试通过。
2026-08-13 01:54:06 +08:00
qing ab60b3cafb feat(actpred): 新增 Hailo HEF 推理封装 HailoPredictor,附 AI HAT 2 调研与测速报告
零 torch 依赖(hailo_platform + numpy + PIL),vstream 形状/量化参数从
HEF 动态推导,支持 uint8 量化边缘与动作归一化 stats;新增 6 个免硬件
单测(fake hailo_platform 注入)。调研报告记录 hailort 5.x 新 API 踩坑,
测速报告给出 CPU(ORT 5.9ms) vs NPU(resnet50 4.29ms) 基准与部署建议。
2026-08-13 01:41:42 +08:00
qing 8673515d31 feat(dnfs): 折叠态用户面板改为圆形头像按钮,点击展开 2026-08-12 20:51:44 +08:00
qing f1d6e9ceb4 feat(dnfs): 用户面板增加系统节点显隐开关,localStorage 持久化 2026-08-12 20:48:50 +08:00
qing 52c6248e2b feat(dnfs): __ 隐藏节点不渲染卡片但执行特效——style/theme 注入 CSS,js 全屏执行 2026-08-12 20:45:48 +08:00
qing 1e4409f8b1 feat(dnfs): 双下划线标题节点默认隐藏,卡片和 minimap 同步过滤 2026-08-12 20:42:47 +08:00
qing 749fcd4cf7 debug(dnfs): inheritThemeStyle 加入 console.log 诊断日志 2026-08-12 15:52:17 +08:00
qing 49d9a33420 fix: 主题/样式继承查询跳过观看计数——前后端配合 noread 标记
前端 inheritThemeStyle 的 fetch 体附加 noread:true,后端 dnfs2
_handle_get_notes 检测到该标记时跳过 _bump_views,避免静默查询
污染节点的观看次数统计。
2026-08-12 15:48:12 +08:00
qing 2d4c60f643 fix(dnfs): 继承查询改用静默 fetch,避免 getNode 的 alert/401 跳转副作用 2026-08-12 15:45:48 +08:00
qing 7af58420cd fix(dnfs): 修复继承查询目标为父节点子集,await 后补充跨导航取消检查 2026-08-12 15:39:51 +08:00
qing 3fbf17d6cd Revert "fix(dnfs): 主题/样式继承改为仅查直接父节点,修复 getNode 查询目标错误"
This reverts commit 1774d7d64b.
2026-08-12 15:38:03 +08:00
qing 1774d7d64b fix(dnfs): 主题/样式继承改为仅查直接父节点,修复 getNode 查询目标错误 2026-08-12 15:36:53 +08:00
qing d7eb46b3a1 feat(dnfs): 新增主题/样式祖先继承——当前节点缺失时沿树向上搜索并注入
提取 injectSpCss 复用 CSS 注入逻辑,renderSpCss 的 applyCss 去重。
inheritThemeStyle 在 load_notes 中检查当前层 theme/style,缺失时
沿 stack 向根逐级搜索最近祖先,找到后自动注入,支持跨导航取消。
2026-08-12 15:32:47 +08:00
qing 6db0cf017e fix(aibox): 补全 common/logger 缺失的 logging 导入并固化 common 包抽取
- common/logger.py 漏导 logging / RotatingFileHandler,导致 main() 在
  Logger.init_file_logging() 处抛 NameError;现已补回(抽取自 aibox.py 时
  未携带该 import)
- 固化 aibox 模块化重构成果:common/ 包(i18n/config/constants/logger
  + __init__ 重导出)已落地,aibox.py 删除内联 I18n 改从 common 导入
- requirements.txt 新增 PySocks 依赖
2026-08-12 09:41:33 +08:00
qing bcd63e4fde refactor: 迁移 gateway.ini 至 core/configs/,删除已废弃的 confs 和 confs2 模块
- gateway.ini 从 confs/configs/ 迁入 core/configs/(真实目录替代符号链接)
- core/_set.sh 移除创建符号链接逻辑
- core/.gitignore 移除 configs 条目
- 删除 confs(Python)和 confs2(C++20 归档),配置分发已内嵌于 core
- 更新 gateway/README.md 配置文件路径
2026-08-11 23:48:27 +00:00
qing cca0cdff5f chore: 删除已废弃的 captcha 模块,由 captcha2 (C++20) 平替 2026-08-11 23:36:11 +00:00
qing 0a79a6f631 chore: 删除已废弃的 dnfs 模块,由 dnfs2 (C++20) 平替 2026-08-11 23:30:45 +00:00
qing 1190a15e1e chore: 删除已废弃的 static 模块,由 fsys (C++20) 平替 2026-08-11 23:26:45 +00:00
qing 86236bae9d update: 将 patch_002 时间戳列并入 create_sqlite3.sql 2026-08-11 10:42:56 +00:00
qing 141e2e1ef0 feat: 前端卡片用户名后显示编辑时间
updated_at 列(创建/更新均由 dnfs2 填入本地时间),新增节点时等于创建时间。
css/theme.css 新增 .owner-time 样式(小字号 / 三级灰)。
2026-08-11 10:38:39 +00:00
qing 01c699e7a6 feat: Notes 新增创建时间/更新时间列,dnfs2 添加/更新时填入本地时间
- patch_002 存量补丁:created_at / updated_at DATETIME 列
- dnfs2 add_note 同时填入两个时间戳,update_note 只更新 updated_at
- 时间格式 local_now():"YYYY-MM-DD HH:MM:S"(本地时间)
2026-08-11 10:34:09 +00:00
qing d5047d27c7 fix: 修复 getNode 双重请求导致观看数计数不准确
dnfs.js 中 8 处导航调用 getNode() 两次(一次 load_notes 一次 loadMap),
每次独立发起 HTTP 请求,导致后端 _bump_views 重复计数。
改为单次 getNode + 组合回调(.then(r => { load_notes(r); loadMap(r) })),
确保每次导航仅一次请求,views 严格 1:1 对应。
2026-08-11 10:18:52 +00:00
qing c699ff1794 update: 将 patch_001 并入 create_sqlite3.sql
新建库一步到位含 Notes views 观看人数列及 pid/owner 索引;
patch_001 保留用于存量库迁移。
2026-08-11 10:11:07 +00:00
qing c9777cbff8 feat: 前端卡片观看数/子节点数接线后端
- dnfs2 get_notes 为每个节点附上 child_count(一次 IN 批量查询统计子节点数,best-effort)
- dnfs.js 卡片眼睛=views 观看数、转发=child_count 子节点数(原 share_count/visit_count 后端无字段恒为 0)
2026-08-11 10:06:33 +00:00
qing 986acab1c5 feat: Notes 新增 views 观看人数列,dnfs2 get_notes 打开节点时自增
- db2 补丁 patch_001:Notes 增加 views 列(默认 0),补齐 pid/owner 索引
- dnfs2 get_notes(pid) 打开节点时对 pid 的 views 读改写 +1(best-effort,失败不影响主流程)
2026-08-11 09:51:14 +00:00
qing 049b894416 Merge branch 'main' of https://git.cancerai.top/qing/blackbird 2026-08-11 09:20:29 +00:00
qing 0aa0710a9e fix: 统一 .mt 首行 '-' 占位符语义——actpred 对齐 pybot/bot4cj 运行时(填 0),弃用 @Servo max 列填充 2026-08-11 16:30:39 +08:00
qing 6d79fc919f update: actpred 默认图像分辨率 64→224 2026-08-11 02:35:22 +08:00
qing fee1241e49 feat: pybot 新增 @Camera 摄像头块——picamera2 惰性导入,后台守护线程维护有界帧队列(满丢最旧) 2026-08-11 02:32:20 +08:00
qing 21d93fc505 fix(ai_review): DeepSeek API 调用添加 8s 超时,防止 worker 线程阻塞导致服务不可用 2026-08-10 16:18:35 +00:00
qing a8ffa73a6b fix: pybot 审计修复——插件异常类型、I2C 引用校验、卡尔曼除零守卫、CLI 端到端测试 2026-08-10 16:16:40 +00:00
qing 09dc36d591 refactor: 移除全部启动脚本中的 sleep 延时与 services.yaml 中的 sleep_before 2026-08-10 16:05:26 +00:00
qing da8ebbf9e6 docs: 研究整理——同步认证迁至 ca 后的过时描述、补 liblogc 与测试清单
- ARCHITECTURE/MODULES:ca 版本 v1.1.0、共享基础库补 liblogc、tests 描述与实际 9 个文件对齐、docs 篇数 57
- core README/报告/HttpTask 注释:管理员鉴权由"gateway 唯一权威"更正为 ca(v0.9.0 认证迁址后描述滞后)
- ca/gateway README 架构图 static:9200 → fsys:9200、db:8005 → db2:8005
- 主 README 与 blackbox README 补 test_core_confs.py,test_gateway 文档更新为 ca:8443 契约
2026-08-10 15:55:43 +00:00
qing 7467e7bd42 docs: 整理文档——修复全部 file:// 失效链接、补齐缺失模块 README
- 将 7 个文档中的 mac 绝对路径链接(file:///Users/qingsong/...)转换为仓库相对路径,
  并修正错误目标:aibox 入口 main.py → aibox.py、pymsg C++ 实现 → libmsg/inc/us/Msg.hpp、
  bot4cj cpp/cnn → cuda
- 主 README 补 liblogc 基础库条目与 confs2 归档说明,安装顺序补 ca
- 新增 liblogc / libtry / confs2 / 3d / memdb README
- 同步 db2 脚本迁移(db/create_sqlite3.sql → db2/scripts/)导致的失效引用
2026-08-10 15:48:29 +00:00
qing 7072e33d6f update 2026-08-10 23:46:02 +08:00
qing 30e064996c docs: 整理文档——分析类归位 reports/、补 captcha2/smtp3 README、修复全部失效链接
- profile/evaluation/promo_pack 移入 docs/reports/(按文档管理约定),内部引用同步
- 补建 captcha2/README.md、smtp3/README.md(主 README 曾引用但缺失)
- 重写 README 测试章节(实际为 tests/blackbox/,纯标准库零依赖)
- 清除全部 docs/INDEX.md 残留引用;legacy README 中已删除 ini 的失效链接改文字
- 全仓库链接检查 0 broken
2026-08-10 12:45:26 +00:00
qing 2817dbbab2 docs: 收尾同步——waf/smtp README、项目画像、测试套件与遗留模块标注
- waf/smtp README: 链路改 ca:8443 → gateway:8445,启动描述改 services.yaml
- profile/evaluation: 拓扑/请求链路/端口表/模块表同步,口径漂移项标记已解决
- tests/blackbox: README 与 config.py 标注测试条目→生产服务映射(保留历史条目名)
- static/dnfs/db/captcha/confs README 顶部加"已废弃"标注
2026-08-10 12:35:45 +00:00
qing ad5d91c47a docs: 同步文档至当前生产架构(ca:8443 → gateway:8445、C++20 重写版为主、confs 内嵌 core)
- README: 更新架构图/链路/服务表/端口表,static/dnfs/db/captcha/confs 标注遗留
- MODULES/ARCHITECTURE: 事实来源改为 services.yaml,配置链路收敛为仅 gateway.ini
- fsys/dnfs2 README: 架构图改为 ca 验签与纯 CLI 配置
2026-08-10 12:31:35 +00:00
qing 77bc367d03 dnfs2: 移除样式节点 persist 全局保持机制,样式仅节点作用域生效 2026-08-10 11:52:15 +00:00
qing 75a45313c4 dnfs2: 特殊节点移除 link 类型,精简为 js/file/style/theme 四类 2026-08-10 11:17:19 +00:00
qing dfa8d0406a docs: 新增 dnfs 自定义主题说明(style/theme 特殊节点使用指南) 2026-08-10 11:09:20 +00:00
qing c54e7aca83 dnfs2: 特殊节点移除 image 类型,发布权限放宽为节点拥有者或管理员 2026-08-10 10:52:30 +00:00
qing 75897c68eb dnfs2: 特殊节点新增 style/theme 类型,支持界面样式注入与主题换肤 2026-08-10 10:39:03 +00:00
qing 42b4a89ed3 清理残留 ini:删除 db.ini/redirect80.ini/example.ini
- db.ini/redirect80.ini:对应服务已迁入 CLI args,ini 为残留
- example.ini:旧 gateway 示例模板,无消费方
- README.md:移除 example.ini 表行
2026-08-10 10:09:58 +00:00
qing c9e8d04815 fsys: 迁移 static.ini 至 CLI args,移除 confs 依赖
- fsys/src/fsys.cpp: 移除 parse_ini/IniMap/confs RPC 调用,改为
  boost::program_options 14 项 CLI 参数,配置优先级 CLI > env > 默认值
- fsys/Makefile: 添加 -lboost_program_options
- core/services.yaml: fsys 全部参数迁入 CLI args
- confs/configs/static.ini: 已删除
- README.md: 更新 fsys 配置说明,移除 static.ini 表行,更新安全约定
2026-08-10 10:08:29 +00:00
qing 3b6a0fb002 captcha2: 迁移 captcha.ini 至 CLI args,移除 confs 依赖
- captcha2/src/main.cpp: 移除 fetch_config_from_confs/merge_ini/RpcClient,
  扩展 CLI 至 11 项(--instance/--log-level/--len/--ttl/--font-path/
  --max-store/--rate-limit),配置优先级 CLI > env > 默认值
- core/services.yaml: captcha2 全部 8 项参数迁入 CLI args
- confs/configs/captcha.ini: 已删除
- README.md: 移除 captcha.ini 表行
- _inst.sh: 新增 inst_module captcha2
2026-08-10 09:56:41 +00:00
qing 3eafc15602 smtp3: 迁移 smtp.ini 至 CLI args,修复 .env 加载与 TLS SNI
- smtp3/src/main.cpp: 移除 confs 依赖(fetch_config_from_confs/merge_ini),
  扩展 CLI 参数至 16 项(--instance/--log-level/--smtp-port/--code-len 等),
  配置优先级改为 CLI > 环境变量 > 默认值
- smtp3/_run.sh: 新增 ../smtp/.env 加载(与 Python smtp_v2.py 共用凭据),
  传递 "",移除 sleep 1
- smtp3/src/main.cpp: SmtpClient 添加 SSL_set_tlsext_host_name (SNI)
- core/services.yaml: 回退到 smtp (Python),smtp3 待生产验证后切换
- confs/configs/smtp.ini: 已删除(配置迁入 services.yaml CLI args)
- README.md: 移除 smtp.ini 表行,更新部署安全约定
- _inst.sh: 新增 inst_module "smtp3"
2026-08-10 09:44:38 +00:00
qing 80969adc9b db2: 移除confs依赖,配置全部经CLI传递(CLI > ENV > 默认值)
- db2.cpp: 移除 RpcClient/parse_ini/IniMap,load_config 改为
  默认值 → ENV → CLI 三层;新增 --db-url/--retention-days/
  --max-records/--cleanup-interval CLI 参数
- core/services.yaml: db2 条目展开为完整 CLI 声明(10个配置项)
- db2/README.md: 配置章节重写为 CLI 参数表 + 环境变量表 +
  services.yaml 示例
- README.md: 配置链路移除 db2,confs 配置表删除 db.ini 行

与 ca/redirect80 保持一致的配置模式,db2 不再依赖 confs 服务。
2026-08-10 09:03:28 +00:00
qing 0954644ee3 redirect80: 移除confs依赖,配置全部经CLI传递(CLI > ENV > 默认值)
- redirect80.py: 移除 configparser/pymsg.RpcClient 导入和 confs 拉取逻辑,
  配置改为三层加载(默认值 → 环境变量 → CLI 参数)
- core/services.yaml: redirect80 条目展开为完整 CLI 声明
  (--host/--port/--redirect-port/--redirect-code)
- redirect80/README.md: 配置表新增 CLI 参数列,init.txt 章节重写为
  services.yaml 示例
- README.md: 配置链路移除 redirect80,confs 配置表删除 redirect80.ini 行

与 ca v1.1.0 保持一致的配置模式,redirect80 不再依赖 confs 服务。
2026-08-10 06:40:46 +00:00
qing 9d548c064f refactor(ca): v1.1.0 配置体系重构为纯 CLI 传递
- 移除 confs 依赖:删 Conf.hpp 与 confs/configs/ca.ini,配置加载改为 CLI > 环境变量 > 默认值三层(与 dnfs2 同模式)
- 新增 16 个配置选项,env 以 CA_* 为主并兼容旧名(LISTEN_ADDR/UPSTREAM_GATEWAY/DB_* 等),启动时配置完整性校验
- 原 ca.ini 配置值迁入 core/services.yaml ca 条目 args
- 修复伪造 Token 触发 500:verify_token 统一捕获 RSA 验签异常,按验签失败返回 401(符合黑盒 B3/B4 契约)
- 同步更新 ca/README.md 与根 README.md
2026-08-10 06:13:43 +00:00