284 lines
12 KiB
Markdown
284 lines
12 KiB
Markdown
# Graph Report - juzi (2026-09-27)
|
||
|
||
## Corpus Check
|
||
- 30 files · ~1,639,651 words
|
||
- Verdict: corpus is large enough that graph structure adds value.
|
||
|
||
## Summary
|
||
- 872 nodes · 2061 edges · 61 communities (41 shown, 20 thin omitted)
|
||
- Extraction: 92% EXTRACTED · 8% INFERRED · 0% AMBIGUOUS · INFERRED: 166 edges (avg confidence: 0.52)
|
||
- Token cost: 0 input · 0 output
|
||
|
||
## Graph Freshness
|
||
- Built from commit: `7d72d7dd`
|
||
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
|
||
- Run `graphify update .` after code changes (no API cost).
|
||
|
||
## Community Hubs (Navigation)
|
||
- face-api.js
|
||
- n
|
||
- app.js
|
||
- skin-score.js
|
||
- NeuralNetwork
|
||
- .toBatchTensor
|
||
- getEnv
|
||
- FaceLandmarks
|
||
- disposeUnusedWeightTensors
|
||
- __awaiter
|
||
- .dispose
|
||
- AgeGenderNet
|
||
- server.js
|
||
- files
|
||
- extractAllFacesAndComputeResults
|
||
- .runAndExtendWithFaceDetection
|
||
- 巨子测肤 · 1'me 在线肌肤测试 — UI 设计规范
|
||
- extractFaces
|
||
- 1'me 在线肌肤测试 H5
|
||
- head-pose.js
|
||
- build_fixtures.py
|
||
- .forwardInput
|
||
- .loadFromDisk
|
||
- facepp-skinanalyze(旷视皮肤分析专业版调用技能)
|
||
- 巨子测肤 · 1'me 语音播报内容设计文档 V1.0
|
||
- .predictAgeAndGender
|
||
- wi
|
||
- to_mp3
|
||
- initialize
|
||
- face-api.js 本地化依赖(h5/vendor/faceapi/)
|
||
- regression.js
|
||
- isValidNumber
|
||
- FaceMatcher
|
||
- build-fixture.py
|
||
- DetectSingleFaceLandmarksTask
|
||
- so
|
||
- tt
|
||
- TinyYolov2
|
||
- cn
|
||
- ComputeAllFaceDescriptorsTask
|
||
- ComputeSingleFaceDescriptorTask
|
||
- dr
|
||
- FaceLandmark68Net
|
||
- rescaleAndNormalize
|
||
- PredictAllAgeAndGenderWithFaceAlignmentTask
|
||
- PredictAllFaceExpressionsWithFaceAlignmentTask
|
||
- PredictSingleAgeAndGenderWithFaceAlignmentTask
|
||
- PredictSingleFaceExpressionsWithFaceAlignmentTask
|
||
- Yo
|
||
- call_skinanalyze_3view.sh
|
||
- Vc
|
||
- createSsdMobilenetv1
|
||
- FaceDetection
|
||
- ff
|
||
- ge
|
||
- sa
|
||
- po
|
||
- wn
|
||
- call_skinanalyze.sh
|
||
|
||
## God Nodes (most connected - your core abstractions)
|
||
1. `__awaiter()` - 59 edges
|
||
2. `__generator()` - 59 edges
|
||
3. `n()` - 36 edges
|
||
4. `t()` - 33 edges
|
||
5. `i()` - 33 edges
|
||
6. `r()` - 32 edges
|
||
7. `C()` - 32 edges
|
||
8. `toNetInput()` - 27 edges
|
||
9. `e()` - 22 edges
|
||
10. `f()` - 20 edges
|
||
|
||
## Surprising Connections (you probably didn't know these)
|
||
- `detectFrame()` --indirect_call--> `d()` [INFERRED]
|
||
h5/js/app.js → h5/vendor/faceapi/face-api.js
|
||
- `vizCompose()` --indirect_call--> `h()` [INFERRED]
|
||
h5/js/app.js → h5/vendor/faceapi/face-api.js
|
||
- `vizCompose()` --indirect_call--> `rh()` [INFERRED]
|
||
h5/js/app.js → h5/vendor/faceapi/face-api.js
|
||
- `vizCompose()` --indirect_call--> `w()` [INFERRED]
|
||
h5/js/app.js → h5/vendor/faceapi/face-api.js
|
||
- `renderReport()` --indirect_call--> `t()` [INFERRED]
|
||
h5/js/app.js → h5/vendor/faceapi/face-api.js
|
||
|
||
## Import Cycles
|
||
- None detected.
|
||
|
||
## Communities (61 total, 20 thin omitted)
|
||
|
||
### Community 0 - "face-api.js"
|
||
Cohesion: 0.02
|
||
Nodes (35): ca(), cd(), ce(), dn(), ee(), er(), et(), Ft() (+27 more)
|
||
|
||
### Community 1 - "n"
|
||
Cohesion: 0.07
|
||
Nodes (90): a(), ae(), ao(), b(), ba(), be(), bf(), bi() (+82 more)
|
||
|
||
### Community 2 - "app.js"
|
||
Cohesion: 0.08
|
||
Nodes (55): armNudge(), beginDetect(), bindBackdropClose(), cancelCountdown(), captureFromVideo(), cdTick(), closeOverlay(), detectFrame() (+47 more)
|
||
|
||
### Community 3 - "skin-score.js"
|
||
Cohesion: 0.12
|
||
Nodes (43): acneGrade(), buildViewModel(), calcAcne(), calcContour(), calcSens(), calcSmooth(), calcTone(), calcWrinkles() (+35 more)
|
||
|
||
### Community 4 - "NeuralNetwork"
|
||
Cohesion: 0.07
|
||
Nodes (26): createFaceRecognitionNet(), createMtcnn(), createTinyFaceDetector(), createTinyYolov2(), extractConvParamsFactory(), extractFCParamsFactory(), extractorsFactory(), extractorsFactory$1() (+18 more)
|
||
|
||
### Community 5 - ".toBatchTensor"
|
||
Cohesion: 0.08
|
||
Nodes (29): conv(), conv$1(), convDown(), convLayer(), convLayer$1(), convNoRelu(), convWithBatchNorm(), denseBlock3() (+21 more)
|
||
|
||
### Community 6 - "getEnv"
|
||
Cohesion: 0.09
|
||
Nodes (26): awaitMediaLoaded(), bufferToImage(), createCanvas(), createCanvasFromMedia(), DetectAllFacesTask(), DrawBox(), drawDetections(), drawFaceExpressions() (+18 more)
|
||
|
||
### Community 7 - "FaceLandmarks"
|
||
Cohesion: 0.08
|
||
Nodes (11): extendWithFaceLandmarks(), FaceLandmark68NetBase(), FaceLandmarks(), FaceLandmarks5(), FaceLandmarks68(), getCenterPoint(), isDimensions(), minBbox() (+3 more)
|
||
|
||
### Community 8 - "disposeUnusedWeightTensors"
|
||
Cohesion: 0.09
|
||
Nodes (24): disposeUnusedWeightTensors(), extractorsFactory$3(), extractorsFactory$5(), extractorsFactory$7(), extractorsFactory$9(), extractParamsFromWeigthMap(), extractParamsFromWeigthMap$1(), extractParamsFromWeigthMap$2() (+16 more)
|
||
|
||
### Community 9 - "__awaiter"
|
||
Cohesion: 0.17
|
||
Nodes (10): __awaiter(), fetchImage(), fetchJson(), fetchNetWeights(), fetchOrThrow(), __generator(), loadWeightMap(), Mtcnn() (+2 more)
|
||
|
||
### Community 10 - ".dispose"
|
||
Cohesion: 0.16
|
||
Nodes (13): computeReshapedDimensions(), extractBoundingBoxes(), iou(), isEven(), NetInput(), nonMaxSuppression(), nonMaxSuppression$1(), pyramidDown() (+5 more)
|
||
|
||
### Community 11 - "AgeGenderNet"
|
||
Cohesion: 0.12
|
||
Nodes (4): AgeGenderNet(), FaceExpressionNet(), FaceLandmark68TinyNet(), FaceProcessor()
|
||
|
||
### Community 12 - "server.js"
|
||
Cohesion: 0.14
|
||
Nodes (16): callFacepp(), CRED, DATA_DIR, ERR_MSG, fs, handleAnalyze(), http, isUsableB64() (+8 more)
|
||
|
||
### Community 13 - "files"
|
||
Cohesion: 0.12
|
||
Nodes (15): files, analyze-fail, analyzing, countdown-321, hint-far, hint-front, hint-hold, hint-near (+7 more)
|
||
|
||
### Community 14 - "extractAllFacesAndComputeResults"
|
||
Cohesion: 0.16
|
||
Nodes (7): extendWithFaceDescriptor(), extendWithFaceExpressions(), extractAllFacesAndComputeResults(), extractSingleFaceAndComputeResult(), FaceRecognitionNet(), PredictAllFaceExpressionsTask(), PredictSingleFaceExpressionsTask()
|
||
|
||
### Community 15 - ".runAndExtendWithFaceDetection"
|
||
Cohesion: 0.23
|
||
Nodes (6): allFacesMtcnn(), allFacesSsdMobilenetv1(), allFacesTinyYolov2(), DetectAllFaceLandmarksTask(), detectAllFaces(), DetectSingleFaceTask()
|
||
|
||
### Community 16 - "巨子测肤 · 1'me 在线肌肤测试 — UI 设计规范"
|
||
Cohesion: 0.15
|
||
Nodes (12): 1. 基准与尺寸换算, 2. 色彩规范, 3. 字体规范, 4. 组件切图(assets/svg/), 5. 图片素材(assets/images/,共 15 张), 6. 页面清单(design/ 下有整屏 PNG 预览), 7. 目录结构, 8. 还原建议 (+4 more)
|
||
|
||
### Community 17 - "extractFaces"
|
||
Cohesion: 0.22
|
||
Nodes (6): Box(), extractFaces(), extractFaceTensors(), imageTensorToCanvas(), isTensor3D(), isTensor4D()
|
||
|
||
### Community 18 - "1'me 在线肌肤测试 H5"
|
||
Cohesion: 0.18
|
||
Nodes (10): 1'me 在线肌肤测试 H5, Windows 本机部署(提测用), 密钥配置, 已知占位清单, 技术说明, 拍照交互(引导式自动三连拍), 本地运行, 检测流程与评分渲染 (+2 more)
|
||
|
||
### Community 19 - "head-pose.js"
|
||
Cohesion: 0.33
|
||
Nodes (8): assertPoints(), check(), clamp(), dist(), estimate(), makeFrontal(), makeSide(), midpoint()
|
||
|
||
### Community 20 - "build_fixtures.py"
|
||
Cohesion: 0.40
|
||
Nodes (9): build_case1(), build_case2(), build_truth(), col(), dump(), main(), parse_value(), set_path() (+1 more)
|
||
|
||
### Community 21 - ".forwardInput"
|
||
Cohesion: 0.22
|
||
Nodes (9): boxPredictionLayer(), decodeBoxesLayer(), depthwiseConvLayer(), getCenterCoordinatesAndSizesLayer(), getStridesForLayerIdx(), mobileNetV1(), outputLayer(), pointwiseConvLayer() (+1 more)
|
||
|
||
### Community 22 - ".loadFromDisk"
|
||
Cohesion: 0.22
|
||
Nodes (4): ComposableTask(), getModelUris(), Gf(), TinyFaceDetector()
|
||
|
||
### Community 23 - "facepp-skinanalyze(旷视皮肤分析专业版调用技能)"
|
||
Cohesion: 0.20
|
||
Nodes (9): 1. 凭据(统一管理), 2. 标准调用模板(全可选参数,每次都带), 2b. 三视图调用模板(正脸 + 双侧脸 → 下颌线), 3.1 本轮踩过的坑(务必避复), 3. 三维度 × 6 分类 P/S 计算(2026-09-26 生效,取代旧六维), 4. 产品分组公式, 5. Excel 报告铁律(必须遵守), 6. 其他 Agent 调用约定 (+1 more)
|
||
|
||
### Community 24 - "巨子测肤 · 1'me 语音播报内容设计文档 V1.0"
|
||
Cohesion: 0.22
|
||
Nodes (8): 1. 音频格式约定(已定), 2. 播报清单(14 条), 3. 播放策略(前端已实现侧约定), 4. 生成验收, A. 步骤引导(进入每个拍照步骤时播,与屏幕步骤文案一致), B. 姿态提示(实时检测不通过时播,同一提示 4 秒内不重复), C. 拍摄与流程, 巨子测肤 · 1'me 语音播报内容设计文档 V1.0
|
||
|
||
### Community 25 - ".predictAgeAndGender"
|
||
Cohesion: 0.28
|
||
Nodes (4): extendWithAge(), extendWithGender(), PredictAllAgeAndGenderTask(), PredictSingleAgeAndGenderTask()
|
||
|
||
### Community 26 - "wi"
|
||
Cohesion: 0.28
|
||
Nodes (9): Ci(), Ei(), Fi(), Ii(), ki(), pe(), ri(), wi() (+1 more)
|
||
|
||
### Community 27 - "to_mp3"
|
||
Cohesion: 0.32
|
||
Nodes (7): ndarray, Path, main(), 裁掉过长首尾静音,保留 ≤150ms 边沿,避免提示显迟钝。, 响度归一 −16 LUFS + 转 MP3 48k CBR mono 22050Hz。, to_mp3(), trim_edges()
|
||
|
||
### Community 28 - "initialize"
|
||
Cohesion: 0.29
|
||
Nodes (7): createBrowserEnv(), createFileSystem(), createNodejsEnv(), initialize(), isBrowser(), monkeyPatch(), setEnv()
|
||
|
||
### Community 29 - "face-api.js 本地化依赖(h5/vendor/faceapi/)"
|
||
Cohesion: 0.29
|
||
Nodes (6): face-api.js 本地化依赖(h5/vendor/faceapi/), 为什么本地化, 文件清单与体积, 来源与版本, 用法, 许可证
|
||
|
||
### Community 30 - "regression.js"
|
||
Cohesion: 0.60
|
||
Nodes (5): diffCtx(), loadJSON(), main(), okNum(), okStr()
|
||
|
||
### Community 31 - "isValidNumber"
|
||
Cohesion: 0.33
|
||
Nodes (5): bgrToRgbTensor(), Dimensions(), isValidNumber(), isValidProbablitiy(), isWithGender()
|
||
|
||
### Community 33 - "build-fixture.py"
|
||
Cohesion: 0.60
|
||
Nodes (4): main(), 递归缩放 result 内全部坐标:{left,top,width,height} 矩形与 {x,y} 点,与原数据同为整数。, scale_coords(), to_data_url()
|
||
|
||
### Community 36 - "so"
|
||
Cohesion: 0.50
|
||
Nodes (4): Do(), io(), so(), To()
|
||
|
||
### Community 37 - "tt"
|
||
Cohesion: 0.50
|
||
Nodes (4): kn(), tt(), wo(), z()
|
||
|
||
### Community 39 - "cn"
|
||
Cohesion: 0.67
|
||
Nodes (3): cn(), en(), yn()
|
||
|
||
### Community 42 - "dr"
|
||
Cohesion: 0.67
|
||
Nodes (3): dr(), na(), ta()
|
||
|
||
### Community 44 - "rescaleAndNormalize"
|
||
Cohesion: 0.67
|
||
Nodes (3): getSizesForScale(), normalize$1(), rescaleAndNormalize()
|
||
|
||
### Community 49 - "Yo"
|
||
Cohesion: 0.67
|
||
Nodes (3): qo(), Xo(), Yo()
|
||
|
||
## Knowledge Gaps
|
||
- **59 isolated node(s):** `step1-front`, `step2-rightface`, `step3-leftface`, `hint-noface`, `hint-near` (+54 more)
|
||
These have ≤1 connection - possible missing edges or undocumented components.
|
||
- **20 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
||
|
||
## Suggested Questions
|
||
_Questions this graph is uniquely positioned to answer:_
|
||
|
||
- **Why does `val()` connect `skin-score.js` to `extractFaces`?**
|
||
_High betweenness centrality (0.085) - this node is a cross-community bridge._
|
||
- **Why does `Box()` connect `extractFaces` to `face-api.js`, `.dispose`, `isValidNumber`, `FaceLandmarks`?**
|
||
_High betweenness centrality (0.059) - this node is a cross-community bridge._
|
||
- **Why does `vizCompose()` connect `app.js` to `n`?**
|
||
_High betweenness centrality (0.046) - this node is a cross-community bridge._
|
||
- **Are the 23 inferred relationships involving `n()` (e.g. with `ae()` and `be()`) actually correct?**
|
||
_`n()` has 23 INFERRED edges - model-reasoned connections that need verification._
|
||
- **Are the 7 inferred relationships involving `t()` (e.g. with `renderReport()` and `e()`) actually correct?**
|
||
_`t()` has 7 INFERRED edges - model-reasoned connections that need verification._
|
||
- **Are the 9 inferred relationships involving `i()` (e.g. with `da()` and `f()`) actually correct?**
|
||
_`i()` has 9 INFERRED edges - model-reasoned connections that need verification._
|
||
- **What connects `step1-front`, `step2-rightface`, `step3-leftface` to the rest of the system?**
|
||
_59 weakly-connected nodes found - possible documentation gaps or missing edges._ |