project-interview-skill 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  <p><a href="https://github.com/Jaxon1216/interview-analyzer-skill/blob/main/README_EN.md">English</a></p>
4
4
  <p><em>把你的项目经历,变成可复述、可追问、可上场的面试战斗手册。</em></p>
5
5
  <p>
6
- <a href="SKILL.md"><img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-yellow.svg"></a>
6
+ <a href="skill/project-interview-skill/SKILL.md"><img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-yellow.svg"></a>
7
7
  <img alt="Type: Agent Skill" src="https://img.shields.io/badge/Type-Agent%20Skill-7c3aed">
8
8
  <img alt="Trae Compatible" src="https://img.shields.io/badge/Trae-Compatible-111827">
9
9
  <img alt="Cursor Compatible" src="https://img.shields.io/badge/Cursor-Compatible-00B8D9">
@@ -97,7 +97,7 @@ npx project-interview-skill install --project --trae
97
97
  | 文件 | 用途 |
98
98
  |------|------|
99
99
  | `导学-{简称}.md` | 前置知识、必备知识点、推荐阅读(含仓库相对路径)、原理与设计决策;文末可含「量化与验证(含待测)」 |
100
- | `面经-{简称}.md` | 1~2 句简历摘要、项目 bullets、15~25 道面试题(主问/追问口播) |
100
+ | `面经-{简称}.md` | 1~2 句简历摘要、架构向 bullets、按简历支柱展开的面试题(主问/追问口播) |
101
101
 
102
102
  也可以不写 slash 命令,直接描述“请基于这个项目生成导学和面经”。
103
103
 
@@ -114,28 +114,40 @@ cd interview-analyzer-skill
114
114
 
115
115
  npm 包不会打包 `install.sh`;对普通用户优先推荐 `npx project-interview-skill ...`。
116
116
 
117
+ ## 可直接复制的 Skill Bundle
118
+
119
+ 仓库外层是 npm CLI 和开发工程;真正可独立迁移的 Skill 位于:
120
+
121
+ ```text
122
+ skill/project-interview-skill/
123
+ ├── SKILL.md
124
+ ├── references/
125
+ └── scripts/
126
+ ```
127
+
128
+ 复制这个目录即可迁移 Skill,不需要复制 `bin/`、`tests/` 或 `package.json`。npm CLI 安装时也只从这个目录生成目标 Skill。
129
+
117
130
  ## 仓库结构
118
131
 
119
132
  ```text
120
133
  interview-analyzer-skill/
134
+ |-- skill/
135
+ | `-- project-interview-skill/
136
+ | |-- SKILL.md
137
+ | |-- references/
138
+ | | |-- rules/
139
+ | | |-- templates/
140
+ | | |-- examples/
141
+ | | `-- excellent-resumes/
142
+ | `-- scripts/
121
143
  |-- bin/
122
144
  | `-- project-interview-skill.js
123
- |-- SKILL.md
124
145
  |-- install.sh
125
146
  |-- package.json
126
147
  |-- README.md
127
148
  |-- README_EN.md
128
149
  |-- demo.jpg
129
150
  |-- LICENSE
130
- |-- references/
131
- | |-- interview-rubric.md
132
- | |-- star-framework.md
133
- | |-- output-templates.md
134
- | |-- oral-and-resume-patterns.md
135
- | `-- oral-style-samples.md
136
- |-- scripts/
137
- | |-- check_inputs.py
138
- | `-- build_prompt.py
139
151
  `-- tests/
140
152
  ```
141
153
 
package/README_EN.md ADDED
@@ -0,0 +1,200 @@
1
+ <div align="center">
2
+ <h1>project-interview-skill</h1>
3
+ <p><a href="https://github.com/Jaxon1216/interview-analyzer-skill/blob/main/README.md">简体中文</a></p>
4
+ <p><em>Turn your project experience into interview-ready docs you can actually explain and defend.</em></p>
5
+ <p>
6
+ <a href="skill/project-interview-skill/SKILL.md"><img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-yellow.svg"></a>
7
+ <img alt="Type: Agent Skill" src="https://img.shields.io/badge/Type-Agent%20Skill-7c3aed">
8
+ <img alt="Trae Compatible" src="https://img.shields.io/badge/Trae-Compatible-111827">
9
+ <img alt="Cursor Compatible" src="https://img.shields.io/badge/Cursor-Compatible-00B8D9">
10
+ <img alt="VS Code Compatible" src="https://img.shields.io/badge/VS%20Code-Compatible-007ACC?logo=visual-studio-code&logoColor=white">
11
+ <img alt="Claude Code Compatible" src="https://img.shields.io/badge/Claude%20Code-Compatible-7c3aed">
12
+ <img alt="Codex Compatible" src="https://img.shields.io/badge/Codex-Compatible-0A66C2">
13
+ </p>
14
+ </div>
15
+
16
+ Generate two practical interview-prep docs from a real codebase, written to the target project root:
17
+
18
+ - `导学-{short-name}.md`: key highlights, code-reading path, and study checklist
19
+ - `面经-{short-name}.md`: resume-ready summary plus first-person STAR speaking answers
20
+
21
+ ## Demo
22
+
23
+ This merged screenshot shows both trigger input and interview output:
24
+
25
+ ![Demo](https://raw.githubusercontent.com/Jaxon1216/interview-analyzer-skill/main/demo.jpg)
26
+
27
+ ## Install
28
+
29
+ Use `npx`; cloning is not required:
30
+
31
+ ```bash
32
+ npx project-interview-skill install
33
+ ```
34
+
35
+ The default target is the user-level generic Agent directory:
36
+
37
+ ```text
38
+ ~/.agents/skills/project-interview-skill/
39
+ ```
40
+
41
+ If you know which editor or Agent you use, specify it explicitly:
42
+
43
+ | Target | User-level command | Install location |
44
+ |--------|--------------------|------------------|
45
+ | Generic Agent / Codex | `npx project-interview-skill install --agents` | `~/.agents/skills/project-interview-skill/` |
46
+ | Trae | `npx project-interview-skill install --trae` | `~/.trae/skills/project-interview-skill/` |
47
+ | Cursor | `npx project-interview-skill install --cursor` | `~/.cursor/rules/project-interview-skill/` |
48
+ | VS Code | `npx project-interview-skill install --vscode` | `~/.copilot/instructions/project-interview-skill.instructions.md` |
49
+ | Claude Code | `npx project-interview-skill install --claude-code` | `~/.claude/skills/project-interview-skill/` |
50
+ | Codex | `npx project-interview-skill install --codex` | `~/.agents/skills/project-interview-skill/` |
51
+
52
+ Install every supported target:
53
+
54
+ ```bash
55
+ npx project-interview-skill install --all
56
+ ```
57
+
58
+ Preview paths without writing files:
59
+
60
+ ```bash
61
+ npx project-interview-skill install --trae --dry-run
62
+ npx project-interview-skill doctor
63
+ ```
64
+
65
+ ## Project-Level Install
66
+
67
+ To install the skill only for one application repository, run the command from that repository root:
68
+
69
+ ```bash
70
+ cd /path/to/your-project
71
+ npx project-interview-skill install --project --trae
72
+ ```
73
+
74
+ Supported project-level targets:
75
+
76
+ | Target | Project-level command | Install location |
77
+ |--------|-----------------------|------------------|
78
+ | Generic Agent / Codex | `npx project-interview-skill install --project --agents` | `.agents/skills/project-interview-skill/` |
79
+ | Trae | `npx project-interview-skill install --project --trae` | `.trae/rules/project-interview-skill/` |
80
+ | Cursor | `npx project-interview-skill install --project --cursor` | `.cursor/rules/project-interview-skill/` |
81
+ | VS Code | `npx project-interview-skill install --project --vscode` | `.github/instructions/project-interview-skill.instructions.md` |
82
+ | Claude Code | `npx project-interview-skill install --project --claude-code` | `.claude/skills/project-interview-skill/` |
83
+ | Codex | `npx project-interview-skill install --project --codex` | `.agents/skills/project-interview-skill/` |
84
+
85
+ Restart the target IDE or Agent after installation.
86
+
87
+ ## Usage
88
+
89
+ Open the target project root in your IDE or Agent, then start a new chat:
90
+
91
+ ```text
92
+ /project-interview-skill 简称:电商;项目描述:...;技术栈:Vue3、Pinia、Vite;求职方向:前端
93
+ ```
94
+
95
+ The skill creates these files under the target project root:
96
+
97
+ | File | Purpose |
98
+ |------|---------|
99
+ | `导学-{short-name}.md` | Prerequisites, key concepts, repo-relative reading guide, design decisions, and optional measurement notes |
100
+ | `面经-{short-name}.md` | 1-2 sentence resume summary, architecture-level bullets, and interview Q&A mapped to those bullets |
101
+
102
+ You can also invoke it naturally by asking for project interview preparation docs.
103
+
104
+ ## Source Checkout Compatibility
105
+
106
+ `install.sh` is kept for users who clone the repository. It is only a wrapper around the Node CLI:
107
+
108
+ ```bash
109
+ git clone https://github.com/Jaxon1216/interview-analyzer-skill.git
110
+ cd interview-analyzer-skill
111
+ ./install.sh --trae
112
+ ./install.sh --project --cursor
113
+ ```
114
+
115
+ The npm package does not include `install.sh`; regular users should prefer `npx project-interview-skill ...`.
116
+
117
+ ## Standalone Skill Bundle
118
+
119
+ The repository root contains the npm CLI and development files. The independently portable Skill bundle is:
120
+
121
+ ```text
122
+ skill/project-interview-skill/
123
+ ├── SKILL.md
124
+ ├── references/
125
+ └── scripts/
126
+ ```
127
+
128
+ Copy this directory to migrate the Skill; `bin/`, `tests/`, and `package.json` are not required. The npm CLI also builds installed targets from this directory only.
129
+
130
+ ## Repository Structure
131
+
132
+ ```text
133
+ interview-analyzer-skill/
134
+ |-- skill/
135
+ | `-- project-interview-skill/
136
+ | |-- SKILL.md
137
+ | |-- references/
138
+ | | |-- rules/
139
+ | | |-- templates/
140
+ | | |-- examples/
141
+ | | `-- excellent-resumes/
142
+ | `-- scripts/
143
+ |-- bin/
144
+ | `-- project-interview-skill.js
145
+ |-- install.sh
146
+ |-- package.json
147
+ |-- README.md
148
+ |-- README_EN.md
149
+ |-- demo.jpg
150
+ |-- LICENSE
151
+ `-- tests/
152
+ ```
153
+
154
+ ## Maintenance and Publishing
155
+
156
+ This npm CLI package does not need a build step. The package contents are controlled by the `files` allowlist in `package.json`:
157
+
158
+ ```bash
159
+ npm pack --dry-run
160
+ npm publish --access public
161
+ ```
162
+
163
+ Local checks:
164
+
165
+ ```bash
166
+ npm test
167
+ npm run pack:check
168
+ node bin/project-interview-skill.js install --trae --dry-run
169
+ ```
170
+
171
+ ## FAQ
172
+
173
+ ### Is `.npmrc` required?
174
+
175
+ No. It is only useful for this repository's development registry selection. Public npm publishing is controlled by `publishConfig.registry` in `package.json`.
176
+
177
+ ### Why does the default install target `.agents/skills`?
178
+
179
+ It is the least surprising user-level default and avoids guessing which product the user wants. Use an explicit flag for Trae, Cursor, VS Code, Claude Code, or Codex.
180
+
181
+ ### Does `install` auto-detect products?
182
+
183
+ No. The behavior is intentionally narrow: the default installs only to `.agents/skills`, product-specific installs require `--trae`, `--cursor`, `--vscode`, `--claude-code`, or `--codex`. `doctor` only prints paths.
184
+
185
+ ### Do updates apply automatically?
186
+
187
+ No. Installed skill folders are copied artifacts. Re-run the install command:
188
+
189
+ ```bash
190
+ npx project-interview-skill install --trae
191
+ ```
192
+
193
+ ## Support
194
+
195
+ - **Contact** (feedback, commercial use, derivatives): **jiangxu05@outlook.com**
196
+ - **Star**, **Fork**, **Issues / PRs** are welcome.
197
+
198
+ ## License
199
+
200
+ Licensed under the **[MIT License](LICENSE)**. The file includes the English legal text plus an unofficial Chinese translation for convenience; if they disagree, the English section controls.
@@ -8,6 +8,7 @@ const path = require('path');
8
8
  const PACKAGE_NAME = 'project-interview-skill';
