5.3 KiB
5.3 KiB
当前流程与独立项目交接
核对日期:2026-11-02,Asia/Shanghai。
已验证
原代码:/home/claw/claude-workspace/OBSIDIAN/asr-pipeline。
原音频编排:/home/claw/claude-workspace/OBSIDIAN/recordings/bin。
原通知脚本:/home/claw/claude-workspace/OBSIDIAN/bin/meeting-status-notify.py。
本机 systemd:
| 单元 | 本次状态 | 职责 |
|---|---|---|
| asr-review-web.service | running | 8765 常驻上传、最近任务、审核界面 |
| obsidian-recording-watch.service | running | 监听录音并请求外部 ASR |
| obsidian-asr-refine.path | waiting | 监听 vault/.asr-inbox |
| obsidian-asr-refine-native.service | inactive | 按需整理转写,当前未运行 |
| asr-review-revise@.service | 模板 | 人工确认后生成/发布 |
GET http://127.0.0.1:8765/health 返回 ok=true, pending=3。
这说明审核队列存在待确认项,不证明三个录音都在推理,也不证明通知正常。
本轮不导出待确认正文,不生成新稿、不注册声纹、不写 vault。
代码确认的链路
- 监听单元显式选择
MEETING_ASR_BACKEND=qwen3cam。 - 对应脚本默认请求
http://192.168.50.100:10099/asr,整文件上传,language=Chinese、save_voiceprint_session=true;服务内部切片。 本轮未对 GPU 服务发起真实录音测试,不据此宣称其健康或当前镜像版本。 - 原始转写保留声纹 session 与 speaker;归档后桥接到 vault/.asr-inbox。
- 独立 Python 管线包含模糊音/别名、关系与近期权重、数字归一、纯清洗与纠错分阶段。
- 初稿和中间状态在程序私有目录,正式纪要等待 Web 审核通过。
- 人物/公司卡提议与声纹确认存在代码路径;不等于当前外部注册服务验证通过。
运行数据边界
asr-pipeline/state/lexicon.db:人工确认、关系、纠错、审核队列,不能重建后替代。asr-pipeline/state/intake.db:上传任务与状态。state/drafts/、state/published/:私有稿与发布回执。recordings/{inbox,processing,processed,failed,transcripts,state}:音频及编排状态。vault/.asr-inbox/.state:整理处理标记,切换漏迁可能造成重复处理。.asr-refine.env:私有凭据,未读取值、未复制、未入 Git。
本次只提取源代码、专业词库、现有测试、文档、unit 快照。没有复制生产音频、
个人 SQLite、缓存、会话、凭据或 .venv。历史设计文档有过时路径和模型,保留作来源。
已发现的风险(尚未改生产)
- 通知脚本默认
127.0.0.1:8644和~/.hermes/webhook_subscriptions.json。 结合 Hermes 已迁走的资产记录,这是通知失效风险;本次未验证远端 webhook。 - 本仓库代码的模型缺省已是 LiteLLM(清洗
aistudio/gemini-flash-lite-latest,成稿codex/gpt-sol-latest),不是 ZenMux,也不是 Sonnet 5。生产 unit 若仍加载旧.asr-refine.env,以那个文件为准;本次未读取凭据,不把代码缺省当成现网正在用的路由。 - 路径耦合旧工作目录;本项目配置根目录、通知器、监听数据库已可外置,
但声纹地址、审核 systemd 单元名等仍有历史耦合。
deploy/systemd/保持现网快照,没有改 ExecStart。 - 历史 HANDOFF 中写的是一次性页面。代码里有两个常驻界面:旧
asrpipe.control_web(快照单元,默认 8765)和新asrservice.web(compose,默认 8788)。旧文档不作现态。 - 产物删除和在线编辑会拒绝允许根以外的路径。发布到
minutes/、People/、Companies/仍没有对照 vault SOP 的不可绕过白名单。本轮不冒充已审计完成。
代码已修复、生产未切换
下面这些是仓库里的新行为。现网单元没有改,不能当成已经在 8765/8788 的生产进程上生效。
- 未设置
ASR_WEB_PASSWORD时,两个浏览器界面都拒绝上传、审核和改配置。临时放开只认ASR_WEB_ALLOW_ANON=1。 - 登录后的写操作校验 CSRF。设置页不回显内网地址和密钥片段。
asrservice.worker与recordings/bin/meeting-watch.py抢同一把consumer.lock。ASR_GIT_SYNC、ASR_NOTIFY缺省为关。- 修订失败会保留队列标记并重试;重新精修失败不会先删掉已回答的审核记录。
- 时间在界面上按 Asia/Shanghai 显示。词库列表按页读取,不再一次只截断前 180 条却不说明总数。
后续安全切换
- 先确定模型路由与通知适配器,检查 vault SOP 与正式输出路径。
- 建独立 venv、冻结依赖,使用合成数据跑回归,再选真实录音单测。
- 停接新上传,确认没有转写/整理/审核发布在运行,再停相关 user units。
- 对 SQLite 使用 backup API 生成一致性备份,保留原件;迁移录音状态与 inbox 标记, 不能对运行中数据库只复制主文件。
- 路径变更还涉及数据库内草稿/转写绝对路径;要审计和映射,不能仅改 unit。
- 生成新 unit 并逐个启用,确认只存在一个消费者;保留旧代码和备份以便回滚。
- 验证上传 → 转写 → 确认链接 → 审核 → 正式纪要 → Git 同步完整链路后再移除旧目录。
本轮未执行上述生产切换,不承诺已独立上线。