qing
|
09556c9ef4
|
feat(aibox): run_command 强制流式输出;子代理升级为完整工具代理;补充情绪应对策略
- run_command 移除 stream 参数,删除非流式 subprocess.run 执行路径,统一走流式输出
- 子代理 (create_subagent) 从轻量无工具升级为拥有全部工具的完整代理,支持多轮工具调用与 max_turns 限制,结束后自动总结
- 系统提示词补充子代理使用建议与情绪应对策略
|
2026-08-05 00:09:25 +08:00 |
|
qing
|
cc671a9fce
|
feat(dnfs): 含前端内容的节点渲染到当前页面时自动执行(隔离iframe沙箱启动特效)
|
2026-08-04 23:57:39 +08:00 |
|
qing
|
f7ed1f785b
|
fix(dnfs): 前端代码节点改为隔离iframe沙箱运行,特效不再污染父页面导致运行后无法进入节点
|
2026-08-04 23:51:21 +08:00 |
|
qing
|
2ff7908bc7
|
feat(db): _view_db -n 改为取最后 N 行
按 rowid 倒序取末尾 N 行,外层再正序展示,便于查看最新日志;
-w 条件放入内层子查询,语义为"最后 N 条匹配记录"。
|
2026-08-04 23:44:59 +08:00 |
|
qing
|
745ce06f85
|
fix(dnfs): 前端代码节点运行改为局部输出缓冲+捕获窗口自动恢复console,避免应用自身日志(pid)刷进输出框干扰导航
|
2026-08-04 22:47:48 +08:00 |
|
qing
|
f17a6a8233
|
fix(dnfs): 前端代码节点注入脚本包IIFE隔离作用域,避免覆盖页面全局导致运行后无法进入节点
|
2026-08-04 22:29:10 +08:00 |
|
qing
|
30360cb106
|
feat(dnfs): 前端代码节点支持完整HTML/CSS/JS并注入当前页面
将内联 JS 节点扩展为内联前端代码节点:内容存完整 HTML 文档,
运行后解析注入当前页面——style 注入 head、script 在全局作用域执行
可操作整页加特效、body 渲染到节点下方容器,console 输出捕获到下方。
|
2026-08-04 22:24:33 +08:00 |
|
qing
|
ec3df34b43
|
feat(db): 新增修复 Notes 表 pid 悬空节点的脚本
|
2026-08-04 22:19:05 +08:00 |
|
qing
|
c7441c1c6f
|
fix(dnfs): JS代码节点改用<script>注入执行以兼容CSP
new Function/eval 被 CSP(script-src self unsafe-inline) 拦截,改用注入内联
<script> 执行,避免引入 unsafe-eval。代码在全局作用域运行可操作页面加特效,
console 输出经 hook 捕获到输出区(保留原 console 行为)。
|
2026-08-04 22:11:19 +08:00 |
|
qing
|
fed2d42472
|
refactor(dnfs): JS代码节点改为在当前页面执行以支持页面特效
移除 iframe 沙箱方案,改为 new Function 在当前页面上下文执行,
代码可直接操作 document/window 对页面施加特效;console 输出捕获到下方区域。
|
2026-08-04 22:08:15 +08:00 |
|
qing
|
2918f2c83c
|
feat(dnfs): 特殊节点类型由网页代码(html)改为JS代码(js)
将 _sp 标识从 html 改为 js,运行方式由新窗口 document.write 改为
插入页面 iframe 沙箱执行,捕获 console 输出,postMessage 自适应高度。
后端 dnfs.py 白名单、校验、审核文本同步更新。
|
2026-08-04 22:05:01 +08:00 |
|
qing
|
87538e7729
|
fix(waf): 豁免扩展到所有笔记写接口 (add/update/edit/delete_note)
修正正则匹配 query 前缀问题,统一豁免笔记接口的 CRS 误报规则。
|
2026-08-04 21:52:15 +08:00 |
|
qing
|
fd088f5959
|
fix(waf): 对 /add_note 接口豁免 CRS 误报规则
嵌入式/技术笔记含 C 代码(if()/select/sbit)被 SQLi/命令注入规则误判拦截。
仅移除误报规则(942170/942230/932xxx/934xxx),其余 CRS 规则及接口仍生效。
|
2026-08-04 21:32:14 +08:00 |
|
qing
|
15f8c9552d
|
fix(core,mgmt): list 返回 running+command 字段,命令列不显示为空
原 list 把 check()(命令字符串)放进 status 字段,前端误当状态显示,
命令列取不存在的 command 字段导致显示为空。
修复:list 返回 running(bool) + command(string),前端对应显示状态与命令。
|
2026-08-04 21:31:21 +08:00 |
|
qing
|
43c5821d3d
|
fix(gateway): 修复代理 URL 双斜杠导致下游 404
handleProxy 拼接转发 URL 时,target_path 以 '/' 开头,
url = t_url + '/' + target_path 会产生双斜杠(如 //list)。
core 等使用精确路径匹配的下游服务返回 404。
修复:仅当 target_path 不以 '/' 开头时才补斜杠。
|
2026-08-04 21:20:24 +08:00 |
|
qing
|
1d7641cc89
|
fix(core): 纯 HTTP 启动 HTTP 服务(不需要 TLS,符合项目约束)
core 的 HTTP 服务仅供 gateway 内部代理,且 WAF 已在前端终止 TLS。
原代码强制加载 server.crt/server.key,但证书不存在,导致 core 无法启动,
所有请求被 gateway 返回 500 'Internal Server Error'。
修复:使用无 TLS 的 3 参数 HttpServer 构造函数,纯 HTTP 启动。
|
2026-08-04 21:11:35 +08:00 |
|
qing
|
6a68b3393d
|
docs(waf): _fetch_crs.sh 生成的 coraza.conf 模板指向 tuning.conf
避免重跑脚本覆盖调优配置,模板不再包含重复的阈值/偏执规则
|
2026-08-04 21:11:26 +08:00 |
|
qing
|
0700491300
|
取消注释
|
2026-08-04 21:02:08 +08:00 |
|
qing
|
d036af935f
|
feat(waf): 启用 OWASP CRS 异常评分制自动拦截
- SecRuleEngine On 自动拦截异常评分达阈值的请求(规则 949110)
- 新增 rules/local/tuning.conf 调优文件(偏执等级 1 + 阈值 5/4)
- tuning.conf 独立于自动生成的 crs/coraza.conf,重跑 fetch 不覆盖
|
2026-08-04 20:40:25 +08:00 |
|
qing
|
34cd295005
|
feat(core): mgmt 接入 core 进程管理 + 管理员认证
- gateway 新增 POST /admin/verify 验签接口,供内部服务校验管理员 Token
- core 的 /list /exec /kill 接入管理员认证(调用 gateway 验签,fail-closed)
- gateway 代理 opened 白名单加入 core:5200
- mgmt 管理页显示当前用户与角色,进程页接入 core 进程管理接口
|
2026-08-04 20:00:24 +08:00 |
|
qing
|
c8812dd27c
|
static: 迁移 mgmt 前端到 static/public 并移除静态列表
将 mgmt Jinja2 模板原封不动迁移为纯静态 HTML/CSS,
删除用户列表与模块列表,改为静态提示文字。
|
2026-08-04 19:23:57 +08:00 |
|
qing
|
3460a157d0
|
docs: 新增 libth 安全审计与 aibox 开放版开发计划
|
2026-08-04 19:02:22 +08:00 |
|
qing
|
fe618be1fa
|
fix(captcha): 验证码存储容量上限防 OOM (P1-1)
新增 MAX_STORE_SIZE(默认 10000,可配置 max_store/CAPTCHA_MAX_STORE),
_handle_image 在清理过期项后检查容量,超限拒绝生成并返回错误,
防止攻击者高频生成验证码填满内存。
|
2026-08-04 18:40:36 +08:00 |
|
qing
|
4d9bb5d940
|
fix(libhttp): WebSocket 发送/代理队列上限防 OOM (P1-6)
- 新增 setMaxWsQueueSize()(default 1000),每个入队点检查
- wsSend / onProxyReadClient / onProxyReadBackend 超限关闭连接
- 更新审计文档 P1-6 状态、README v3.4.3
|
2026-08-04 18:27:50 +08:00 |
|
qing
|
37c6d401d6
|
fix(libhttp): 服务器读超时防 Slowloris (P1-4)
- 新增 setHeaderTimeout()(default 10s) / setReadTimeout()(default 30s),对齐 WAF
- doSSLHandshake 设置头超时覆盖握手,doRead 拆分为 async_read_header (头超时) + async_read (体超时)
- doWsRead 每次读取设置空闲超时,自动清理长期空闲连接
- 更新审计文档 P1-4 状态、README v3.4.2
|
2026-08-04 17:39:27 +08:00 |
|
qing
|
507054c4b2
|
fix(libhttp): WebSocket 单条消息大小限制防 OOM (P1-3)
- 新增 setMaxWsMessageSize/getMaxWsMessageSize(默认 16MB,与 Beast 默认一致)
- 服务端 doWsUpgrade/doWssUpgrade 与代理流 onProxyConnect/onProxySslHandshake 创建后调用 read_message_max
- 超限消息由 Beast 在分配内存前拒绝并关闭连接
- 更新审计文档 P1-3 状态、README v3.4.1
|
2026-08-04 16:03:06 +08:00 |
|
qing
|
85e0d0740b
|
fix(libhttp): HttpClient 响应大小限制防 OOM
- request_stream_sync 改为真流式,按块回调不二次缓冲
- 新增 set_max_response_size/get_max_response_size(默认 10MB,对齐 WAF)
- write_callback 超限返回 0 中止传输并抛异常
- 更新审计文档 P1-2 状态、README v3.4.0、INDEX 移除不存在的文档
|
2026-08-04 15:12:06 +08:00 |
|
qing
|
dc52ec13ad
|
fix(aibox): 工具结果超长仅返回提示,隔离各会话命令执行器
- 工具结果超过 max_result_length 时不再保留截断内容,仅返回提示信息,避免超大结果污染 AI 上下文
- 每个任务/WebSocket 连接使用独立 SubprocessCommandExecutor,避免 cancel() 误杀其他任务/用户正在运行的子进程
|
2026-08-04 13:11:37 +08:00 |
|
qing
|
5ff1dfa4d2
|
系统状态技能
|
2026-08-04 12:57:27 +08:00 |
|
qing
|
2eb6d3c310
|
生成技术手册技能
|
2026-08-04 12:46:50 +08:00 |
|
qing
|
d921f84b83
|
feat(aibox): WebSocket连接用户独立AI实例,支持多用户并发对话
- 每个连接创建独立DeepSeekChat实例,拥有独立messages/工具注册表/消息锁
- 对话状态与并发控制从全局改为会话级,多用户可同时与AI对话互不干扰
- 中断/重置/重载提示词等命令改为针对当前连接的会话AI
- 技能管理器懒加载共享,避免每个连接重复扫描技能
|
2026-08-04 11:44:57 +08:00 |
|
qing
|
69a8eee192
|
feat(aibox): 调度器任务间上下文隔离
- 每个定时任务创建独立DeepSeekChat实例,拥有独立messages/工具注册表/消息锁
- 任务与WebSocket主对话互不干扰,消除并发冲突与上下文污染根因
- 共享技能管理器懒加载一次供所有任务复用,避免重复扫描技能
- DeepSeekChat支持传入skill_manager复用,任务实例history_manager=None不污染历史
|
2026-08-04 09:23:51 +08:00 |
|
qing
|
fa9679b7a6
|
fix(aibox): 修复并发线程导致对话历史污染引发HTTP 400错误
- 添加线程锁(RLock)保护 self.messages,防止WebSocket与调度器线程并发修改
- 重写 _repair_tool_pairs 方法,支持穿透system消息查找tool响应、去重、清理孤立tool消息
- 新增 _validate_enhanced_messages API调用前最终校验,就地修复消息结构
- 调度器执行定时任务前先cancel+wait锁释放,避免与WebSocket对话冲突
- /new命令和global_exit_handler改用锁保护的reset_conversation,不再裸改messages
- 新增 is_busy() 非阻塞方法供外部判断AI是否正在处理中
|
2026-08-04 09:11:31 +08:00 |
|
qing
|
53ddcb364f
|
feat(aibox): 创建/安装技能工具统一生成 .md 扩展名 + 下线旧版 smtp.py
- CreateSkillTool/InstallSkillTool 改为生成带 .md 扩展名的技能文件,与人格技能文件规范一致
- 同步更新 7_extension_skills.md 模板与工具描述
- 删除旧版 smtp.py(P0-1)并同步审计文档与 README
|
2026-08-04 08:26:57 +08:00 |
|
qing
|
fb485ebac4
|
fix(libhttp): 修复P1-5静态文件路径遍历 + 同步审计文档
- 新增 isSafeStaticPath() 校验静态文件路径,拒绝 ..、空字节、非/开头及URL编码遍历(%2e/%2f/%5c)
- handleRequest 静态文件服务前校验 target_path
- 审计文档标记 P1-5 已修复
|
2026-08-04 00:04:55 +08:00 |
|
qing
|
da4957c52d
|
fix(libhttp): 请求体大小限制可配置并超限返回 413 (P1-1)
|
2026-08-03 23:57:00 +08:00 |
|
qing
|
b37bf255d9
|
fix(libhttp): 删除遗留 WebSocketServer/WebSocketClient 并同步 CMakeLists 与 Makefile
|
2026-08-03 23:46:10 +08:00 |
|
qing
|
2f5fe8baaa
|
docs(security): 新增 libhttp 模块安全审计报告
|
2026-08-03 23:42:32 +08:00 |
|
qing
|
2e3f07bf4f
|
docs(gateway): 审计文档行号纠偏并补充 CORS 白名单死代码根因
- 修正 gateway 审计文档中因代码演进漂移的行号引用(handleProxy/handleLogout/wrapperHttp/限流/TLS/路径防护等)
- 补充 P2-3 CORS 根因:_CORS_ORIGINS 白名单已读取但 OPTIONS 预检由 libhttp 处理,白名单未生效
- 修正 README 中 OPTIONS 预检描述(反射请求 Origin 而非通配 *)及 CORS 配置失效提示
|
2026-08-03 23:37:47 +08:00 |
|
qing
|
028e0e0806
|
docs(security): 删除全局审计文档并将问题并入各模块文档
- 各模块专属 P0/P1/P2 问题已分发到 docs/security/ 下各模块审计文档
- gateway 补充 P1-6(反向代理响应无大小限制)、P2-3(CORS 通配)、P2-4(HTTP 无超时)
- 删除全局 SECURITY_AUDIT_20260801.md,避免重复
|
2026-08-03 23:32:28 +08:00 |
|
qing
|
37c50ed517
|
fix(static): 获取邮箱验证码后保留已输入的图形验证码
refreshCaptcha 增加 preserveInput 参数,获取验证码后的自动刷新不再清空图形验证码输入框,避免误清空用户输入
|
2026-08-03 23:11:10 +08:00 |
|
qing
|
02904f711e
|
fix(aibox): 修复工具调用配对缺失导致的 insufficient tool messages 400
当 assistant 携带 tool_calls 但对应 tool 响应缺失(工具被中断/压缩丢弃)时,
下一次请求报 400。新增 _repair_tool_pairs 在构建请求前补齐缺失的 tool 响应。
|
2026-08-03 23:05:28 +08:00 |
|
qing
|
d24066369b
|
refactor(aibox): 解耦大模型调用,新增 llm_client 抽象层以支持多厂商切换
将 think_and_respond 与 _compress_via_llm 中的直接 DeepSeek API 调用
收敛到 LLMClient 抽象层(DeepSeekClient 实现 + create_llm_client 工厂),
统一流式事件格式,为子代理/多模型切换预留扩展点;配置新增 api.provider。
|
2026-08-03 23:03:03 +08:00 |
|
qing
|
417fda5479
|
refactor(aibox): 文件/网络操作工具改为返回命令行指引并移除beautifulsoup4依赖
|
2026-08-03 22:52:12 +08:00 |
|
qing
|
fb5920d89f
|
feat(gateway): 新增重置密码接口并改造前端 forgot 页对接
- gateway 新增 POST /reset_password:复用注册校验链(限流/密码强度/邮箱格式/CAPTCHA/邮箱验证码),最后一步由创建用户改为 UPDATE Users SET password_hash,用户不存在时统一返回成功防枚举
- gateway 新增 POST /reset/send_code:CAPTCHA 强制 + 邮箱双窗口限流,定制重置密码文案
- 前端 forgot.html 弃用 static 被禁用的 /api/proxy_* 接口,对接 gateway 新接口,并改为中文 register.html 风格
|
2026-08-03 22:40:43 +08:00 |
|
qing
|
dd4fef6dee
|
fix(pymsg): 异常信息脱敏与JSON深度/大数字限制,防信息泄露与DoS
|
2026-08-03 22:30:17 +08:00 |
|
qing
|
87f209af73
|
fix(pymsg): 增加连接数与线程池队列上限,防资源耗尽
- P1-1: MsgServer 新增 max_connections(默认1000),_accept_client 超限
直接拒绝并关闭新连接,防连接耗尽攻击
- P1-2: 新增 _BoundedThreadPoolExecutor + max_queue_size(默认1000),
慢 handler 时任务排队超限即拒绝并断开连接,防内存无限增长
同步更新审计报告 P1-1/P1-2 状态,修复率 18.75% -> 25%
|
2026-08-03 22:25:32 +08:00 |
|
qing
|
47ab9f2fe6
|
fix(pymsg): 使用 deadline 模式修复 recv 总超时绕过(Slowloris DoS)
_recv_exact 从单次 sock.settimeout() 改为整体 deadline 模式:
header 与 payload 共享同一 total deadline,每次 recv_into 前按剩余
时间收紧超时,逐字节发送无法刷新 deadline,半开连接被及时关闭。
同步更新 pymsg 安全审计报告 P0-1 状态,修复率 6.25% -> 12.5%。
|
2026-08-03 22:15:44 +08:00 |
|
qing
|
ac16d89150
|
docs(aibox): 添加文件/网络操作命令行化开发计划
|
2026-08-03 22:05:52 +08:00 |
|
qing
|
f53085b2a6
|
fix(static): 禁用 yhdet 系列功能并迁移数据库访问到 db 服务
- 注释禁用 yhdet OAuth 相关常量、辅助函数和视图函数(yhdet_callback/yhdet_login/yhdet_verify/proxy_send_code),消除 P0-2/P0-3/P0-4/NEW-1/NEW-2 风险
- YHDET_SECRET 置空并标注已失效;PRIVATE_SECRET 与 YHDET_PRIVATE_API 一并注释
- 新增 _db_call() 辅助函数,api_check_user 改经 pymsg 调 db 服务,不再直连 SQLite
- 修复注册页验证码:点击获取邮箱验证码时图形验证码输入框被清空的问题
- 更新 static 安全审计报告,修复率 25% → 65%
|
2026-08-03 22:05:02 +08:00 |
|