|
@@ -2,8 +2,10 @@
|
|
|
|
|
|
|
|
MySQL 四表(search_process / search_tools / mode_process / mode_tools)为唯一事实源的单页工作台:
|
|
MySQL 四表(search_process / search_tools / mode_process / mode_tools)为唯一事实源的单页工作台:
|
|
|
Dashboard(结果/过程指标可视化)、Dataset(query → 帖子 → 工序/工具解构)、聚类库(占位)。
|
|
Dashboard(结果/过程指标可视化)、Dataset(query → 帖子 → 工序/工具解构)、聚类库(占位)。
|
|
|
|
|
+顶栏「**Query 规则**」按内容树维度铺词 → Sonnet 评分 → 高亮达标组合 → 一键搜(见下「Query 规则组织器」)。
|
|
|
|
|
|
|
|
-设计文档:`docs/superpowers/specs/2026-06-12-mode-workflow-design.md`
|
|
|
|
|
|
|
+设计文档:`docs/superpowers/specs/2026-06-12-mode-workflow-design.md`、
|
|
|
|
|
+`docs/superpowers/specs/2026-06-18-query-builder-design.md`(Query 规则 + 端到端管线)
|
|
|
|
|
|
|
|
## 启动
|
|
## 启动
|
|
|
|
|
|
|
@@ -18,8 +20,8 @@ python server.py # http://localhost:8772
|
|
|
| 文件 | 职责 |
|
|
| 文件 | 职责 |
|
|
|
|---|---|
|
|
|---|---|
|
|
|
| `db.py` | 四表 DDL + 全部读写(读 .env MYSQL_*);连接走 `PooledDB` 池(远程 RDS 每次握手 ~0.5s,池复用避免每请求重连) |
|
|
| `db.py` | 四表 DDL + 全部读写(读 .env MYSQL_*);连接走 `PooledDB` 池(远程 RDS 每次握手 ~0.5s,池复用避免每请求重连) |
|
|
|
-| `server.py` | 页面 + API + 解构任务子进程管理(端口 8772);`/api/dashboard` 结果带缓存(任务完成时作废 + 60s 兜底 TTL),`/api/extract` 等带 ETag/304 |
|
|
|
|
|
-| `index.html` | 单文件前端:Dashboard / Dataset / 聚类库 |
|
|
|
|
|
|
|
+| `server.py` | 页面 + API + 解构任务子进程管理(端口 8772);`/api/dashboard` 结果带缓存(任务完成时作废 + 60s 兜底 TTL),`/api/extract` 等带 ETag/304;Query 规则接口 `query_matrix`/`category_tree`/`query_score` |
|
|
|
|
|
+| `index.html` | 单文件前端:Dashboard / Dataset / 聚类库 / Query 规则弹层 |
|
|
|
| `stages/search_eval.py` | 任意 query 搜索+评估 → search_process / search_tools(按解构方向分表) |
|
|
| `stages/search_eval.py` | 任意 query 搜索+评估 → search_process / search_tools(按解构方向分表) |
|
|
|
| `stages/procedure_extract.py` | 工序解构(LLM 直出)→ mode_process |
|
|
| `stages/procedure_extract.py` | 工序解构(LLM 直出)→ mode_process |
|
|
|
| `stages/tool_extract.py` | 工具解构 → mode_tools |
|
|
| `stages/tool_extract.py` | 工具解构 → mode_tools |
|
|
@@ -36,9 +38,11 @@ python server.py # http://localhost:8772
|
|
|
## 数据流
|
|
## 数据流
|
|
|
|
|
|
|
|
```
|
|
```
|
|
|
|
|
+Query 规则(UI) → /api/query_score(Sonnet 评 tier≥1 格)→ 高亮达标(keep 且 综合分≥阈值)→ 点格/搜全部达标
|
|
|
新建搜索(UI) → server 子进程 stages/search_eval.py → 统一评估 → 按 知识类型 标签路由
|
|
新建搜索(UI) → server 子进程 stages/search_eval.py → 统一评估 → 按 知识类型 标签路由
|
|
|
(工序/能力→search_process,工具→search_tools,两者都含写两表)
|
|
(工序/能力→search_process,工具→search_tools,两者都含写两表)
|
|
|
选帖解构(UI) → server 子进程 stages/{procedure,tool}_extract.py → mode_process / mode_tools
|
|
选帖解构(UI) → server 子进程 stages/{procedure,tool}_extract.py → mode_process / mode_tools
|
|
|
|
|
+ (Dataset 工序/工具 tab「解构全部已采纳」一键解构该 query 该方向全部采纳帖)
|
|
|
Dashboard → /api/dashboard 实时聚合四表(内容树覆盖按 steps 的 action×type 命中有效节点)
|
|
Dashboard → /api/dashboard 实时聚合四表(内容树覆盖按 steps 的 action×type 命中有效节点)
|
|
|
```
|
|
```
|
|
|
|
|
|
|
@@ -52,6 +56,33 @@ query 搜到时只真实解构一次——`stages/{procedure,tool}_extract.py`
|
|
|
行补齐关联(`cost=0`),不再付费重跑。换 prompt/模型要对比时传 `--force`(API `force:true`)
|
|
行补齐关联(`cost=0`),不再付费重跑。换 prompt/模型要对比时传 `--force`(API `force:true`)
|
|
|
跳过去重。`runs/backfill_links.py` 是事后扫尾工具,复用同一 `link_process`。
|
|
跳过去重。`runs/backfill_links.py` 是事后扫尾工具,复用同一 `link_process`。
|
|
|
|
|
|
|
|
|
|
+## Query 规则组织器(铺词 → 评分 → 搜索)
|
|
|
|
|
+
|
|
|
|
|
+顶栏「Query 规则」打开弹层,把"凭直觉拍 query"变成系统化铺词 + LLM 筛选:
|
|
|
|
|
+
|
|
|
|
|
+- **维度 chips**:工具类型/模态/后缀(扁平单选,拼入 query 词)、实质/形式(从
|
|
|
|
|
+ `library.aiddit.com` 分类树逐级下钻,**仅作 Sonnet 领域上下文**)、动作/类型(从
|
|
|
|
|
+ `judged_matrix` 的 l1/l2 下钻,**筛选下方表格显示**)。
|
|
|
|
|
+- **正交表**:`动作 × 类型` 整张 27×50(来自 `reference/judged_matrix.json`),每格
|
|
|
|
|
+ query = `[工具类型] 动作叶 类型叶 [模态] [后缀]`,tier 决定底色。
|
|
|
|
|
+- **评估高亮**:`POST /api/query_score` 起 `stages/query_score.py`,对 643 个 tier≥1 格在
|
|
|
|
|
+ 当前维度上下文下用 Sonnet 打分(natural/findable/useful + keep + rewrite + reason),
|
|
|
|
|
+ 综合分 `= natural*0.4 + findable*0.3 + useful*0.3`。结果按选择哈希缓存
|
|
|
|
|
+ `.cache/query_score/<sel>.json`,**同选择不重复付费**。
|
|
|
|
|
+- **达标 = keep 且 综合分 ≥ 阈值**(弹层可调,默认 7):达标格蓝框高亮 + 角标分数,
|
|
|
|
|
+ 点格弹气泡(分数拆解 / 理由 / 发起搜索 / 复制)。
|
|
|
|
|
+- **发起搜索**:点单格 或「搜全部达标」→ `POST /api/run_search`(默认 `xhs,gzh` 各 20、
|
|
|
|
|
+ 方向无关,落表由评估标签自动路由)。
|
|
|
|
|
+
|
|
|
|
|
+命令行单独跑评分(不依赖 UI):
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+python stages/query_score.py --tool-type AI --modality 图片 --suffix 怎么做 --dry-run # 只拼词,不调 LLM
|
|
|
|
|
+python stages/query_score.py --tool-type AI --suffix 怎么做 --limit 20 --sel _t # 小样真评(写 .cache)
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+外部依赖:`library.aiddit.com` 的 category-tree 接口(实质/形式),server 端直连 + `.cache/category_tree/` 缓存。
|
|
|
|
|
+
|
|
|
## 知识导入(工序上传)
|
|
## 知识导入(工序上传)
|
|
|
|
|
|
|
|
把 DB 中**已采纳**的工序解构导入到知识接口(`/api/v1/knowledge/ingest`)。数据来源是
|
|
把 DB 中**已采纳**的工序解构导入到知识接口(`/api/v1/knowledge/ingest`)。数据来源是
|