重构主控编排与运行时预热链路,统一工作区提示词/专家调度协议并补齐 wiki 记忆注入与写回闭环。

同时收敛启动与运维脚本默认行为(含 wiki worker)、更新 Admin 可观测性与相关测试,降低首轮时延并提高运行稳定性。

Made-with: Cursor
This commit is contained in:
oliver 2026-04-26 08:34:33 +08:00
parent 4a23b715a2
commit dbbe3add6a
14438 changed files with 2693620 additions and 2546 deletions

View file

@ -0,0 +1,88 @@
from __future__ import annotations
import json
import sqlite3
from pathlib import Path
def _print_rows(title: str, rows: list[tuple], limit: int = 20) -> None:
print(f"\n== {title} (showing {min(len(rows), limit)}/{len(rows)}) ==")
for r in rows[:limit]:
try:
print(r)
except Exception:
print(repr(r))
def main() -> None:
db = Path(r"D:\project\chatgpt\oclaw\data\ai_ops.sqlite")
if not db.exists():
raise SystemExit(f"db not found: {db}")
con = sqlite3.connect(str(db))
cur = con.cursor()
tables = [r[0] for r in cur.execute("select name from sqlite_master where type='table' order by name").fetchall()]
# If we have a trace table with expected columns, show recent gateway_received/router_decision/manager_decision/response_sent.
trace_table = None
for t in tables:
if t.lower() in ("trace_events", "trace_event", "oclaw_trace_events", "trace"):
trace_table = t
break
if trace_table:
cols = [c[1] for c in cur.execute(f"pragma table_info({trace_table})").fetchall()]
if {"event_type", "payload"}.issubset(set(cols)):
q2 = f"""
select event_type, payload
from {trace_table}
where event_type in ('manager_decision')
order by rowid desc
limit 50
"""
rows2 = cur.execute(q2).fetchall()
parsed2 = []
for et, pl in rows2:
try:
obj = json.loads(pl) if isinstance(pl, str) and pl.strip().startswith(("{", "[")) else pl
except Exception:
obj = pl
if isinstance(obj, dict):
parsed2.append(
(
et,
{
"manager_selected_specialist": obj.get("manager_selected_specialist"),
"manager_self_mode": obj.get("manager_self_mode"),
"dispatch_reason": obj.get("dispatch_reason"),
"instruction_chars": obj.get("instruction_chars"),
"dynamic_agent_used": obj.get("dynamic_agent_used"),
"dynamic_agent_name": obj.get("dynamic_agent_name"),
},
)
)
else:
parsed2.append((et, obj))
_print_rows("recent manager_decision summary", parsed2, limit=50)
q = f"""
select event_type, payload
from {trace_table}
where event_type in ('router_decision','gateway_received','response_sent')
order by rowid desc
limit 50
"""
rows = cur.execute(q).fetchall()
parsed = []
for et, pl in rows:
try:
obj = json.loads(pl) if isinstance(pl, str) and pl.strip().startswith(("{", "[")) else pl
except Exception:
obj = pl
parsed.append((et, obj))
_print_rows("recent trace events (type,payload)", parsed, limit=50)
con.close()
if __name__ == "__main__":
main()