| domain | archive |
|---|---|
| title | Self Grow Wiki Code Review |
| verification | metadata-normalized |
| source | skill-pipeline |
| status | draft |
| created | 2026-05-09 |
(此 lesson 从 skill self-grow-wiki-code-review 自动提取,待补全)
(待补充)
# 当前
api_key=os.environ.get("DEEPSEEK_API_KEY", "sk-071...35ea")
# 改为
api_key=os.environ.get("DEEPSEEK_API_KEY", "")删掉 fallback key,只从环境变量读。
_pickle.loads(BM25_INDEX_PATH.read_bytes()) 在文件损坏(磁盘满写入中断)时崩溃。
改为 try/except + 删除损坏缓存并重建。
每个文件自己创建 OpenAI client + message 构造 + error handling。建议抽象到 _call_llm()。
try:
kwargs["stream_options"] = {"include_usage": True}
except Exception:
pass # 永远不会触发应改为根据通道特性(mioffice.cn 不支持)条件启用。
rag_core.py, kb_selfcheck.py, rag_admin.py 各自定义了 MIOFFICE_API_KEY 和 API_BASE。 改为统一到 config 模块或环境变量。
process_query 同名同参数完全相同的两份。应导入共享。
建议至少加 log.warning(),部分不合理 catch 直接删掉。
tok_completion = len(answer) // 2 # 中文1字≈2token,英文偏差大/rag_chromadb, rag_query_log.db, kb_conflict_report.md, kb_learning.json 建议集中到 PATHS dict。
写操作有 _log_lock,但 get_query_logs 等读操作没有。
- P0-1: wxauto_bot.py key 改环境变量 ✓ (Phase 1)
- P0-2: BM25 缓存损坏保护 ✓ (Phase 1)
- P1-4: stream_options 条件启用 ✓ (Phase 1)
- P1-5: kb_selfcheck.py 导入 rag_core ✓ (Phase 1)
- P2-7: 13 处裸 except:pass → 8 处加
logger.warning(), 5 处保留 ✓ - P2-8:
len(answer)//2→estimate_tokens()(中文×2 + 英文÷4) ✓ - P2-9: 硬编码路径 →
PATHSdict, 4 文件导入 ✓ - P2-10: SQLite 读操作加
_log_lock(4 functions) ✓ - P2-11: 无需修复 ✓
- P3-13: CLAUDE.md wcferry vs wxauto 双方案说明 ✓
- P3-14: 四通道: +DeepSeek (deepseek-chat, env key) ✓
- P3-15: start_rag.sh watchdog 守护循环 ✓
- P3-16: 降级消息去 Markdown (###/**/--- → 【】纯文本) ✓
- P2-12: wxauto_bot.py 拆分 — 评估后跳过 (702行/18函数, 结构清晰)
- P1-3: LLM 调用抽象 (需较大重构, 低优先级)
- P1-6: rag_web/rag_admin process_query 重复 (需评估影响面)
给 rag_core.py 加 PATHS dict 和 estimate_tokens() 后, 需同步更新所有消费方:
- rag_admin.py, rag_api.py, rag_builder.py, kb_selfcheck.py 的
from rag_core import (...)元组 - 忘记更新会导致运行时 NameError
- 如有 inline import (
from rag_core import Xinside function), 需移到顶部
把函数体包裹进 with _log_lock: 时, 整个 body 需统一缩进。逐行 patch 容易产生部分代码留在 with 外的 bug。推荐: 一次性 patch 整个函数体(约 20-50 行)。
并非所有 except: pass 都需要改。保留场景:
- doc_classifier.py:219 — fallback 到 alternate 实现
- rag_builder.py:348 — 删除可能不存在的 collection
- rag_core.py:567 — 已有上层 error logging, 内层仅 cleanup
- 需要
import os(rag_core.py 原先未导入) - mioffice.cn 网关不支持 deepseek-
(待补充)