9
9
  const SKILL_DIR_NAME = 'project-interview-skill';
10
10
  const SUPPORTED_PRODUCTS = ['agents', 'trae', 'cursor', 'vscode', 'claude-code', 'codex'];
11
+ const SKILL_BUNDLE_PATH = path.join('skill', 'project-interview-skill');
11
12
  const COLORS = {
12
13
  reset: '\x1b[0m',
13
14
  bold: '\x1b[1m',
@@ -20,8 +21,6 @@ const BUNDLE_ENTRIES = [
20
21
  'SKILL.md',
21
22
  'references',
22
23
  'scripts',
23
- 'README.md',
24
- 'LICENSE',
25
24
  ];
26
25
 
27
26
  function main() {
@@ -146,6 +145,7 @@ function doctor(options) {
146
145
  const home = os.homedir();
147
146
 
148
147
  info(`Package root: ${packageRoot()}`);
148
+ info(`Skill bundle: ${skillBundleRoot()}`);
149
149
  info(`Current project: ${cwd}`);
150
150
  info(`Home: ${home}`);
151
151
  console.log('');
@@ -240,9 +240,9 @@ function installProduct(product, target, options) {
240
240
  }
241
241
 
242
242
  function validatePackage() {
243
- const skillPath = path.join(packageRoot(), 'SKILL.md');
243
+ const skillPath = path.join(skillBundleRoot(), 'SKILL.md');
244
244
  if (!fs.existsSync(skillPath)) {
245
- throw new Error(`Missing SKILL.md at ${skillPath}`);
245
+ throw new Error(`Missing Skill bundle entry: ${skillPath}`);
246
246
  }
247
247
 
248
248
  const firstLine = fs.readFileSync(skillPath, 'utf8').split(/\r?\n/, 1)[0];
@@ -255,7 +255,7 @@ function copyBundle(destination) {
255
255
  fs.mkdirSync(destination, { recursive: true });
256
256
 
257
257
  for (const entry of BUNDLE_ENTRIES) {
258
- const source = path.join(packageRoot(), entry);
258
+ const source = path.join(skillBundleRoot(), entry);
259
259
  if (!fs.existsSync(source)) {
260
260
  continue;
261
261
  }
@@ -322,7 +322,7 @@ function writeFile(filePath, content) {
322
322
  }
323
323
 
324
324
  function skillBody() {
325
- const content = fs.readFileSync(path.join(packageRoot(), 'SKILL.md'), 'utf8');
325
+ const content = fs.readFileSync(path.join(skillBundleRoot(), 'SKILL.md'), 'utf8');
326
326
  const lines = content.split(/\r?\n/);
327
327
  let delimiterCount = 0;
328
328
  const body = [];
@@ -341,7 +341,7 @@ function skillBody() {
341
341
  }
342
342
 
343
343
  function extractDescription() {
344
- const content = fs.readFileSync(path.join(packageRoot(), 'SKILL.md'), 'utf8');
344
+ const content = fs.readFileSync(path.join(skillBundleRoot(), 'SKILL.md'), 'utf8');
345
345
  const lines = content.split(/\r?\n/);
346
346
  let inFrontmatter = false;
347
347
  let inDescriptionBlock = false;
@@ -383,6 +383,10 @@ function packageRoot() {
383
383
  return path.resolve(__dirname, '..');
384
384
  }
385
385
 
386
+ function skillBundleRoot() {
387
+ return path.join(packageRoot(), SKILL_BUNDLE_PATH);
388
+ }
389
+
386
390
  function printHelp() {
387
391
  console.log(`${bold(PACKAGE_NAME)}
388
392
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "project-interview-skill",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Install a project interview preparation skill for AI coding agents.",
5
5
  "license": "MIT",
6
6
  "author": "EastonJiang <jiangxu05@outlook.com>",
@@ -14,10 +14,9 @@
14
14
  },
15
15
  "files": [
16
16
  "bin/",
17
- "SKILL.md",
18
- "references/",
19
- "scripts/",
17
+ "skill/",
20
18
  "README.md",
19
+ "README_EN.md",
21
20
  "LICENSE"
22
21
  ],
23
22
  "scripts": {
@@ -8,19 +8,20 @@ license: MIT
8
8
  activation: /project-interview-skill
9
9
  provenance:
10
10
  maintainer: project-interview-skill
11
- version: 1.1.0
11
+ version: 1.2.0
12
12
  created: 2026-04-20
13
13
  source_references:
14
- - references/interview-rubric.md
15
- - references/star-framework.md
16
- - references/output-templates.md
17
- - references/oral-and-resume-patterns.md
18
- - references/oral-style-samples.md
14
+ - references/rules/interview-rubric.md
15
+ - references/rules/star-framework.md
16
+ - references/templates/output-templates.md
17
+ - references/rules/oral-and-resume-patterns.md
18
+ - references/examples/oral-style-samples.md
19
+ - references/excellent-resumes/README.md
19
20
  metadata:
20
21
  author: project-interview-skill
21
- version: 1.1.0
22
+ version: 1.2.0
22
23
  created: 2026-04-20
23
- last_reviewed: 2026-07-28
24
+ last_reviewed: 2026-08-28
24
25
  review_interval_days: 90
25
26
  ---
26
27
 
@@ -28,6 +29,8 @@ metadata:
28
29
 
29
30
  你是**资深大厂面试官与工程导师**。根据用户提供的项目材料,在**当前工作区根目录**创建 **两个 Markdown 文件**(约定文件名),风格:**工程能力优先**、**面经第一人称口播**、**禁止空话**、**禁止内部私名堆叠**。
30
31
 
32
+ 简历 bullet 必须是面试官能 30 秒追问的**架构支柱**(痛点 → 机制 → 约束),不是功能工单清单。面经主问必须围绕这些支柱,题干假设面试官**只看过简历**。
33
+
31
34
  ## Trigger
32
35
 
33
36
  用户输入 `/project-interview-skill` 或描述「分析项目 / 写面经 / 导学」时激活。
@@ -40,11 +43,15 @@ metadata:
40
43
 
41
44
  ## 必读参考(按需加载)
42
45
 
43
- - [大厂面试与工程 rubric](references/interview-rubric.md)
44
- - [STAR、追问与口播要求](references/star-framework.md)
45
- - [输出骨架与文件名](references/output-templates.md)
46
- - [口播与简历一句话抽象](references/oral-and-resume-patterns.md)
47
- - [口播抽象层级样例(前端+后端)](references/oral-style-samples.md)
46
+ 写对应产物前必须加载,不要只扫本文件的一行摘要:
47
+
48
+ - [口播与简历抽象(简介 + bullet 四槽 + 出题契约)](references/rules/oral-and-resume-patterns.md) — **写简介和简历 bullet 前必读**
49
+ - [领域中立 Bullet few-shot](references/examples/bullet-few-shots.md) — **生成 bullet 时对照正例、反例与改写,不复制样例素材**
50
+ - [优秀简历样例库](references/excellent-resumes/README.md) — **写 bullet 前至少对照 1 份金样 + 反例调性**
51
+ - [STAR、追问与口播要求](references/rules/star-framework.md) — **出题前必读**(先 bullet 后主问,8~12 道)
52
+ - [输出骨架与文件名](references/templates/output-templates.md)
53
+ - [口播抽象层级样例(前端+后端)](references/examples/oral-style-samples.md)
54
+ - [大厂面试与工程 rubric](references/rules/interview-rubric.md)
48
55
 
49
56
  ## 输入契约
50
57
 
@@ -53,14 +60,28 @@ metadata:
53
60
  | 项目描述 | **是** | 背景、职责、难点、结果;越具体越好 |
54
61
  | **简称** | **强烈建议** | 用于文件名 `导学-{简称}.md`、`面经-{简称}.md`;未给则你提炼并在文首列出 |
55
62
  | 技术栈 | 否 | 语言/框架/中间件/观测与发布 |
56
- | 求职方向 | 否 | `前端` / `后端` / `AI` / 未指定 |
63
+ | 求职方向 | 否 | `前端` / `后端` / `AI` / 未指定。方向只调口播权重,**不得**把系统机制从一级简历里抹掉 |
64
+ | 职责海拔 | 否 | 核心作者 / owner / 子模块。未给则从描述与仓库推断,并在文首标注假设 |
57
65
 
58
- 信息不足时:先追问 3~5 个高信号问题;用户未补全时可**标注假设**并说明影响。
66
+ 信息不足时:先追问 3~5 个高信号问题(所有权、是否有架构演进、有无真实指标);用户未补全时可**标注假设**并说明影响。
59
67
 
60
68
  可选脚本:`python3 scripts/check_inputs.py`;带简称生成提示:`python3 scripts/build_prompt.py --short-name '简称' -d '……'`。
61
69
 
62
70
  ---
63
71
 
72
+ ## 面经生成顺序(写死,禁止颠倒)
73
+
74
+ 1. **定简历海拔**:架构演进 > 系统机制 > 交互细节。交互细节默认进追问,不进一级 bullet。
75
+ 2. **项目简介**(1~2 句)。
76
+ 3. **简历 bullet**(4~6 条一级,可嵌套二级;先抽取架构支柱,再按 few-shot 成稿;四槽见 `references/rules/oral-and-resume-patterns.md`)。
77
+ 4. **简历 → 面试展开**表:每条一级 bullet 对应一道主问。
78
+ 5. **主问 + 2 追问 + 口播**(可另加 2~4 道简介级通用题;主问合计 8~12)。
79
+ 6. **源码证据索引**。
80
+
81
+ 禁止:先按测试文件 / 目录扫出十几道源码题,再把题压缩成「接入 / 开发」bullet。禁止把导学「重点亮点」原样当成简历。
82
+
83
+ ---
84
+
64
85
  ## 硬性交付:工作区根目录两个文件
65
86
 
66
87
  你必须使用**写入工具**在**打开的工作区根目录**(repository root)创建(或覆盖更新):
@@ -77,7 +98,9 @@ metadata:
77
98
 
78
99
  ---
79
100
 
80
- ## 面经"内部名词"硬约束(生成面经前先读,逐题自检)
101
+ ## 面经"内部名词"硬约束(生成口播前先读,逐题自检)
102
+
103
+ **适用范围:口播正文。** 简历简介与 bullet 的名词策略见 [oral-and-resume-patterns.md](references/rules/oral-and-resume-patterns.md):允许外部可检索的范式名;禁止私有函数、路径、枚举。不要用本节黑名单把简历支柱剥成「对接了某某接口」。
81
104
 
82
105
  面经读者是**外部面试官**(不在你团队、不熟悉你项目)。以下**七类名词**属于"内部私名 / 团队黑话",一律禁止在口播正文里直接堆叠,必须先翻译成通用技术抽象。约束按**形态**判定,不锁死到任何具体项目。
83
106
 
@@ -95,7 +118,7 @@ metadata:
95
118
 
96
119
  ### 白名单(通用工程语言,鼓励使用)
97
120
 
98
- React / Vue / TypeScript / SSR / CSR / Hydration / Streaming SSR / `<Suspense>` / Service Worker / Web Worker / Prefetch / Preload / Fallback / Error Boundary / State Machine / Reducer / Selector / Immutable Update / Single Source of Truth / JSBridge(泛称)/ Feature Toggle / A/B Testing / CDN / Cache Invalidation / Idempotency / Race Condition / Timeout / Circuit Breaker / Rate Limiting / Graceful Degradation / Observability / SLO / SLI / P95 Latency / FMP / CLS / Message Queue / Eventual Consistency / Transaction / Sharding。
121
+ React / Vue / TypeScript / SSR / CSR / Hydration / Streaming SSR / `<Suspense>` / Service Worker / Web Worker / Prefetch / Preload / Fallback / Error Boundary / State Machine / Reducer / Selector / Immutable Update / Single Source of Truth / JSBridge(泛称)/ Feature Toggle / A/B Testing / CDN / Cache Invalidation / Idempotency / Race Condition / Timeout / Circuit Breaker / Rate Limiting / Graceful Degradation / Observability / SLO / SLI / P95 Latency / FMP / CLS / Message Queue / Eventual Consistency / Transaction / Sharding。以及**当前项目领域内、外部可检索**的范式名(不要因为不在本列表就从简历上剥掉)。
99
122
 
100
123
  ### 翻译原则(必用)
101
124
 
@@ -118,14 +141,14 @@ React / Vue / TypeScript / SSR / CSR / Hydration / Streaming SSR / `<Suspense>`
118
141
 
119
142
  ### 抽象层级样例(默认目标 = 样例风格 B)
120
143
 
121
- - 见 `references/oral-style-samples.md`,内含**前端**与**后端**两份完整口播样例(含 STAR + 追问)+ 反例(私名堆叠型)。
144
+ - 见 `references/examples/oral-style-samples.md`,内含**前端**与**后端**两份完整口播样例(含 STAR + 追问)+ 反例(私名堆叠型)+ **题干正反例**(简历展开型 vs 源码巡检型)。
122
145
  - 生成面经时**每一道题的口播都要对齐样例风格 B 的抽象层级**:通用工程语言为主 + 极少量内部私名兜底证据。
123
- - 反例(样例中的"私名堆叠型")**禁止出现**在最终面经里。
146
+ - 反例(样例中的"私名堆叠型"口播、"源码巡检型"题干)**禁止出现**在最终面经里。
124
147
 
125
148
  ### 证据下沉
126
149
 
127
150
  - 所有具体函数名、文件路径、私有打点事件名、私有容器名统一收敛到面经文末的「**源码证据索引**」表格。
128
- - 面经正文(每题口播)只做通用抽象叙述;索引表用于候选人自己复盘、以及被追问细节时的"证据钩子"。
151
+ - 简历 bullet 可保留业界可检索名与设计约束数字;口播只做通用抽象叙述;索引表用于候选人自己复盘、以及被追问细节时的"证据钩子"。
129
152
 
130
153
  ---
131
154
 
@@ -160,29 +183,33 @@ React / Vue / TypeScript / SSR / CSR / Hydration / Streaming SSR / `<Suspense>`
160
183
 
161
184
  **已删除**:不再输出「必备基础(❌/✅ 代码对比)」。
162
185
 
163
- **导学 vs 面经的名词策略**:导学是"自己看的学习地图",允许包含具体文件路径、函数名、字段名作为源码证据索引;**面经**是"讲给外部面试官听的口播",必须遵守上文的"内部名词硬约束"。两者的抽象层级要求不同,不要混用。
186
+ **导学 vs 面经的名词与海拔策略**:导学是"自己看的学习地图",允许包含具体文件路径、函数名、字段名作为源码证据索引,也可以偏实现细节。**面经简历是给外部面试官的支柱**,必须遵守四槽公式与海拔(架构 > 机制 > 细节),**禁止把导学亮点原样写成简历 bullet**。口播遵守上文的"内部名词硬约束"。
164
187
 
165
188
  ---
166
189
 
167
190
  ## `面经-{简称}.md` 结构(顺序固定)
168
191
 
169
192
  1. **项目简介(简历可用,1~2 句)**
170
- 说清楚「做什么 + 关键技术/形态 + 关键能力」,参考 [口播与简历抽象](references/oral-and-resume-patterns.md),可直接用于简历项目描述。**不得堆叠内部私名**。
193
+ 说清楚「做什么 + 关键技术/形态 + 关键能力」,参考 [口播与简历抽象](references/rules/oral-and-resume-patterns.md),可直接用于简历项目描述。**不得堆叠内部私名**;业界可检索的架构名应当保留。
194
+
195
+ 2. **简历 bullet(4~6 条一级,允许二级嵌套)**
196
+ 先从架构演进、核心失败模式和系统机制中抽取支柱,再对照 `references/examples/bullet-few-shots.md` 的正例、反例和改写对照成稿。每条一级必须以 `**通用支柱名:**` 开头,并具备四槽:`痛点或演进` + `机制(业界可检索名)` + `硬约束或数字` + `结果(架构效果或真实指标;无线上数据才(待测))`;至少保证「问题或演进 + 机制 + 结果」。支柱名必须是面试官脱离仓库也能理解的架构/工程能力,不能使用私有类名、函数名、路径、事件名或业务黑话。结果必须紧跟机制,禁止用“提升性能/提高稳定性/优化体验”等空泛句代替。完整配方、动词按职责、反例工单型,见 `references/rules/oral-and-resume-patterns.md`。核心作者可用「主导 / 把 X 从 Y 收到 Z」;实习/参与者用「接入 / 新增 / 主 O 某子模块」。交互细节(单控件、单协议字段、单文件读写)不进一级。禁止复制 few-shot 或优秀简历样例中的项目名、数字、领域名词和指标。
171
197
 
172
- 2. **简历 bullet(4~6 条)**
173
- `动作 + 技术/约束 + 结果`;无数据处可用(待测)并避免空话。**动词避免"搭建/建立/设计"这类过度声张的表达**(除非确实是主 O 从 0 到 1),实习/参与者应使用"接入/新增/开发/主 O 某子模块"等更准确的动词。
198
+ 3. **简历 → 面试展开(必填表)**
199
+ 列:简历一级 bullet 短标题 / 面试官主问 / 对应题号。每一道主问(简介级通用题除外)必须能在本表找到对应支柱。
174
200
 
175
- 3. **面试问题(15~25 个主问题,按频率从高到低)**
176
- 正文重心放在面试题口播;按主题分组或统一编号均可,建议 3~6 个主题,每个主题至少:**1 主问 + 2 追问**。
177
- 计数口径:**15~25 仅统计主问题数量**,追问不计入该总数。
201
+ 4. **面试问题(按简历支柱展开,主问合计 8~12)**
202
+ 正文重心放在面试题口播。每个一级 bullet:**1 主问 + 2 追问**;可另加 2~4 道简介级通用题。
203
+ 计数口径:**8~12 仅统计主问题数量**,追问不计入该总数。
204
+ - **题干**:面试官只看过简介 + bullet。禁止文件路径、私有函数名、issue 号、内部开关。对齐 `oral-style-samples.md` 的「简历展开型」;「源码巡检型」题干禁止出现。
178
205
  - **口播版**:**第一人称**;**主问题口播 ≥150 汉字**;**每个追问口播 ≥150 汉字**;须覆盖完整 STAR(情境—任务—行动—结果),采用「场景(现象)→ 归因 → 动作(可分点)→ 结果/兜底」叙述,关键术语可 **中英括号** 对照。
179
- - **抽象层级**:对齐 `references/oral-style-samples.md` 中的"样例风格 B"(通用工程语言为主 + 极少量内部名兜底证据)。反例(私名堆叠型)禁止出现。
206
+ - **抽象层级**:对齐 `references/examples/oral-style-samples.md` 中的"样例风格 B"(通用工程语言为主 + 极少量内部名兜底证据)。反例(私名堆叠型)禁止出现。
180
207
  - **内部名词密度**:遵守上文"内部名词硬约束"的预算(主问 ≤ 2 次、追问 ≤ 1 次),每次出现必须紧跟通用抽象翻译。
181
208
  - 若需要解释代码实现,优先写「机制 + 简化伪代码/数据流」:例如 `Worker 预取 → Store 消费 → Hook 聚合 → Page 渲染`,而不是逐行描述某个组件内部函数。具体组件名、函数名、文件路径统一放到「源码证据索引」或括号里轻量带过。
182
209
  - 禁止仅用短语式 bullet 代替口播正文。
183
210
  - 不单独输出「亮点拆解」章节,避免与导学内容重复。
184
211
 
185
- 4. **源码证据索引(必填)**
212
+ 5. **源码证据索引(必填)**
186
213
  面经文末**唯一允许集中出现内部私名的位置**。表格列:主题 / 关键路径与内部符号 / 对应正文位置(Q1、追问2 等)。用于候选人被追问细节时的"证据钩子",正文本身仍以通用抽象为主。
187
214
 
188
215
  ---
@@ -193,11 +220,18 @@ React / Vue / TypeScript / SSR / CSR / Hydration / Streaming SSR / `<Suspense>`
193
220
  - [ ] 导学含「重点亮点与学习顺序」+「推荐阅读」且含 **通用技术点** 与 **相对路径** 列
194
221
  - [ ] 导学含「自学提醒」固定短段落(看不懂继续问 AI,skill 不做逐行讲解)
195
222
  - [ ] 面经「项目简介」为 1~2 句简历向描述,且未堆叠内部私名
223
+ - [ ] 写 bullet 前已对照 `references/excellent-resumes/` 至少一份金样;每条一级 bullet 四槽齐全(痛点或演进 / 机制 / 约束或数字 / 结果)
224
+ - [ ] 写 bullet 前已对照 `references/examples/bullet-few-shots.md`;每条先完成支柱事实归档,再按正例/反例/改写对照成稿
225
+ - [ ] 简历一级 bullet **不是**导学亮点的原样粘贴,也不是「接入/开发 + 交互细节 +(待测)」工单型
226
+ - [ ] 每条一级 bullet 以 `**通用支柱名:**` 开头;支柱名不是私有类名、函数名、路径、事件名或业务黑话
227
+ - [ ] 简历一级 bullet 每条只表达一个支柱,至少具备「问题或演进 + 机制 + 结果」;没有真实证据时未编造数字
228
+ - [ ] 含「简历 → 面试展开」表;每道主问(简介级通用题除外)能回指一条一级 bullet
229
+ - [ ] 主问题干为简历展开型:无文件路径、无私有函数名、无 issue 号、无内部开关;未出现源码巡检型反例
196
230
  - [ ] 面经每道**主问口播** ≥ 150 字,黑名单内部名词密度 **≤ 2 次**,且每次出现紧跟通用抽象翻译
197
231
  - [ ] 面经每道**追问口播** ≥ 150 字,黑名单内部名词 **≤ 1 次**
198
- - [ ] 面经每题的抽象层级对齐 `references/oral-style-samples.md` 的"样例风格 B",未出现"私名堆叠型"反例特征
232
+ - [ ] 面经每题的抽象层级对齐 `references/examples/oral-style-samples.md` 的"样例风格 B",未出现"私名堆叠型"反例特征
199
233
  - [ ] 面经不含团队内部业务黑话(3~5 字中文代号 / 产品俗称),或已改写为外部可懂表达
200
- - [ ] 面试题数量 15~25;按主题组织,每主题至少 1 主问 + 2 追问
234
+ - [ ] 主问数量 8~12;每个一级 bullet 至少 1 主问 + 2 追问
201
235
  - [ ] 面经含**「源码证据索引」**表格,集中收纳内部私名与对应主题
202
236
  - [ ] 面经不含「亮点拆解」独立章节
203
237
  - [ ] (建议)导学可含「量化与验证(含待测)」并说明怎么测;面经不强制该章节
@@ -0,0 +1,100 @@
1
+ # 简历 Bullet Few-shot(领域中立)
2
+
3
+ 本文件用于约束简历 bullet 的**形态**,不提供可复制的项目素材。生成时只学习「问题/演进 → 动作 → 机制 → 约束 → 结果」的组织方式;禁止复制本文件中的项目名、数字、技术名词组合或业务场景。
4
+
5
+ ## 使用规则
6
+
7
+ 生成顺序固定为:
8
+
9
+ 1. 从项目事实中抽取 4~6 个候选支柱;
10
+ 2. 为每个支柱补齐「核心矛盾、我的动作、机制、约束、结果、证据」;
11
+ 3. 对照下方正例的结构写一级 bullet;
12
+ 4. 用反例清单逐条重写;
13
+ 5. 检查每条是否能自然导出一个「为什么这样设计 / 如何权衡 / 如何验证」的面试主问。
14
+
15
+ few-shot 只用于对齐表达,不允许替代仓库证据。项目没有真实指标时,写可由代码验证的架构结果,并把尚未测量的线上收益标为「待测」或「需验证」;不得为了模仿正例补造数字。
16
+
17
+ ## 正例:分层机制
18
+
19
+ **项目事实(抽象)**
20
+
21
+ - 原来的处理逻辑散落在多个入口,新增场景需要重复修改主流程;
22
+ - 候选人负责统一异常处理,并参与了主链路改造;
23
+ - 代码中存在分类处理、有限重试和降级路径。
24
+
25
+ **合格 bullet**
26
+
27
+ > **分层容错:** 针对异常处理逻辑散落、改动容易波及主流程的问题,将错误处理收敛为分层容错机制:按错误类型区分有限重试、降级与快速失败,并统一输出可观测结果,降低新增场景对主链路的改动面;线上收益需通过基线对比验证。
28
+
29
+ **为什么合格**
30
+
31
+ - 先说核心矛盾,再说负责的改造;
32
+ - 机制不是技术名词罗列,而是说明了如何工作;
33
+ - 结果与机制存在因果关系;
34
+ - 没有把不可证明的收益写成事实。
35
+
36
+ ## 正例:架构演进
37
+
38
+ **项目事实(抽象)**
39
+
40
+ - 旧方案是固定步骤,新增能力需要修改多个节点;
41
+ - 候选人主导了从固定流程到可扩展编排的改造;
42
+ - 新方案通过统一接口接入不同实现,保留了边界约束。
43
+
44
+ **合格 bullet**
45
+
46
+ > **可扩展编排:** 主导将固定步骤的处理流程改造成可扩展的编排结构:抽象统一能力接口,将差异化实现下沉到独立扩展点,并保留输入校验、超时和失败隔离边界,使新增实现主要通过扩展点接入而无需改动核心调度逻辑。
47
+
48
+ **为什么合格**
49
+
50
+ - 用「旧方案 → 新方案」构成清晰演进;
51
+ - 说明了抽象、扩展点和核心边界;
52
+ - 结果是可验证的架构效果,而非泛泛的“提升效率”;
53
+ - 没有把具体文件、函数名写进一级 bullet。
54
+
55
+ ## 反例:功能工单型
56
+
57
+ ```text
58
+ - 接入列表分页和筛选功能,优化加载体验(待测)。
59
+ - 开发错误弹窗,处理接口异常。
60
+ - 增加缓存和重试逻辑,提高接口稳定性。
61
+ ```
62
+
63
+ **失败原因**
64
+
65
+ - 没有说明原问题或演进背景;
66
+ - “接入 / 开发 / 增加”没有交代个人动作的边界;
67
+ - 没有机制、约束和失败边界;
68
+ - “优化体验 / 提高稳定性”不可验证;
69
+ - 内容停留在局部功能,无法支撑架构层面的追问。
70
+
71
+ ## 改写对照:从实现动作到工程支柱
72
+
73
+ **原始描述**
74
+
75
+ > 接入缓存和重试,优化接口请求。
76
+
77
+ **合格改写**
78
+
79
+ > **请求可靠性治理:** 针对下游接口抖动导致的重复请求和延迟放大问题,引入缓存、超时与有限重试机制:仅对幂等请求重试,并设置最大次数和退避边界,避免故障期间形成重试风暴;非幂等请求走快速失败或降级路径,具体延迟收益需通过基线对比验证。
80
+
81
+ **改写动作**
82
+
83
+ 1. 把“优化请求”还原成可追问的失败模式;
84
+ 2. 把技术名词改写成机制和适用边界;
85
+ 3. 补上重试次数、退避、幂等性等约束;
86
+ 4. 将没有证据的效果改为验证计划,而不是编造指标。
87
+
88
+ ## 生成后硬检查
89
+
90
+ - [ ] 每条一级 bullet 以 `**通用支柱名:**` 开头;支柱名是面试官可理解的架构/工程能力,不是私有类名或函数名;
91
+ - [ ] 每条一级 bullet 只表达一个支柱,不把多个功能并列成清单;
92
+ - [ ] 每条至少有「问题或演进 + 机制 + 结果」;关键支柱尽量补充约束或数字;
93
+ - [ ] “结果”紧跟机制,能回答“采用它之后系统发生了什么变化”;
94
+ - [ ] 没有指标时写架构结果,不能用「提升性能 / 提高稳定性 / 优化体验」代替结果;
95
+ - [ ] 真实指标必须来自用户材料、仓库或明确的测量结果;
96
+ - [ ] 私有函数、文件路径、内部枚举和业务黑话只进入源码证据索引;
97
+ - [ ] `RunManager`、`Stream Bridge`、`execution id` 等项目实现名不能直接充当支柱名;需要时改写为“运行管理”“流式事件桥接”“服务端运行标识”等通用表达;
98
+ - [ ] 职责动词与个人参与范围一致,不把局部贡献扩写成 owner;
99
+ - [ ] 每条都能导出一个关于设计动机、权衡、边界或验证方式的主问;
100
+ - [ ] 没有复制优秀简历样例的项目名、数字、领域名词或指标。
@@ -53,7 +53,26 @@ Redis 是这条链路的**关键依赖**,单点挂掉必须有兜底,不能让
53
53
 
54
54
  ---
55
55
 
56
+ ## 面试官题干:简历展开型 vs 源码巡检型
57
+
58
+ 题干必须像面试官**只看过简历**在问,不能像 Code Review 在问。口播可以讲机制;题干不能出现私有函数、路径、issue 号、内部开关。完整契约见 [oral-and-resume-patterns.md](../rules/oral-and-resume-patterns.md)。下面沿用**本文样例一**的 SSR 场景,便于前后对照。
59
+
60
+ **正例(简历展开型)**:
61
+
62
+ > 为什么 SSR 失败要降级到 CSR,而不是服务端重试到成功?
63
+
64
+ 对应简历支柱「Streaming SSR + 失败降级」。追问可以问「契约校验失败为什么宁可白屏降级也不渲染脏数据」,仍然不点内部函数名。
65
+
66
+ **反例(源码巡检型,禁止当主问题干)**:
67
+
68
+ > `ssr.mode` 为什么不能写成 `stream` 以外的值?`homepageAssert` 失败为什么抛那个错?
69
+
70
+ 失败原因:只有读过实现的人才问得出;简历上不会出现这些符号。应改写成正例那种权衡题。若该问题回指不到任何一条一级 bullet,就不要单独成主问。
71
+
72
+ ---
73
+
56
74
  ## 使用方式
57
75
 
58
76
  - 生成面经每一道主问/追问的口播时,先写通用抽象叙述,再决定是否需要 1~2 个内部名做证据;不要反过来"从私名堆到抽象"。
77
+ - 主问题干先对照本节「简历展开型」;像反例那样点内部 API 的 → 重写题干,不要靠口播把错题圆回来。
59
78
  - 生成完成后,拿本文件的**判定标准**做自检:密度超标、翻译缺失、堆叠反例特征命中三项中任何一项 → 该题重写。
@@ -0,0 +1,14 @@
1
+ # 优秀简历样例库(生成前对照)
2
+
3
+ **分工**:可移植规则在 [口播与简历抽象](../rules/oral-and-resume-patterns.md);本目录只放**项目级金样**。写简介和简历 bullet 前至少读 1 份金样的「点评」,OCR 正文用来看密度和嵌套,不是填空模板。
4
+
5
+ | 文件 | 学什么(结构) | 不要学什么(素材) |
6
+ |------|----------------|-------------------|
7
+ | [deer-flow-harness.md](deer-flow-harness.md) | 版本演进当骨架、嵌套支柱、四槽、简历可读的追问钩子 | 把该项目的产品名、层名、并发/超时数字抄到无关仓库 |
8
+ | [ai4se-agent-infra.md](ai4se-agent-infra.md) | 先背景与目标、给失败模式起能问出口的名字、流水线当交付物、指标跟在机制后面 | 编造百分比或评测集名称;把内部脚手架名单当自己的履历 |
9
+
10
+ ## 加载规则
11
+
12
+ - 只复用点评里的**结构**;禁止把样例里的项目名、仓库名、内部层名、论文名、指标写进用户项目。
13
+ - 求职方向、岗位标签不改变 [海拔规则](../rules/oral-and-resume-patterns.md);金样里的领域词不能当成「所有项目都必须写的支柱」。
14
+ - 新增金样时:OCR 与点评放本目录;**不要**把新项目的专有名词写回 `rules/oral-and-resume-patterns.md`。
@@ -0,0 +1,62 @@
1
+ # 金样:AI4SE Agent 轨迹合成与评测(图 2 OCR)
2
+
3
+ 来源:用户提供的优秀简历截图(抖音 AI 基建 · AI4SE)。本 skill **未**用该项目跑过生成;收录是为了第二套结构:背景与目标 → 职责 → 机制 → 指标。禁止把本页指标、脚手架名单、token 阈值抄到其他项目。
4
+
5
+ ---
6
+
7
+ ## OCR 正文
8
+
9
+ **抖音 AI 基建 - AI4SE 基座算法 & Infra** · 2025.12 – 2026.4
10
+
11
+ ### AgentScaling for SFT & RL | MultiModel Relay + Multi-Scaffold Diverse Trajectory Synthesis Pipeline
12
+
13
+ **背景与目标**
14
+
15
+ - 单模型轨迹风格容易过拟合。借鉴 Mix Diverse GPTs,引入多种 scaffold 提供不同风格的轨迹;目标是把高质量、多样化轨迹规模化合成,供 SFT 使用。
16
+ - 针对困难题上 Claude Opus 4.6 连续失败 3 次以上的情况,用 relay 与定位策略提高通过率、降低重复推理成本。
17
+
18
+ **我的职责**(项目 owner,0 到 1 设计落地;CLI:`relay run` → `export`)
19
+
20
+ - **多 scaffold 统一适配:** 为 10+ scaffold(codex、claude_code、cline 等)做统一 Agent 接口。新 scaffold 只需实现 `run` / `get_answer`。
21
+ - **Relay run 执行引擎:** 同一 Docker 容器内多 LLM 顺序接力,共享环境状态。交接分三阶段:规则压缩历史(约 12k 结构化文本)→ LLM 以 gold patch 作静默顾问生成 RFC(review)→ 按 Plan A/B/C 裁剪对话作为下一模型输入。可选每轮 Test-in-Loop:成功则提前退出,失败则把失败报告注入下一模型。复现 SWE-Replay:归档历史轨迹、从中间步分叉、用 `git diff` 恢复现场再试。
22
+ - **效果:** SWE-Bench 系列困难题通过率提升约 25%+;单任务推理成本(API 与耗时)下降约 30%+;覆盖 10+ seed 风格。
23
+ - **上下文压缩 + Checkpoint 续跑:** 超过约 180k tokens 触发 Micro compact;超过约 250k 走 LLM fallback。每轮落 checkpoint,中断后可从上一模型状态续跑。
24
+
25
+ ### Agent Tracer Evaluation for SFT & RL | Trajectory Diagnosis + Rubric Eval and Wash Pipeline
26
+
27
+ **背景与目标**
28
+
29
+ 不同模型在 MultiSWEBench 上完成率接近,但 agentic 能力(规划、工具效率、错误恢复、补丁质量)差异大。目标:用 Rubric 打分并过滤高质量轨迹片段,供 SFT / RL 训练。
30
+
31
+ **我的职责**(项目 owner,0 到 1 设计;CLI:`evaluate run` → `wash` → `export`)
32
+
33
+ - **LLM-as-Judge 评测引擎:** 按检查类型分批,减少 API 调用;能用规则判定的不走 LLM;支持多模型投票;429 自动退避重试,并限制并发与请求频率。
34
+ - **Failure Onset 定位:** 识别 Evidence-to-Action Gap(已经定位到证据,却转不成正确动作)。逐步打分找到第一次错误决策,丢掉其后的连锁失败,只保留此前的高质量决策段。
35
+ - **轨迹压缩:** 按内容类型差异化裁剪;同样在约 180k / 250k tokens 触发 compact / LLM 摘要,保留首条 USER 与失败报告。
36
+ - **增量续跑 + wash / export:** 按 CSR / ISR / Score / Effective Action Ratio 等多维 Top-K 过滤。
37
+ - **效果:** Agentic Rubric 模型区分度约 35%。相对未清洗基线,高质量决策段占比明显上升,SFT / RL 的通过率与补丁质量更好。
38
+
39
+ ### SWE 系列 Benchmark 评测服务改造 | 接入字节云 AIPaaS 容器平台
40
+
41
+ **我的职责**(项目 owner)
42
+
43
+ 把分散的本地评测迁到 AIPaaS 容器平台统一入口。链路:spec 配置 → CreateSession(申请隔离容器)→ 恢复仓库 → Agent 修复 → 提交 diff → 异步轮询 → 返回结构化结果,供业务线调用。
44
+
45
+ ---
46
+
47
+ ## 点评(生成时只复用这些)
48
+
49
+ ### 可复用结构
50
+
51
+ 1. **先 Why 再 How:** 「背景与目标」点名过拟合、连续失败、完成率相近但 agentic 差,简历读者 10 秒知道你在解决什么行业问题。
52
+ 2. **所有权 + 交付物:** owner、0 到 1、CLI 工作流(`relay run` → `export`)说明这是一条可运行的系统,不是一组脚本。
53
+ 3. **给失败模式起能问出口的名字:** Evidence-to-Action Gap、Failure Onset。面试官会问「怎么定义、怎么定位、切掉连锁失败会不会误杀」。
54
+ 4. **机制带阶段数字:** 三阶段交接、约 12k、180k / 250k,数字是设计约束,不是空「待测」。
55
+ 5. **指标跟在机制后面:** 25%+ / 30%+ / 35% 出现在已经讲清怎么做之后。用户项目没有数就写架构结果(统一接口、可续跑、推理代码零改),禁止编百分比。
56
+
57
+ ### 面试官只看简历会问什么(正例题干)
58
+
59
+ - 多 scaffold 统一接口,怎么保证轨迹还能保持风格差异、而不是被接口抹平?
60
+ - 接力交接为什么是「规则压缩 → RFC → Plan A/B/C」,而不是直接把上一模型对话原样喂给下一个?
61
+ - Evidence-to-Action Gap 怎么操作化?第一次错误决策怎么避免误标?
62
+ - 180k / 250k 两个阈值各自挡住什么失败?压缩丢的是什么、必须保住什么?
@@ -0,0 +1,64 @@
1
+ # 金样:DeerFlow Agent Harness(图 1 OCR)
2
+
3
+ 来源:用户提供的优秀简历截图(开源项目 `github.com/bytedance/deer-flow`)。下文是按截图整理的全文,供对照结构,**禁止把本页的 star 数、层名、超时数字写进其他项目**。
4
+
5
+ ---
6
+
7
+ ## OCR 正文
8
+
9
+ **github.com/bytedance/deer-flow** · 76k stars · 10.3k forks · GitHub Trending #1 Repository Of The Day
10
+
11
+ ### 项目简介
12
+
13
+ 字节跳动排名第一的开源 Long-Horizon Agent Harness 项目,能做研究、编码与创作;内置 AIOSandBox 执行环境、可插拔 Skill 系统、跨会话长期记忆、动态 Sub-agent 调度与系统性 Context Engineering,可处理多层 long-horizon 任务。
14
+
15
+ ### 我的职责
16
+
17
+ 作为项目 owner、核心作者之一,主导从 1.0 到 2.0 的架构升级与迭代。
18
+
19
+ - **1.0(Multi-Agent + ReAct-style Sub-Agent)**
20
+ - 工作流:Coordinator(意图识别)→ Planner → Research Team(Researcher / Coder 支持 MCP 动态扩展外部工具)→ Reporter(汇总上下文生成最终报告)。Prompt 由 OpenAI Meta Prompt 生成。
21
+
22
+ - **2.0(Agent Teams Harness + Middleware Chain + Skill System + Context Engineering)**
23
+ - **Agent Teams Harness:** 相比 1.0 固定 5 节点流水线,2.0 改为单一 Lead Agent 统一决策。`system_prompt` 动态写入——按当前启用的 Skill 列表、跨会话持久记忆、Sub-agent 并发规则组装。Lead Agent 通过 `task` 工具触发 SubagentExecutor 启动独立 Agent 实例。调度与执行分离为双线程池,最大 3 并发 / 900s 单任务超时。Sub-agent 继承父线程目录 + 复用父沙箱,实时流式步骤到前端,完成后向 Lead Agent 返回压缩摘要。
24
+ - **Middleware Chain:** 1.0 中上下文压缩 / 沙箱 / 记忆逻辑散落,改一处要改很多。2.0 抽成 11 层有序 pipeline;增改能力只动对应层,Agent 推理代码零改动。(顺序:ThreadData → Uploads → Sandbox → DanglingToolCall → Summarization → Todo → Title → Memory → ViewImage → SubagentLimit → Clarification)
25
+ - **Skill System:** 每个 Skill 是含 `SKILL.md` 的目录。`system_prompt` 只注入索引;Agent 按需通过 `read_file` 渐进加载,避免全量注入导致 token 爆炸。支持自定义 skill,在 `custom/` 下加目录即可。
26
+ - **Context Engineering:**
27
+ - **Write:** 中间结果写入文件系统;每轮把索引 / 规则注入 `system_prompt`
28
+ - **Select:** 按 token 预算从 `memory.json` 剪枝注入;Skills 按需读全文
29
+ - **Compress:** 超限时用轻量 LLM 压缩历史 + 异步抽取持久记忆
30
+ - **Isolate:** Sub-agent 只看到任务描述;结果摘要回传;沙箱按 `thread_id` 隔离
31
+
32
+ ---
33
+
34
+ ## 点评(生成时只复用这些,不复用上文专有名词当素材)
35
+
36
+ ### 可复用结构
37
+
38
+ 1. **简介先定形态**:产品是什么(Long-Horizon Agent Harness)+ 能力清单(沙箱 / Skill / 长记忆 / 子 Agent / 上下文工程)。有真实影响力再写 star / Trending;没有就省略,禁止编。
39
+ 2. **职责一句定海拔**:owner / 核心作者 / 版本演进,而不是功能清单的第一句。
40
+ 3. **用演进当骨架**:先 1.0(固定流水线 + 痛点隐含),再 2.0 四根支柱,而不是 6 条平行功能。
41
+ 4. **每根支柱四槽齐全**:痛点(逻辑散落、token 爆炸、固定五段不够用)→ 机制(Lead Agent、11 层中间件、索引+按需加载、Write/Select/Compress/Isolate)→ 硬约束(3 并发、900s、11 层)→ 结果(推理代码零改、避免 token 爆炸、摘要回传)。
42
+ 5. **允许嵌套**:一级 4 个支柱,二级写机制与约束;面试官扫一级就能追问二级。
43
+ 6. **业界可检索名留在简历上**:Middleware Chain、Context Engineering、MCP、token 爆炸。这些不是内部私名。
44
+
45
+ ### 面试官只看简历会问什么(正例题干)
46
+
47
+ - 1.0 固定五段流水线和 2.0 单一 Lead Agent,取舍是什么?
48
+ - 为什么压缩 / 沙箱 / 记忆要做成中间件,而不是写进 Agent 循环?
49
+ - Skill 只注入索引、按需读全文,怎么避免该用时找不到?
50
+ - 上下文工程的 Write / Select / Compress / Isolate 各自解决什么失败模式?
51
+ - 子 Agent 并发 3、超时 900s 是怎么定的?超时之后 Lead Agent 看到什么?
52
+
53
+ ### 不要写成什么样(同一仓库的一次失败生成)
54
+
55
+ 本 skill 曾把该仓写成前端工单清单(对照规则见 `oral-and-resume-patterns.md` 的「功能工单型」):
56
+
57
+ - 主 O Web 会话流式协议对接;断流重放;(重连成功率待测)
58
+ - 收敛消息时序两类竞态
59
+ - 接入子 Agent 进度卡片
60
+ - 开发人机确认卡片与协议降级
61
+ - 两级合帧 + 产物预览字节上限;(Long Task 待测)
62
+ - 接入技能斜杠、MCP 开关与能力门控
63
+
64
+ 问题不在「前端不重要」,而在**海拔错了**:交互细节可以当某条支柱的追问,不能当一级简历。导学可以教协议实现;简历应先讲本金样正文里的调度 / 中间件 / Skill / 上下文工程。
@@ -0,0 +1,140 @@
1
+ # 口播叙述与简历(抽象模板)
2
+
3
+ 本文件是**可移植规则**,适用于任意项目 / 岗位。写简历 bullet 前再打开 [excellent-resumes/](../excellent-resumes/README.md),那里才放项目级金样;**不要**把金样里的产品名、层名、数字抄进用户项目。生成 bullet 时同时对照领域中立的 [bullet few-shot](../examples/bullet-few-shots.md),只学习结构,不复制素材。
4
+
5
+ ## 口播长答(工程向)推荐结构
6
+
7
+ 来自典型高质量回答的抽象,**不固定标题名**,但信息块应齐全,便于第一人称口述 ≥150 字。
8
+
9
+ 1. **场景(现象)**:线上/联调/上线初期的具体现象;可带比例、范围、如何发现(DevTools、日志、监控)。术语可加英文(如 `option`、`JSON.parse`)。
10
+ 2. **归因(根因)**:为何会发生——错把不确定输出当稳定 API、缺防御层、契约不清等;一句话点出**本质**。
11
+ 3. **动作(方案)**:分层写清:我先……再……最后……;可用编号列表(容错提取 → Schema 校验 → sanitize → 边界兜底);每层说**手段 + 目的**。
12
+ 4. **结果与兜底**:指标或(待测);若仍有异常路径,写降级(如 Error Boundary)与观测。
13
+
14
+ 口播语气:**面经全文第一人称「我」**;导学讲解可用「你应当理解」或中性说明,但涉及「如何答面试」的示范段可用第一人称口播。
15
+
16
+ 口播正文遵守 SKILL 的内部名词密度预算。简历 bullet 的名词策略见下文「名词分层」:**不要**把口播黑名单套到一级支柱上,把外部可检索的范式名一起剥掉。
17
+
18
+ ---
19
+
20
+ ## 简历「项目简介 / 一句话」写法
21
+
22
+ 用 **1~2 句** 说清:**做什么 + 关键技术/形态 + 可选一句价值**,避免形容词堆砌。
23
+
24
+ **抽象公式**:
25
+
26
+ > 基于 {核心技术栈/范式} 的 {产品形态},用户/业务侧能 {核心操作},系统支持 {关键能力 A、B},{可选:差异点如同步/异步、端侧等}。
27
+
28
+ **示例形态(勿照抄项目名)**:
29
+
30
+ > 基于 AI 大模型的智能 BI:用户上传 Excel 后,AI 自动生成 ECharts 图表与分析结论,支持同步/异步生成与拖拽看板组合多图。
31
+
32
+ 面经文档中的 **项目概要** 必须接近此密度与信息量,可直接贴简历「项目描述」栏。有真实 star / 奖项可以写;没有就省略,禁止编造。
33
+
34
+ ---
35
+
36
+ ## 先定简历海拔(写 bullet 的第一步)
37
+
38
+ 优先级:**架构演进 > 系统机制 > 交互 / 实现细节**。
39
+
40
+ | 海拔 | 形态(按形态识别,不锁项目) | 默认去向 |
41
+ |------|------------------------------|----------|
42
+ | 架构演进 | 旧形态 → 新形态:固定流程变为可编排;逻辑散落变为可扩展分层 | 一级支柱 |
43
+ | 系统机制 | 状态/一致性、隔离、预算、降级、扩展点、契约 | 一级,或该支柱的二级 |
44
+ | 交互 / 实现细节 | 某一控件、某一协议字段、某一文件的读写、某一布局约束 | **追问**,不进一级 bullet |
45
+
46
+ - **求职方向只调口播侧重点,不改变简历海拔。** 不要把系统机制降成该方向上的功能清单(前端写成页面交互列表、后端写成 CRUD 列表、AI 写成调了某个模型)。候选人先写自己实际碰过的架构支柱,再用口播讲自己在链路上的落点。
47
+ - 用户明确只做子模块时:一级 bullet 仍写**该模块**的机制与约束,文首标注假设;不要把局部改动扩成全仓 owner,也不要把全仓边角堆成多条工单。
48
+ - **禁止**把导学「重点亮点与学习顺序」原样粘成简历 bullet。导学是读代码地图,简历是面试官 30 秒能追问的支柱。
49
+
50
+ 职责动词按所有权,不要一刀切:
51
+
52
+ | 职责 | 可用动词 | 避免 |
53
+ |------|----------|------|
54
+ | 核心作者 / owner / 0 到 1 架构升级 | 主导、把 X 从 Y 收到 Z、抽出、定下约束 | 假客气写成「接入了核心分层」 |
55
+ | 实习 / 参与某子模块 | 接入、新增、开发、主 O 某子模块 | 把全仓说成自己「搭建」 |
56
+
57
+ 「避免搭建/设计」只约束**没有所有权却声张从 0 到 1**;有演进事实时,「把固定流程收成可扩展分层」是正确海拔。
58
+
59
+ ---
60
+
61
+ ## 简历 bullet 四槽公式(正例配方)
62
+
63
+ 一级 4~6 条。每条一级必须能勾选下面四槽(可写在同一句,也可用 2~4 条二级展开):
64
+
65
+ 1. **痛点或演进**:以前为什么不行(散落、不可扩展、无预算、失败不可见)。
66
+ 2. **机制**:业界可检索的结构名 + 一句话怎么做。
67
+ 3. **硬约束或数字**:层数、并发、超时、配额、SLO、接口个数。这是设计约束,不是装饰。
68
+ 4. **结果**:架构效果(主路径零改、可降级、可续跑)或真实指标。没有数就写架构结果;用(待测)只标**尚未测量的线上指标**,禁止用(待测)代替机制。
69
+
70
+ 允许嵌套:一级是支柱标题,二级补痛点 / 机制 / 约束。面试官应能只看一级列出 4~6 个追问钩子。
71
+
72
+ 压缩正例(结构示范,领域可替换;完整项目级对照见样例库):
73
+
74
+ > 把首页从整页 CSR 改为 Streaming SSR:聚合数据先做契约校验,不合法则降级 CSR,避免渲染脏数据;水合成功率单独观测。
75
+
76
+ > 把限流、幂等、库存预扣从下单主函数拆成分层:入口按用户限流 + 请求级幂等键 + 原子预扣。P95 目标明确;关键依赖不可用时软降级,靠对账兜底超卖。
77
+
78
+ 槽位填法:`把 {旧方案} 收成 {新机制}:{怎么做}。约束 {数字}。结果 {主路径/调用方看到什么}`。
79
+
80
+ ## Few-shot 生成流程与硬检查
81
+
82
+ 规则描述“必须满足什么”,few-shot 用于对齐“成稿应该长什么样”。生成时不得直接复述金样或把技术名词堆成简历风格,必须按以下顺序执行:
83
+
84
+ 1. **支柱抽取**:从项目演进、核心失败模式、系统机制和关键约束中选 4~6 个候选支柱;局部控件、单个接口和单文件改动默认下沉到追问。
85
+ 2. **事实归档**:每个支柱先记录「核心矛盾、我的动作、机制、约束、结果、证据」。没有证据的指标不进入成稿。
86
+ 3. **Few-shot 对齐**:对照 [bullet-few-shots.md](../examples/bullet-few-shots.md) 的正例、反例和改写对照,学习因果链,不复制其中的项目名、数字、领域名词或场景。
87
+ 4. **成稿**:首句交代问题/演进与职责;随后说明机制、边界和结果。每条只表达一个支柱,结果必须紧跟机制。
88
+ 5. **逐条质检**:每条至少有「问题或演进 + 机制 + 结果」;关键支柱尽量四槽齐全;能自然导出一个关于动机、权衡、边界或验证方式的主问。
89
+
90
+ 以下句式不算结果,必须改写为可验证的架构结果或测量计划:`提升性能`、`提高稳定性`、`优化体验`、`增强可维护性`、`降低成本`。真实数字只能来自用户材料、仓库或明确测量;没有数字时不要为了模仿 few-shot 编造数字。
91
+
92
+ ---
93
+
94
+ ## 反例(禁止的简历调性)
95
+
96
+ 写成下面这样就是**功能工单型**,即使每句都真实也不通过:
97
+
98
+ > - 接入某某列表刷新:处理两类竞态,成功率(待测)。
99
+ > - 开发某某确认弹窗:未知版本降级为纯文本。
100
+ > - 把渲染做成节流 / 截断,卡顿(待测)。
101
+ > - 接入某某开关与权限门控。
102
+
103
+ 失败特征(按形态识别):没有痛点或演进;海拔停在交互细节;结果用(待测)顶上;面试官无法从 bullet 问出「为什么是这种结构、约束怎么来的」。这些内容可以出现在对应支柱的**追问口播**里,不能当一级简历。
104
+
105
+ 项目级失败对照(同一仓库被写成工单清单)见 [excellent-resumes/](../excellent-resumes/README.md) 各金样文末,不要把那里的专有名词带回本文件当规则。
106
+
107
+ ---
108
+
109
+ ## 名词分层
110
+
111
+ | 位置 | 允许 | 禁止 |
112
+ |------|------|------|
113
+ | 简历简介 + 一级/二级 bullet | 外部可检索的范式名(SSR、幂等、中间件、熔断、配额、隔离……以**本项目领域**为准) | 私有函数名、文件路径、issue 号、私有枚举、打点事件名、灰度开关键 |
114
+ | 口播正文 | 通用工程语言为主;黑名单私名每题有次数预算,且必须翻译 | 私名堆叠型(见 `oral-style-samples.md`) |
115
+ | 源码证据索引 | 函数名、路径、内部符号 | (此处集中存放即可) |
116
+
117
+ 判断「业界可检索」:外部面试官用该词能搜到论文 / 框架 / 工程实践,而不是只能在本仓库 grep 到。公开 API / 标准协议可以留在简历;仓库私有函数必须下沉到索引。
118
+
119
+ ---
120
+
121
+ ## 出题契约(面试官只看过简历)
122
+
123
+ 生成顺序:**简介 → bullet →「简历 → 面试展开」表 → 主问/追问/口播 → 索引**。禁止先按测试文件扫出十几道源码题,再倒挤 bullet。
124
+
125
+ **主问必须能回指某一条一级 bullet**(简介级通用题除外,见 `star-framework.md`)。题干假设面试官手里只有简介和 bullet,没有仓库。
126
+
127
+ 允许的题干(简历可读,形态):
128
+
129
+ - 为什么用这种结构,而不是把逻辑写在主路径里?
130
+ - 预算 / 超时 / 并发是怎么定的?打满之后调用方看到什么?
131
+ - 失败时如何降级?为什么不重试到成功?
132
+
133
+ 禁止的题干(像读过代码,形态):
134
+
135
+ - 某个内部函数 / 配置键为什么必须是这个字面量?
136
+ - 某个布局或入口文件为什么不能调用某个浏览器 / 容器 API?
137
+ - 某个 SDK 私有开关为什么不能原样转发给网关?
138
+ - 某一对内部事件名为什么不能同时发送?
139
+
140
+ 题干禁则:文件路径、私有函数名、issue 号、只有读源码才知道的开关 / 枚举 / 内部协议字段。追问问权衡、失败、数字怎么来的,不要问「那个函数为什么分两套」。
@@ -0,0 +1,51 @@
1
+ # STAR、追问与口播要求
2
+
3
+ ## 口播版(面经中的答题正文)
4
+
5
+ - **第一人称**:面经文档里「主问题 / 追问」的**口播正文**一律用「我」作主语(协作题可一句内用「我们」说明边界)。
6
+ - **字数**:每一道**主问题**、每一道**追问**的口播版均 **≥150 个汉字**(或等价符号不计入时以汉字为主),且须能单独讲清**完整 STAR**(情境—任务—行动—结果),禁止只列关键词。
7
+ - **结构**:推荐「场景(现象)→ 归因(根因)→ 动作(分层方案)→ 结果/兜底/待测」;详见 [口播与简历抽象](oral-and-resume-patterns.md)。
8
+ - **术语**:关键 API、库名、协议可加英文括号,如:`JSON.parse`、`safeParse`。口播里的私有函数名仍受 SKILL 密度预算约束。
9
+ - **待测数据**:口播中涉及性能、错误率等若暂无实测,用 **(待测)** 标出;测量思路写在导学文末「量化与验证」(见 SKILL 输出契约)。
10
+
11
+ ## STAR 四要素(口播内需隐含或显式点到)
12
+
13
+ - **S**:业务与现场约束(上线初期、某环境、流量特征)。
14
+ - **T**:你的目标与可验证标准(哪怕定性)。
15
+ - **A**:你具体落地的步骤与权衡(为何不用更简单的做法)。
16
+ - **R**:结果、指标或(待测)+ 后续观测/降级。
17
+
18
+ ## 出题顺序(禁止颠倒)
19
+
20
+ 1. 已写完项目简介与 4~6 条一级简历 bullet(可嵌套)。
21
+ 2. 填「简历 → 面试展开」表:每条一级 bullet 对应 1 道主问。
22
+ 3. 再写口播。禁止先按仓库目录 / 测试文件巡检出题,再倒挤 bullet。
23
+
24
+ ## 主问题设计
25
+
26
+ - **默认来源**:该条简历支柱里最硬的权衡或失败模式(面试官只看 bullet 就会问的那个)。
27
+ - 题干必须是**简历可读**的通用问题,见 [口播与简历抽象 · 出题契约](oral-and-resume-patterns.md)。
28
+ - 禁止题干出现:文件路径、私有函数名、issue 号、只有读过代码才知道的开关 / 枚举 / 内部字段。
29
+ - 正例形态:「为什么用这种结构,而不是把逻辑写在主路径里?」
30
+ - 反例形态:「某个内部配置键 / 函数为什么必须是这个字面量?」(像读过仓库)
31
+ - 题干正反例见 [oral-style-samples.md](../examples/oral-style-samples.md)(与该文件已有的 SSR 样例对齐);完整契约见 [oral-and-resume-patterns.md](oral-and-resume-patterns.md)。
32
+
33
+ ## 数量(只统计主问,追问不计入)
34
+
35
+ - **必出**:每个一级简历 bullet → **1 主问 + 2 追问**(约 4~6 道主问)。
36
+ - **可加**:2~4 道**简介级通用题**(该领域的基础权衡:一致性、隔离、降级、评估方法)。必须能从简介或 bullet 找到钩子,不要为凑数去扫鉴权样式、包体预算、点击时序等边角。
37
+ - **合计主问 8~12**。不要为凑数把导学里的实现细节逐条改成主问。
38
+
39
+ 按主题分组时:建议 **一个一级 bullet 一个主题**;简介级通用题可单独成组或附在最相关支柱后面。
40
+
41
+ ## 追问递进(每个主问固定 2 个)
42
+
43
+ 1. **权衡与数字**:为什么是这个结构 / 这个阈值;不用更简单做法会怎样。
44
+ 2. **失败与演化**:超时、降级、下游打满、回滚、重做会改什么。
45
+
46
+ 追问仍然是面试官口吻,不要变成「那个内部函数为什么分两套」。实现细节放口播和源码证据索引。
47
+
48
+ ## 频率标注
49
+
50
+ - 题目排序:**简历一级支柱(高)> 简介级通用题(中)> 不要为频率标签去发明边角题**。
51
+ - 标签 `通用` / `前端` / `后端` / `AI`。
@@ -7,6 +7,8 @@
7
7
 
8
8
  `{简称}` 由用户在输入中给出,或由你从项目描述中提炼(2~8 个字符为宜),并在文首「已确认输入」中写明。
9
9
 
10
+ 面经必须按此顺序写完再进入下一节:简介 → 简历 bullet → 简历→面试展开表 → 面试问题 → 源码证据索引。禁止先堆 15+ 道源码题再倒挤 bullet。
11
+
10
12
  ---
11
13
 
12
14
  ## `导学-{简称}.md` 骨架
@@ -46,6 +48,8 @@
46
48
  - **可选放在本文件末尾**:列出与本项目相关的 **如何测**(性能优化场景建议写:环境、指标、工具、基线/对比注意点);无则写「本项目量化点较少,面试诚实说明」。
47
49
  ```
48
50
 
51
+ 导学亮点可以偏实现细节(方便读代码)。**不要**把本节原样粘进面经简历 bullet。
52
+
49
53
  ---
50
54
 
51
55
  ## `面经-{简称}.md` 骨架
@@ -56,13 +60,23 @@
56
60
  ## 项目简介(简历可用,1~2 句)
57
61
  > 基于……的……;用户能……;支持……(参见同目录 `oral-and-resume-patterns.md`)
58
62
 
59
- ## 简历 bullet(4~6 条)
60
- - 动作 + 技术/约束 + 结果或(待测)
63
+ ## 简历 bullet(4~6 条一级,可嵌套二级)
64
+ > 每条一级必须以 `**通用支柱名:**` 开头,并含:痛点或演进 + 机制(业界可检索名)+ 硬约束或数字 + 结果(架构效果或指标;无线上数据才待测)。
65
+ > 动词按职责海拔;交互细节不要写进一级。完整公式见 `oral-and-resume-patterns.md`。
66
+
67
+ - **支柱一:** 痛点/演进;机制与约束;架构结果或真实指标。
68
+ - (可选二级:机制 / 约束)
69
+ - **支柱二:** 痛点/演进;机制与约束;架构结果或真实指标。
70
+
71
+ ## 简历 → 面试展开
72
+ | 简历一级 bullet(短标题) | 面试官主问(只看简历能问出口) | 对应题号 |
73
+ | {支柱短标题} | {该支柱最硬的权衡,不含内部符号} | Q1 |
61
74
 
62
- ## 面试问题(按频率排序)
63
- > 正文重心放在面试题口播,不单独输出「亮点拆解」章节;建议 3~6 个主题,每主题至少 1 主问 + 2 追问。
75
+ ## 面试问题(按简历支柱展开)
76
+ > 每个一级 bullet:1 主问 + 2 追问。可另加 2~4 道简介级通用题。主问合计 8~12。
77
+ > 题干禁止文件路径、私有函数、issue 号、内部开关。不单独输出「亮点拆解」。
64
78
 
65
- ### Q1(频率:高)[标签/主题]
79
+ ### Q1(频率:高)[标签] ← 对应 bullet:……
66
80
  **面试官问题**:……
67
81
 
68
82
  **口播版(第一人称,≥150 字,完整 STAR)**
@@ -74,4 +88,6 @@
74
88
  **追问 2**:……
75
89
  **口播版(≥150 字)**:……
76
90
 
91
+ ## 源码证据索引
92
+ | 主题 | 关键路径与内部符号 | 对应正文位置 |
77
93
  ```
@@ -101,7 +101,21 @@ def build_prompt(
101
101
  [
102
102
  "## 输出要求(摘要)",
103
103
  "",
104
- "- 面经:项目简介 1~2 句(简历向);主问题 15~25;追问不计入总数;建议按 3~6 个主题组织,每主题至少 1 主问 + 2 追问。",
104
+ "- 面经:先抽取 4~6 个架构支柱,再写简介与 bullet;每条一级 bullet 必须以 `**通用支柱名:**` 开头,随后交代问题/演进和职责,再写机制、约束/边界、结果,最后填「简历 → 面试展开」表并按表出题。",
105
+ "- 面经 bullet:对照领域中立 few-shot 的正例、反例和改写对照,只学习表达结构;禁止复制样例的项目名、数字、领域名词或指标。",
106
+ "",
107
+ "## Bullet few-shot(仅学习结构,不复制素材)",
108
+ "",
109
+ "**合格**:**分层容错:** 针对异常处理逻辑散落、改动容易波及主流程的问题,将错误处理收敛为分层容错机制:按错误类型区分有限重试、降级与快速失败,并统一输出可观测结果,降低新增场景对主链路的改动面;线上收益需通过基线对比验证。",
110
+ "",
111
+ "**不合格**:接入缓存和重试,优化接口请求。",
112
+ "",
113
+ "**改写原则**:把实现动作还原成问题/演进;说明机制如何工作及其边界;结果写可验证的架构变化或真实指标,没有证据就写测量计划,不得编造数字。",
114
+ "",
115
+ "- 面经 bullet 质检:每条只表达一个支柱,至少包含「问题或演进 + 机制 + 结果」;关键支柱尽量补充约束或数字。",
116
+ "- 面经 bullet 质检:删除“提升性能/提高稳定性/优化体验”等不可验证结果;私有函数、路径、内部枚举只进入源码证据索引。",
117
+ "- 面经 bullet 质检:支柱名必须是通用架构/工程能力;`RunManager`、`Stream Bridge`、`execution id` 等项目实现名改写为通用表达或下沉到源码证据索引。",
118
+ "- 面经:每个一级 bullet 1 主问 + 2 追问;可另加 2~4 道简介级通用题;主问合计 8~12,追问不计入总数。题干须简历可读,禁止源码巡检型。",
105
119
  "- 面经:正文重心放在面试题口播,不单独输出「亮点拆解」章节。",
106
120
  "- 口播:第一人称;主问与每个追问口播均 **≥150 字**,完整 STAR(场景→归因→动作→结果/兜底)。",
107
121
  "- 导学:必须包含「重点亮点与学习顺序」和「推荐阅读」表,含 **仓库相对路径**。",
@@ -1,26 +0,0 @@
1
- # 口播叙述与简历一句话(抽象模板)
2
-
3
- ## 口播长答(工程向)推荐结构
4
-
5
- 来自典型高质量回答的抽象,**不固定标题名**,但信息块应齐全,便于第一人称口述 ≥150 字。
6
-
7
- 1. **场景(现象)**:线上/联调/上线初期的具体现象;可带比例、范围、如何发现(DevTools、日志、监控)。术语可加英文(如 `option`、`JSON.parse`)。
8
- 2. **归因(根因)**:为何会发生——错把不确定输出当稳定 API、缺防御层、契约不清等;一句话点出**本质**。
9
- 3. **动作(方案)**:分层写清:我先……再……最后……;可用编号列表(容错提取 → Schema 校验 → sanitize → 边界兜底);每层说**手段 + 目的**。
10
- 4. **结果与兜底**:指标或(待测);若仍有异常路径,写降级(如 Error Boundary)与观测。
11
-
12
- 口播语气:**面经全文第一人称「我」**;导学讲解可用「你应当理解」或中性说明,但涉及「如何答面试」的示范段可用第一人称口播。
13
-
14
- ## 简历「项目简介 / 一句话」写法
15
-
16
- 用 **1~2 句** 说清:**做什么 + 关键技术/形态 + 可选一句价值**,避免形容词堆砌。
17
-
18
- **抽象公式**:
19
-
20
- > 基于 {核心技术栈/范式} 的 {产品形态},用户/业务侧能 {核心操作},系统支持 {关键能力 A、B},{可选:差异点如同步/异步、端侧等}。
21
-
22
- **示例形态(勿照抄项目名)**:
23
-
24
- > 基于 AI 大模型的智能 BI:用户上传 Excel 后,AI 自动生成 ECharts 图表与分析结论,支持同步/异步生成与拖拽看板组合多图。
25
-
26
- 面经文档中的 **项目概要** 必须接近此密度与信息量,可直接贴简历「项目描述」栏。
@@ -1,29 +0,0 @@
1
- # STAR、追问与口播要求
2
-
3
- ## 口播版(面经中的答题正文)
4
-
5
- - **第一人称**:面经文档里「主问题 / 追问」的**口播正文**一律用「我」作主语(协作题可一句内用「我们」说明边界)。
6
- - **字数**:每一道**主问题**、每一道**追问**的口播版均 **≥150 个汉字**(或等价符号不计入时以汉字为主),且须能单独讲清**完整 STAR**(情境—任务—行动—结果),禁止只列关键词。
7
- - **结构**:推荐「场景(现象)→ 归因(根因)→ 动作(分层方案)→ 结果/兜底/待测」;详见 [口播与简历抽象](oral-and-resume-patterns.md)。
8
- - **术语**:关键 API、库名、协议可加英文括号,如:`JSON.parse`、`safeParse`。
9
- - **待测数据**:口播中涉及性能、错误率等若暂无实测,用 **(待测)** 标出;在该文件末尾「量化与验证」中写清如何测(见 SKILL 输出契约)。
10
-
11
- ## STAR 四要素(口播内需隐含或显式点到)
12
-
13
- - **S**:业务与现场约束(上线初期、某环境、流量特征)。
14
- - **T**:你的目标与可验证标准(哪怕定性)。
15
- - **A**:你具体落地的步骤与权衡(为何不用更简单的做法)。
16
- - **R**:结果、指标或(待测)+ 后续观测/降级。
17
-
18
- ## 主问题设计
19
-
20
- - 从**最大风险或最难权衡**切入,能自然引出架构与细节。
21
-
22
- ## 追问递进(每个亮点固定 2 个)
23
-
24
- 1. **细节**:数据结构、API、边界、错误码、一致性。
25
- 2. **失败与演化**:线上问题、回滚、债务、重做会改什么。
26
-
27
- ## 频率标注
28
-
29
- - 题目排序:**岗位核心栈 > 跨栈基础 > 拓展**;标签 `通用` / `前端` / `后端` / `AI`。