📋 任务工程日志(81条)

序号 #N = 该条待办在它所属那一天清单里的位置号 · 日志与待办 1:1 · 按任务归属日折叠 · 电脑A 实时 10-20 21:28
← 回今日待办 📅 日历 🧾 对账 ✅ 全对齐 📐 日志规矩
📅 2026-10-20(9条)▾
📅 2026-10-19(1条)▾
📅 2026-10-18(8条)▾
#2【承接自 10-14】【8190 待办后端·根治并发写竞态(最稳妥方案)】问题(用户 2026-10-14 指出,晚风核实代码确认):todo_server.py(/home/zyf/手机待办/todo_server.py,PORT=8190)所有写操作都是「read_md() 读全文 → 改 → write_md() 整份写回」,write_md 用 os.replace 只保证写入原子性、**不保证不丢更新(lost update)**;服务是 ThreadingHTTPServer 多线程 → 页面多请求 / AI 直接改文件 / 多设备同时操作 → 互相覆盖,**条目会凭空消失**(已实测到"插入位置错乱"这一表现)。用户要求:**用最稳妥的方法,哪怕再麻烦也没关系**。要做的:① 服务端加锁:threading.Lock(进程内)+ fcntl.flock(MD,跨进程) 把「读-改-写」整段包起来 —— 覆盖所有写路径:/add /toggle /edit /delete /supplement /rework /toggle_arch /add_archive,以及 realign_day、park_log_to_ops、save_state(task_state.json)、夜间对账 _nightly_loop;② 强烈建议**直接换 SQLite**(WAL 模式 + 事务)做唯一数据源,待办.md 降级为"导出视图",从根上消灭 lost update(用户说"再麻烦也没关系"→ 倾向这条);③ 纪律:所有 AI/脚本(含晚风)**禁止再直接改写 待办.md**,一律走服务端接口(/add、/edit…),接口内部串行化;④ 改前 cp -a todo_server.py + 待办.md(后缀 .bak_20261014_并发根治);⑤ 验收:并发压测(同时 curl 打 /add 20 条 + 同时手动改文件),20 条一条不丢、序号连续无错位、重启服务后数据一致。相关文件 /home/zyf/手机待办/todo_server.py、~/桌面/待办.md(改前备份 + 重启 8190)。来源:用户 2026-10-14「这个机制很有可能变成大问题」「用最稳妥的方法,哪怕再麻烦也没关系」。✅ 已通过(第1次)被接手 1 次 · 最近 2026-10-18↗条目
#4【承接自 10-15】【9000/9001 左上角三杠菜单:加「LLM / Agent」模式切换按钮 + 独立会话历史】(用户 2026-10-15 交办,晚风润色) ① 位置与形态:在左上角三杠(抽屉)里加一个按钮 —— 显示「LLM」,**再点一次变「Agent」**,如此切换(当前模式一眼可见)。 ② **Agent 模式 = 现在这套** 9000/9001 交互页面(Hermes 干活那套),行为一律不变。 ③ **LLM 模式 = 直连本地大模型的纯聊天**:抽屉里的【新会话】【历史会话】在 LLM 模式下都指向**直连本地 LLM 的会话**;且【历史会话】是**LLM 自己独立的一份历史**(与 Agent 会话**分开存、互不串**,切回来各自都在)。 ④ LLM 模式下**功能不阉割**:输入/输出/流式显示、中断、重试照旧可用;**「任务进度」面板在 LLM 模式下也要能正常打开使用**(用户目的:跟本地模型聊天时也能随时盯任务状态,不用切页面)。 ⑤ 代码要解耦:两种模式的后端/会话存储/UI 分开,**换皮不影响机制**(用户后期会换皮)。 ⑥ **默认连 27B 本地模型**(用户 2026-10-15 明确:"默认连 27B 本地模型" → 即 B:8080 那台),并且**要可配置**。★用户原话(这就是这个模式存在的理由,实现的人务必照做):"有时候就想聊聊天,不想去调用 agent,因为 agent 上下文太多了、而且一大堆工具,导致它输出挺慢的…完全可以本地聊天聊得差不多了,让模型给我输出一份文档,然后我回到 agent 去把文档交给 agent"。→ 所以 LLM 模式要**轻**(不背 agent 的工具与长上下文),且**聊完要能一键把这段对话导出成一份文档**(md 或 txt,方便他回到 Agent 模式把文档交给我);与别的作业共用同一模型时排队属正常。 ⑦ **LLM 模式要挂「知识库 + 人物画像」,而且都必须是最新的**(用户 2026-10-15 拍板:B 和 C 都加)。· **B 知识库检索**(默认开、可在设置里关):用户每发一句 → 先查一次本地知识库(实测 `~/.hermes/kb/query_kb.py` 约 **0.5 秒**,全本地不联网)→ 把最相关的几段垫在问题前,模型就能有据可依地答 ✓。· **C 人物画像 / 长期偏好注入**(默认开):把"他的偏好与习惯"塞进系统提示,但**必须每次从源头读最新版**(人物画像、长期记忆文件)—— **不许写死副本** ✗。· **★维护机制(用户点名要:"知识库一定要对接最新的内容,人物画像也要对接最新的")**:1) 知识库索引必须对接最新内容:新写的文档(重要资料/工程日志/任务栏等)要在**当天内**进索引,现有每日 23:30 重建保留;**查询前先比对源文件 mtime 与索引时间**,索引落后就先增量补建再答 ✓(不许拿旧索引糊弄 ✗)。2) 人物画像同理:永远对接最新画像,画像一改 LLM 模式立刻生效 ✓。3) 每日自检:拿 2~3 条"最近新写的文档"的关键词去查,**必须能查到** ✓;查不到就报警并重建 ✓。验收:① 三杠里能切换 LLM/Agent,按钮文案与状态一致 ✓ ② LLM 模式下能正常聊天(流式/中断 OK)✓ ③ LLM 的历史会话与 Agent 的历史**各自独立、互不覆盖**✓ ④ LLM 模式下「任务进度」能打开且数据与看板一致 ✓ ⑤ 切回 Agent 后原有会话、功能一切照旧 ✓ ⑥ 只交报告=没完成 ✗;必须真改线上文件+上线+备份 ✓✅ 已完成(用户勾选)被接手 2 次 · 最近 2026-10-18↗条目
#5【承接自 10-15】【9000/9001 输入框里打的字会被「闪一下 / AI 一出字」吃掉(第4次·2026-10-15 仍在)】用户 2026-10-15 找到规律:**正在打字时,只要聊天页略微闪一下、或者 AI 一开始往外输出文字,输入框里已经打好的字就会消失** ✗(注意:这不是「卡死/发不出去」那个 ✗ —— 那是 #14 已修的另一个问题 ✓,别混)**复现步骤(按用户原话)**:① 先在输入框里打几个字(先别发)② 让 AI 输出(或页面刷新/闪动一次)→ 输入框里的字被清掉 ✓ 稳定复现。**排查方向(供参考,别当结论)**:收到新消息后整页重渲染时把**输入框这个节点重建/覆盖**了(整块 innerHTML 替换 ✗、或 value 被重置 ✗、或 SSE 回包触发 re-mount ✗);输入框文字应「跨渲染存活」——重渲染前存、渲染后恢复 ✓,或干脆**别重建输入框节点**(改增量渲染 ✓)。**验收**:① 输入框打了字 → 等 AI 输出完 → 字还在 ✓ ② 页面闪动/刷新一次 → 字还在 ✓ ③ 连打带发几十轮不丢字 ✓ ④ 不许碰透明度、不许动其它功能 ✓ ⑤ 必须真改+上线+备份,只交报告=没完成 ✗。(用户 2026-10-15:**先不跑、不插队** ✓) ★2026-10-15 **第4次**(用户再次报,现象仍在)原话:「9000跟9001,现在还会有那个我打字进去,然后AI输出,然后我打的字在输入框里面又消失了」→ 复现条件更明确了:**AI 一开始流式输出就会吃掉输入框的字**(伴随整页"略微闪一下")。硬要求:① 输入框内容在任何重渲染后都必须保留(AI 流式输出 / SSE 重连 / token 条刷新 / 任务进度刷新,都不许清空或重置 ✗);② 修法方向:把输入框从"随消息列表整块重渲染"的路径里**分离**出来,value 独立保存,重渲染后回填并保留焦点与光标位置,绝不重建输入框 DOM;③ 自验:录"边输出边打字 30 秒不丢字"的前后对比 ✓;④ 上线必须覆盖线上文件 + 重启 + 报告带时间戳 ✓。验收(用户做):在 9000/9001 上边输出边打字 30 秒,一个字都不许丢 ✓✅ 已完成(用户勾选)被接手 2 次 · 最近 2026-10-18↗条目
📅 2026-10-17(4条)▾
📅 2026-10-16(8条)▾
#2【延续10-15 #2】【9000/9001 输入框里打的字会被「闪一下 / AI 一出字」吃掉(第4次·2026-10-15 仍在)】用户 2026-10-15 找到规律:**正在打字时,只要聊天页略微闪一下、或者 AI 一开始往外输出文字,输入框里已经打好的字就会消失** ✗(注意:这不是「卡死/发不出去」那个 ✗ —— 那是 #14 已修的另一个问题 ✓,别混)**复现步骤(按用户原话)**:① 先在输入框里打几个字(先别发)② 让 AI 输出(或页面刷新/闪动一次)→ 输入框里的字被清掉 ✓ 稳定复现。**排查方向(供参考,别当结论)**:收到新消息后整页重渲染时把**输入框这个节点重建/覆盖**了(整块 innerHTML 替换 ✗、或 value 被重置 ✗、或 SSE 回包触发 re-mount ✗);输入框文字应「跨渲染存活」——重渲染前存、渲染后恢复 ✓,或干脆**别重建输入框节点**(改增量渲染 ✓)。**验收**:① 输入框打了字 → 等 AI 输出完 → 字还在 ✓ ② 页面闪动/刷新一次 → 字还在 ✓ ③ 连打带发几十轮不丢字 ✓ ④ 不许碰透明度、不许动其它功能 ✓ ⑤ 必须真改+上线+备份,只交报告=没完成 ✗。(用户 2026-10-15:**先不跑、不插队** ✓) ★2026-10-15 **第4次**(用户再次报,现象仍在)原话:「9000跟9001,现在还会有那个我打字进去,然后AI输出,然后我打的字在输入框里面又消失了」→ 复现条件更明确了:**AI 一开始流式输出就会吃掉输入框的字**(伴随整页"略微闪一下")。硬要求:① 输入框内容在任何重渲染后都必须保留(AI 流式输出 / SSE 重连 / token 条刷新 / 任务进度刷新,都不许清空或重置 ✗);② 修法方向:把输入框从"随消息列表整块重渲染"的路径里**分离**出来,value 独立保存,重渲染后回填并保留焦点与光标位置,绝不重建输入框 DOM;③ 自验:录"边输出边打字 30 秒不丢字"的前后对比 ✓;④ 上线必须覆盖线上文件 + 重启 + 报告带时间戳 ✓。验收(用户做):在 9000/9001 上边输出边打字 30 秒,一个字都不许丢 ✓🚧 进行中(2026-10-16 夜间批阅更正:条目未勾选,已重开)被接手 2 次 · 最近 2026-10-16↗条目
#3【延续10-15 #3】【9000/9001 左上角三杠菜单:加「LLM / Agent」模式切换按钮 + 独立会话历史】(用户 2026-10-15 交办,晚风润色) ① 位置与形态:在左上角三杠(抽屉)里加一个按钮 —— 显示「LLM」,**再点一次变「Agent」**,如此切换(当前模式一眼可见)。 ② **Agent 模式 = 现在这套** 9000/9001 交互页面(Hermes 干活那套),行为一律不变。 ③ **LLM 模式 = 直连本地大模型的纯聊天**:抽屉里的【新会话】【历史会话】在 LLM 模式下都指向**直连本地 LLM 的会话**;且【历史会话】是**LLM 自己独立的一份历史**(与 Agent 会话**分开存、互不串**,切回来各自都在)。 ④ LLM 模式下**功能不阉割**:输入/输出/流式显示、中断、重试照旧可用;**「任务进度」面板在 LLM 模式下也要能正常打开使用**(用户目的:跟本地模型聊天时也能随时盯任务状态,不用切页面)。 ⑤ 代码要解耦:两种模式的后端/会话存储/UI 分开,**换皮不影响机制**(用户后期会换皮)。 ⑥ **默认连 27B 本地模型**(用户 2026-10-15 明确:"默认连 27B 本地模型" → 即 B:8080 那台),并且**要可配置**。★用户原话(这就是这个模式存在的理由,实现的人务必照做):"有时候就想聊聊天,不想去调用 agent,因为 agent 上下文太多了、而且一大堆工具,导致它输出挺慢的…完全可以本地聊天聊得差不多了,让模型给我输出一份文档,然后我回到 agent 去把文档交给 agent"。→ 所以 LLM 模式要**轻**(不背 agent 的工具与长上下文),且**聊完要能一键把这段对话导出成一份文档**(md 或 txt,方便他回到 Agent 模式把文档交给我);与别的作业共用同一模型时排队属正常。 ⑦ **LLM 模式要挂「知识库 + 人物画像」,而且都必须是最新的**(用户 2026-10-15 拍板:B 和 C 都加)。· **B 知识库检索**(默认开、可在设置里关):用户每发一句 → 先查一次本地知识库(实测 `~/.hermes/kb/query_kb.py` 约 **0.5 秒**,全本地不联网)→ 把最相关的几段垫在问题前,模型就能有据可依地答 ✓。· **C 人物画像 / 长期偏好注入**(默认开):把"他的偏好与习惯"塞进系统提示,但**必须每次从源头读最新版**(人物画像、长期记忆文件)—— **不许写死副本** ✗。· **★维护机制(用户点名要:"知识库一定要对接最新的内容,人物画像也要对接最新的")**:1) 知识库索引必须对接最新内容:新写的文档(重要资料/工程日志/任务栏等)要在**当天内**进索引,现有每日 23:30 重建保留;**查询前先比对源文件 mtime 与索引时间**,索引落后就先增量补建再答 ✓(不许拿旧索引糊弄 ✗)。2) 人物画像同理:永远对接最新画像,画像一改 LLM 模式立刻生效 ✓。3) 每日自检:拿 2~3 条"最近新写的文档"的关键词去查,**必须能查到** ✓;查不到就报警并重建 ✓。验收:① 三杠里能切换 LLM/Agent,按钮文案与状态一致 ✓ ② LLM 模式下能正常聊天(流式/中断 OK)✓ ③ LLM 的历史会话与 Agent 的历史**各自独立、互不覆盖**✓ ④ LLM 模式下「任务进度」能打开且数据与看板一致 ✓ ⑤ 切回 Agent 后原有会话、功能一切照旧 ✓ ⑥ 只交报告=没完成 ✗;必须真改线上文件+上线+备份 ✓✅ 已完成(用户勾选)被接手 2 次 · 最近 2026-10-16↗条目
📅 2026-10-15(7条)▾
#2【看板折叠·一步展开 + 折叠铺全】两条要求(2026-10-15 用户口述,晚风润色): **① 当日任务卡片「一步」展开**(上一版实现已驳回 ✗):卡片正文超过字数阈值(建议 120 字左右)后**默认收叠**;**点卡片本身就展开** ✓ —— **不要「展开」按钮、不要出现「展开」两个字** ✗;展开后**直接显示全文 + 编辑/补充/删除**三个按钮 ✓;再点一下收起 ✓。 > 现状毛病:点卡片展开一次后,卡片里又冒出一个「展开」,要再点第二次才看到全文 = **两级展开** ✗ —— 用户原话:「一个步骤就够了,而不是两个步骤,展开之后又展开干嘛呢?」 **② 折叠要铺全**:不只当日任务,**往期任务、工程日志、维护日志**等所有长列表页都要有同样的折叠(超阈值默认收叠、点一下展开/收起 ✓)。 > 动机(用户原话):「工程日志那么一大串,难道你要全屏显示吗?我滑到第二个日志要滑多久?」 **验收**:① 当日任务卡超阈值 → 默认只显示前几行 ✓;点卡片 → **一步**展开显示全文+三个按钮 ✓;再点收起 ✓ ② 往期任务/工程日志/维护日志页同样行为 ✓ ③ 界面上不许出现「展开」按钮或「展开」文字 ✗ ④ 不许触碰其它功能(透明度/状态条/审批卡/输入框/背景头像独立)✗ ⑤ 必须真改代码+上线+留备份,只交报告=没完成 ✗✅ 已完成(用户勾选)被接手 2 次 · 最近 2026-10-15↗条目
#8【三个站点全面体检:9000 / 9001 / 任务系统(8190) 偶尔卡顿·要加载·打不开】★本条是**总览项**:看板已有相邻条目,修前先读、别重复修 —— #9「9001 假死根治:电脑B 的模型服务一重启(换档/调参),9001 就死等那条断连接」很可能是本条的「打不开」根因之一;#4「输入框丢字/页面闪一下」很可能是本条的「偶尔卡一下」根因之一。用户 2026-10-15 交办(原话:「9000 9001以及我们的任务系统 三个网站经常都会偶尔卡一下,偶尔要加载一下,偶尔打不开,他们老是出这些bug,能不能全面的检查一遍?」)。**本次是执行不是审计** ✗ 只交报告=没完成。范围:9000(晚风云) / 9001(本地27B) / 8190(任务系统) + 手机入口 9443/9444/9445。现象:偶发卡顿、需要重新加载、偶发打不开(间歇性 → 要抓"什么时候发生")。① **服务面**:六个 systemd user 服务状态与重启记录(`systemctl --user show -p NRestarts`)、端口占用与冲突、证书有效期、ufw 放行、磁盘/内存/文件描述符上限。② **后端面**:`hermes_bridge.py` 逐条审(单线程 HTTPServer?是否有阻塞调用、SSE 长连接的心跳与断线重连、连接数上限、超时设置、异常吞掉的位置);上游 27B(B:8080) 与云 API 的超时/重试/排队;日志里的 5xx、ConnectionReset、超时(`journalctl --user -u hermes-webchat*` 按小时统计)。③ **前端面**:首屏体积(ui.html 136KB 是否可减)、SSE 断线重连体验、`偶尔要加载一下` 是不是重连/重渲染导致(与今天 #4「输入框丢字/页面闪一下」很可能是同一个根因,一并查 ✗ 别各修各的);PWA/缓存策略(现 sw.js 只做通知、不缓存 ✓ 已核)。④ **数据面**:8190 的 `MD_LOCK` 并发写(#17 已加锁)、`task_state.json` 读写、`ai_done` 并发;三个站点统一走一次并发压测。⑤ **网络面**:局域网延迟/丢包实测(本人实测过手机 ping 730ms、平板 27ms → 手机侧要单独看)、mihomo 代理是否意外代理内网、手机 WiFi 休眠省电。⑥ **交付要求**:**必须给"之前 vs 现在"的实测数字**(每站至少 30 次请求的 p50/p95 延迟、断线重连成功率、并发下的错误率)✗ 别只说"已优化";每个真bug要写清根因+修法+防复发;查不出根因的项也要列出来并给"下一步怎么抓"。⑦ **改动纪律**:动服务/改码前先 `cp -a` 备份、改完先验证再重启、重启 9000/9001 前先告知用户 ✓ 全部登记 `三agent操作日志.md`。⑧ **验收**:① 三站各 30 次实测数据表(前/后)② 能复现的 bug 给出复现步骤 ③ 已修的项给"改了什么文件+怎么验证的" ④ 未修的项写明原因与下一步。⚠️序号不连✅ 已完成(用户勾选)被接手 2 次 · 最近 2026-10-15↗条目
📅 2026-10-14(22条)▾
#12【8001 中转站升级·夜神网盘】把中转站(/home/zyf/桌面/视频/server.py,systemd 服务 transit-wall,端口 8001,Python http.server,1388 行)升级成「手机/平板上真能用的网盘」。★用户实测两个硬伤:① 在网盘里存了文件夹,用浏览器点开是**空的**——只显示「有多少项」,内容列不出来;② 单个文件(apk / txt / 图片等)**点不开**,浏览器里没法读。要做:① 改名——「网盘」「中转站」两个入口都指向 8001(页面标题/图标一并换)② 加 PWA(可安装到桌面、有图标、离线壳)③ 修文件夹展开:点进去能看到里面的文件和子文件夹(疑似跟 do_GET 路径解码 / 目录列表接口 / 前端渲染有关,需真机复现定位)④ 文件能直接在浏览器打开:图片直接看、文本(txt/md/json/csv/log)直接读、视频/音频能播、apk 触发下载/跳转安装、其余类型给「下载」⑤ 手机/平板触屏体验(大按钮、响应式)。目标场景:用户把「图文混排文档 + apk」丢进网盘,躺在平板上点开就能看图看字、点 apk 能下能装,全程不开电脑。验收:平板上打开含「图片+文本+apk」的文件夹 → 文件夹能展开、图能看、字能读、apk 有下载/安装入口。来源:用户 2026-10-14 交办(原话「他升级一下 PWA 能不能安排上…点开里面是没东西的…apk 或者 txt 我是没办法打开的…在平板上或手机上面看」)。⚠️序号不连🚧 进行中被接手 1 次 · 最近 2026-10-14↗条目
#13【8001 网盘存储迁移·搬到第二块硬盘】把中转站的存储从根盘挪到第二块盘的空闲区。现状实测(2026-10-14 晚风 lsblk/df):A 机两块 nvme——盘1 nvme0n1(1TB ZHITAI) 是根盘 /,937G 已用 77%、剩 210G;盘2 nvme1n1(1TB ZHITAI TiPlus7100s) 上有 Windows 分区(ntfs 486.6G,未挂载) + 一个 465.4G 的 ext4 分区(LABEL=SWAPDISK,挂在 /mnt/swapdisk),其中放了 200G 的 swap.img(虚拟内存,实测在用 3.2G),**该分区还剩 253G 可用**。目标:把 8001 中转站(server.py 里 TRANSIT = /home/zyf/桌面/视频/transit)换到 /mnt/swapdisk 下的剩余空间(如 /mnt/swapdisk/网盘/),大文件走第二块盘、不再吃根盘。★注意:① 别动 Windows 分区(ntfs p2-p5)② 别删/别动那个 200G 的 swap.img(是虚拟内存)③ /mnt/swapdisk 是 fstab nofail 挂载 → 要保证服务启动时盘已挂上(加 systemd 依赖或启动自检),否则会写回根盘/报错 ④ 数据迁移:现有 transit/ 内容搬过去,原目录保留或做符号链接,别丢文件 ⑤ 权限:让 8001 服务(用户 zyf)能读写。验收:上传一个 >1G 文件到网盘 → 落盘在 /mnt/swapdisk(df 可见)、根盘 / 占用不涨,页面刷新仍能浏览/下载。相关文件 /home/zyf/桌面/视频/server.py(改前 cp -a 备份 + systemctl --user restart transit-wall)。来源:用户 2026-10-14 交办(原话「中转文件站能不能指向那块没用上的 1TB 硬盘,还有 Windows,还有 200G 做了虚拟内存,剩下的容量能不能拿来做夜神文件站的存放处」)。⚠️序号不连🚧 进行中被接手 1 次 · 最近 2026-10-14↗条目
📅 2026-10-13(22条)▾