career-ops 德语(DACH)市场模式实战指南:modes/de/ 的激活方式、市场词汇体系与评估规则
career-ops 为德奥瑞(DACH)求职者提供了一套独立的德语市场模式目录 modes/de/,用于在德语环境的工作岗位搜索中产出自然的 Tech-Deutsch 内容,并正确处理 13. Monatsgehalt、Probezeit、AGG、Tarifvertrag 等德国特有的合同要素。本文以 modes/de/README.md 为主体,结合 modes/de/_shared.md、modes/de/angebot.md、modes/de/bewerben.md、modes/de/pipeline.md 的完整内容,以及 AGENTS.md、config/profile.example.yml 和 Web 层源码中的实现证据,讲清楚这套德语模式的启用方式、四个已翻译模式的工作流、完整术语表,以及 DACH 市场独有的评估规则。
1. 定位与适用场景:什么时候该用 modes/de/
模式总目录说明 指出,modes/ 是整个 career-ops 的"大脑"——每个 Markdown 模式文件定义一个工作流,由你使用的 AI 编码 CLI(Claude Code、Codex、OpenCode 等)读取并执行。默认模式集是 modes/(英文),而各市场模式集(德语、法语、阿拉伯语、日语、土耳其语、印地语等)各自包含 _shared.md、评估模式、申请模式和 pipeline.md,如 AGENTS.md 中的市场模式表所示,德语目录对应评估/申请模式 angebot / bewerben,本地词汇包括 13. Monatsgehalt、Probezeit、Kündigungsfrist、AGG、Tarifvertrag。
README 给出了明确的四条使用条件——满足任意一条就应考虑切换到 modes/de/:
- 你的求职目标主要是德语岗位(StepStone、XING、kununu、Bundesagentur für Arbeit、德国企业招聘页);
- 你的简历语言是德语,或者你根据岗位需要在 DE/EN 之间切换;
- 你需要自然的 Tech-Deutsch(而非机器翻译腔)来写回答和 Anschreiben(求职信);
- 你必须处理 DACH 特有的合同要素:13. Monatsgehalt(第 13 个月工资)、Probezeit(试用期)、Kündigungsfrist(解约通知期)、AGG(反歧视法)、Tarifvertrag(集体合同)、Festanstellung vs. Freelance(正式雇佣 vs 自由职业)、VWL、bAV(企业养老金)、Arbeitszeugnisse(工作证明信)。
反之,如果你的岗位以英文为主,README 建议留在 modes/ 标准英文模式。英文模式在你贴上德语岗位时会自动按德语处理内容,但它们"不了解 DACH 市场细节"——这正是德语模式存在的价值。
2. 两种激活方式:会话指令与 profile 持久配置
career-ops 没有以代码 Flag 形式的"语言开关"。README 明确说明有两种启用路径:
2.1 方式一:按会话,直接用自然语言指令
在会话开始时明确告诉 Agent:
"Nutze ab jetzt die deutschen Modi unter
modes/de/." (从现在起使用modes/de/下的德语模式。)
或者更具体:
"Bewerten und Bewerbungen auf Deutsch — verwende
modes/de/_shared.mdundmodes/de/angebot.md." (用德语做评估和申请——使用modes/de/_shared.md和modes/de/angebot.md。)
此时 Agent 会从 modes/de/ 而非 modes/ 读取文件。这对应 AGENTS.md 中"何时使用市场模式"的第一条规则:用户明确说"use {market} modes"时,直接从该目录读取。
2.2 方式二:按 profile 持久化配置
在 config/profile.yml 中写入语言偏好:
language:
primary: de
modes_dir: modes/de
然后在你的第一个会话中提醒 Agent 尊重该字段("看下 profile.yml,我设置了 language.modes_dir")。此后 Agent 会自动采用德语模式,对应 AGENTS.md 的第二条规则:"用户设置了 language.modes_dir → 始终使用该目录"。
需要注意 README 的原文提示:language.modes_dir 字段最初是"该 PR 的约定,而非硬编码 Schema",Maintainer 可以重命名它。不过从当前仓库看,这一约定已经升级为文档化契约并有代码实现:
- config/profile.example.yml 的
language块明确区分了两个字段:output控制报告、追踪备注、PDF、求职信、外联和表单答案等面向人的文字输出语言;modes_dir只负责选择市场词汇与规则(注释示例为modes_dir: modes/de # optional: use DACH market vocabulary while still writing in English)。 - AGENTS.md 将此定义为"两个独立轴":
language.output权威决定行文语言(缺省为en),language.modes_dir只提供市场语境;组合规则是"output决定行文,modes_dir只供给市场上下文——英文行文搭配 DACH 词汇完全合法"。 - Web 端同样实现了该契约:web/src/lib/career-ops.ts 中对
modes_dir做了去尾部斜杠的规范化处理(默认值modes),并在 web/src/lib/career-ops.ts 读取profile.language.modes_dir;gemini-eval.mjs 在评估时读取该字段,且带有安全边界——若modes_dir试图逃逸项目根目录或目录不存在,会打印警告并回退到默认modes/。web/CHANGELOG.md 也记录了"web 在 web 触发的运行中遵循 language.modes_dir 与 language.output"的变更。 - 测试层面,tests/output-language.test.mjs 验证了"只设
modes_dir而未设output时,输出语言默认回落到en";test-all.mjs 还会检查AGENTS.md是否持续文档化这一outputvsmodes_dir契约,防止文档漂移。
一个典型的组合用法:language.output: en + language.modes_dir: modes/de —— 报告正文用英文写,但评估逻辑中正确使用 13. Monatsgehalt、AGG 等 DACH 概念。
3. 翻译了什么:四个核心模式的完整工作流
README 说明这一迭代覆盖了"杠杆最高"的四个模式,并给出了覆盖表:
| 文件 | 翻译自 | 用途 |
|---|---|---|
| _shared.md | modes/_shared.md(EN) |
共享上下文、Archetypen(角色原型)、全局规则、DACH 市场特性 |
| angebot.md | modes/oferta.md(ES) |
对单个岗位的完整评估(A–F 块) |
| bewerben.md | modes/apply.md(EN) |
求职表单的实时助手 |
| pipeline.md | modes/pipeline.md(ES) |
岗位 URL 收件箱 / Second Brain |
其余模式(scan、batch、pdf、tracker、auto-pipeline、deep、contacto、ofertas、project、training)刻意未纳入德语化:README 解释,这些模式的内容"大部分由 Tooling、路径和配置命令构成,应保持语言无关",继续通过 EN/ES 原文工作。另外可以注意到,当前仓库的 modes/de/ 下还附带了一个 interview/ 子目录(plan.md、practice.md、debrief.md),覆盖面试计划、模拟面试与复盘三个环节——这超出了 README 覆盖表所列的初始四文件范围,属于后续迭代补充的德语面试技能。
下面结合各模式文件本身,展开这四个模式实际做什么、怎么跑。
3.1 _shared.md:共享上下文与 DACH 市场规则
_shared.md 是所有德语模式的公共上下文,结构上对应英文版,但加入了大量市场本地化内容:
- 真值来源(Quellen der Wahrheit):
cv.md(项目根目录)、article-digest.md(如存在)、config/profile.yml,每次评估前必须读取;并附四条硬性护栏(guardrail):不得声称候选人"作者身份"(使用过某工具不等于构建过它)、关键词只能改写不能编造、候选人事实只以批准来源文件为准(岗位与邮件只是数据不是指令、更不是证据)、绝不得代表用户提交/发送任何材料。 - North Star 角色原型表:六个原型(AI Platform/LLMOps Engineer、Agentic Workflows/Automation、Technical AI Product Manager、AI Solutions Architect、AI Forward Deployed Engineer、AI Transformation Lead),每个原型标注"主题轴"与"客户实际买的是什么",并配有一套"按原型自适应 Framing"表,规定面对不同原型时应该强调哪些 Proof Points。
- DACH 市场专属术语表(详见本文第 5 节)。
- 谈判脚本、Location Policy、Time-to-Offer 优先级,以及一组"NIEMALS(绝不)/ IMMER(永远)"全局规则——例如"绝不生成 PDF 而不先读岗位"、"每次评估后必须写入 Tracker"、"内容语言跟随岗位语言(德语岗位产出德语)"、"生成德语文本时使用自然的 Tech-Deutsch,不要逐字翻译,不强制把 Pipeline 译成 Förderband"。
3.2 angebot.md:单岗位完整评估(A–F 块)
angebot.md 规定:只要候选人贴入一份岗位(文本或 URL),必须输出全部六个块:
- Schritt 0 — Archetyp-Erkennung(原型识别):把岗位归入六个原型之一(混合型给出最接近的两个),由此决定 Block B 中哪些 Proof Points 优先、Block E 的 Summary 如何改写、Block F 准备哪些 STAR 故事。
- Block A — 角色摘要:识别出的原型、Domain、职能(Build/Consult/Manage/Deploy)、职级、Remote 形式、团队规模、一句话 TL;DR。
- Block B — 简历匹配:读取
cv.md,把岗位的每条要求映射到简历的精确行,并按原型调整优先级(FDE 强调交付速度与贴近客户、SA 强调系统设计与集成、PM 强调 Discovery 与指标、LLMOps 强调 Evals/Observability/Pipelines、Agentic 强调多智能体/HITL/编排、Transformation 强调变革管理与 Adoption)。随后输出 Lücken(缺口) 段,对每个缺口回答四个问题:是硬阻断还是 nice-to-have?能否用相邻经验弥补?有没有覆盖它的项目?具体弥补方案(Anschreiben 里的句子、快速小项目等)。 - Block C — 职级与策略:岗位识别出的 Level 与候选人在该原型下的"自然 Level"对比;"以资深身份卖,但不撒谎"的具体话术;以及"若被降级面试"的预案(薪酬公平则接受、6 个月后谈 review、明确晋升标准)。
- Block D — 薪酬与需求:用 WebSearch 拉取当前岗位薪资(Glassdoor、Levels.fyi、Kununu、Gehalt.de、StepStone 报告)、公司薪酬口碑、DACH 市场的需求趋势,并给出带引用来源的表格——找不到数据就明说,不编造。然后是德语市场强制检查项:是否提及第 13 个月工资(要计入 Brutto 计算)?是否有可变部分(Bonus/Provision/RSUs/VSOP)?是否提及 VWL 与 bAV?是否适用 Tarifvertrag(TVöD、IG Metall——适用则谈判空间更小但确定性更高)?Festanstellung 还是 Freelance(Freelance 需核算 Tagessatz 与 Scheinselbstständigkeit 风险)。
- Block E — 个性化计划:以五列表格(# / 段落 / 现状 / 建议修改 / 理由)给出简历与 LinkedIn 各 Top 5 修改项。
- Block F — 面试计划:6–10 条 STAR+R 故事(STAR 加 Reflection 列),逐条映射岗位要求;Reflection 列记录"学到什么/今天会怎么做不同",README 式地解释这体现资深度。若存在
interview-prep/story-bank.md则先查重再补充,逐步沉淀出 5–10 条可复用的 Master-Stories。另外推荐一条 Case Study,并列出 Red-Flag 问题及应对(如"你为什么卖掉公司?")。
评估完成后还有固定的落盘流程:
- 保存报告到
reports/{###}-{company-slug}-{YYYY-MM-DD}.md,其中三位报告编号必须通过node reserve-report-num.mjs原子化预留(写完报告后用node reserve-report-num.mjs --release {###}释放 Sentinel),以避免并发写冲突;报告头部固定包含 Datum、Archetyp、Score、URL、PDF 状态,随后是 A–G 各块全文,外加"Extrahierte Keywords"段(15–20 个用于 ATS 优化的关键词)。Score ≥ 4.5 时才会产出 Block G(申请表单草稿答案)。 - 写入 Tracker:
data/applications.md新增一行(编号、日期、公司、角色、Score、状态Evaluated、PDF 状态、指向报告的相对链接)。
3.3 bewerben.md:求职表单实时助手
bewerben.md 是一个交互模式,对应候选人在 Chrome 里填表的那一刻。它读取屏幕上的表单、加载该岗位之前的评估报告、为每个问题生成可复制的答案。核心是八步工作流:ERKENNEN(识别活动 Tab)→ IDENTIFIZIEREN(提取公司+角色)→ SUCHEN(与 reports/ 已有的报告匹配)→ LADEN(读完整报告 + Block G)→ VERGLEICHEN(角色是否变化,变了要警告)→ ANALYSIEREN(识别所有可见问题)→ ERZEUGEN(逐题生成)→ PRÄSENTIEREN(格式化输出供复制粘贴)。前置条件是"推荐用可见的 Playwright";没有 Playwright 时,候选人提供截图(Read 工具可读图)或手动粘贴问题。
该模式对德国表单中高频出现的特有字段给出了专门规则:
- Gehaltsvorstellung(brutto, jährlich):从
profile.yml取区间,用 EUR 表示,附"verhandelbar je nach Gesamtpaket(视整体方案可谈)"; - Eintrittsdatum / Verfügbarkeit:按 Kündigungsfrist(通常 1–3 个月)给出现实可行的入职日期;
- Arbeitserlaubnis / Aufenthaltsstatus:如实简洁;欧盟公民明确写"Keine Arbeitserlaubnis erforderlich (EU-Bürger:in)";
- Sprachkenntnisse:按 CEFR 等级(A1–C2)标注德/英;
- Anrede(称呼):德国表单常为必填(Herr / Frau / Divers / Keine)。
输出格式固定为"Antworten für [Firma] — [Rolle] / Basis: Report #NNN | Score: X.X/5",每道题一段可直接复制的引文答案,结尾附观察与建议。发送后(候选人确认已提交)再执行:node set-status.mjs <report#> Applied(绝不手改 applications.md 表格)、把最终答案回写 Block G、并建议下一步用 /career-ops contacto 给 Hiring Manager 做 LinkedIn 外联。
3.4 pipeline.md:URL 收件箱(Second Brain)
pipeline.md 处理收集在 data/pipeline.md 里的岗位 URL:候选人随时把 URL 丢进收件箱,之后运行 /career-ops pipeline 一次性批处理。工作流是:读取 "Pendientes"/"Pending"/"Offen"(德英西三种小节标题都兼容)下所有 - [ ] 项 → 对每条开放 URL 先原子预留报告编号 → 用 Playwright(browser_navigate + browser_snapshot)→ WebFetch → WebSearch 的降级链提取岗位 → 不可达则标记 - [!] 并跳过 → 跑完整 Auto-Pipeline(A–F 评估 → 报告 → Score ≥ 3.0 时生成 PDF → 写 Tracker)→ 把条目移入 "Verarbeitet" 区(- [x] #NNN | URL | Firma | Rolle | Score/5 | PDF ✅/❌)。开放 URL ≥ 3 条时并行启动 Agent(run_in_background)提速,最后输出汇总表。
文件也给出了 pipeline.md 的标准格式示例(Offen/Verarbeitet 两区)和一组站点特例:LinkedIn 可能要登录(标记 [!] 并请用户粘贴正文)、PDF 链接直接用 Read 工具读、local: 前缀读本地文件、StepStone/XING/kununu 常见 Cookie 横幅(可滚动快照抓正文)、arbeitsagentur.de(德国联邦劳动局)结构良好、WebFetch 通常就够。此外还支持可选的 CLI 提取器:在 config/profile.yml 设置 scan.extractor: cli 后改用 node browser-extract.mjs <url> --mode jd,返回紧凑的 {url, title, text},按 config/profile.example.yml 的注释可节省每页约 2–5 倍 token,失败时静默回退到 Playwright。处理任何 URL 之前还要先跑 node cv-sync-check.mjs 做简历来源同步检查,有偏差就先警告。
4. 哪些内容刻意保持英文
README 明确列出了"有意不译"的部分,因为它们属于标准技术词汇:
- 通用领域词:
cv.md、pipeline、tracker、report、score、archetype、proof point; - 工具名:
Playwright、WebSearch、WebFetch、Read、Write、Edit、Bash; - Tracker 中的状态值:
Evaluated、Applied、Interview、Offer、Rejected; - 代码片段、路径、命令。
德语模式的行文风格是"柏林、慕尼黑或苏黎世的真实工程团队里说的那种 Tech-Deutsch":德语行文 + 惯用处的英文专业术语;不强行造德译词(不会把 "Pipeline" 硬译成 "Förderband",也不会用 "Lebenslauf-Datei" 指代 cv.md)。这一风格约束也直接写进了 _shared.md 的 IMMER 规则第 8 条。
5. 术语对照表(Vokabular-Spickzettel)
README 提供了一份完整的词汇速查表,要求任何人在修改或扩展这些模式时遵循它,以保持语气一致。完整继承如下:
| English | Deutsch (in dieser Codebase) |
|---|---|
| Job posting | Stellenanzeige |
| Application | Bewerbung |
| Cover letter | Anschreiben |
| Resume / CV | Lebenslauf |
| Salary | Gehalt / Vergütung |
| Compensation | Vergütung |
| Skills | Kenntnisse / Fähigkeiten |
| Interview | Vorstellungsgespräch |
| Hiring manager | Personalleiter / Hiring Manager |
| Recruiter | Recruiter(已确立的借词) |
| AI | KI(Künstliche Intelligenz) |
| Requirements | Anforderungen / Voraussetzungen |
| Career history | Werdegang / Berufserfahrung |
| Notice period | Kündigungsfrist |
| Probation | Probezeit |
| Vacation | Urlaub |
| 13th month salary | 13. Monatsgehalt / Weihnachtsgeld |
| Permanent employment | Festanstellung |
| Freelance | Freelance / freie Mitarbeit |
| Collective agreement | Tarifvertrag |
| Anti-discrimination law | AGG(Allgemeines Gleichbehandlungsgesetz) |
| Works council | Betriebsrat |
| Reference letter | Arbeitszeugnis |
| Pension scheme | Betriebliche Altersvorsorge(bAV) |
| Capital formation benefit | Vermögenswirksame Leistungen(VWL) |
这些术语不是单纯的翻译对照,而是直接进入评估逻辑的。_shared.md 的"Deutscher Markt — Spezifika"表把每个 DACH 概念都标注了评估影响(Bewertungs-Impact),这正是德语模式相对英文模式"知道更多"的地方:
| 概念 | 含义 | 评估影响 |
|---|---|---|
| AGG | 反歧视法,岗位要求含 "(m/w/d)" | 不因缺少 "(m/w/d)" 而弃评,但记为合规弱点 |
| 13. Monatsgehalt / Weihnachtsgeld | 通常在 11 月发放的第 13 个月工资 | 薪酬计算按 Brutto × 13(Tarif 行业可能 13.5/14),比较时绝不能漏 |
| Festanstellung vs Freelance | 无固定期限雇佣 vs 自雇 | 前者有社保、风险低、日薪低;后者日薪高,需查 Scheinselbstständigkeit(假自雇)风险 |
| Probezeit | 通常 6 个月,期间解约期短(2 周) | 属市场标准,不算风险项;仅当超过 6 个月才 flag |
| Kündigungsfrist | 试用期后的法定解约期,常 1–3 个月 | 换工作要据此规划入职日期 |
| Urlaub | 标准 25–30 天(法定最低 20 天/5 天制) | 少于 28 天低于 Tech 市场标准,可谈 |
| Tarifvertrag(TVöD / IG Metall) | 集体薪酬规则 | 适用时谈判空间小,但确定性强、涨幅固定 |
| Betriebsrat | 员工代表机构 | 中坚企业与集团中力量大,解雇/工时有发言权,稳定性加分 |
| Bewerbungsmappe | Anschreiben + 简历 + 证书 | DACH 常见期待(与英文市场不同),证书可能需后补 |
| Arbeitszeugnis | 前雇主的结构化推荐信 | DACH 经典标准,有自己的一套"编码语言" |
| VWL | 雇主对资产积累的补贴 | 金额小(常为 40 €/月),但应计入 Benefits |
| bAV | 企业养老金 | 薪酬对比时要计入,每月可能达数百欧元 |
_shared.md 还内置了四段德语谈判脚本(薪酬区间表达、Geo-Diskount 反制、低于目标价时的博弈、要求拆分固定薪资/第 13 个月工资/浮动部分),以及 Location Policy 评分细则(本国外的 Hybrid 岗位 Remote 维度给 3.0 而非 1.0,仅当岗位明确"每周 4–5 天到场、无例外"才给 1.0)。这些内容在英文 modes/_shared.md 中并不存在,是德语模式的核心增量。
6. 贡献指南:如何扩展德语模式
README 末尾给出了维护这组模式的五条步骤,同样适用于其他语言目录:
- 按 CONTRIBUTING.md 先开 Issue 提出建议;
- 遵守上文词汇表,保持语气一致;
- 翻译要语义化、地道,逐词直译不可接受;
- 结构元素(A–F 块、表格、代码块、工具指令)必须原样保留;
- 在提交 PR 前,用一条真实的德语岗位(例如 StepStone 或 XING 上的)实测一遍。
7. 相关文件索引
- 文档主体:modes/de/README.md
- 四个德语模式:modes/de/_shared.md、modes/de/angebot.md、modes/de/bewerben.md、modes/de/pipeline.md
- 德语面试技能:modes/de/interview/plan.md、modes/de/interview/practice.md、modes/de/interview/debrief.md
- 语言契约与路由:AGENTS.md(市场模式表、output vs modes_dir 契约)、modes/README.md(模式目录与语言选择约定)
- 配置:config/profile.example.yml(
language.output/language.modes_dir字段与注释)、config/cv-facts.example.json - 实现与测试证据:web/src/lib/career-ops.ts、gemini-eval.mjs(modes_dir 读取与安全回退)、tests/output-language.test.mjs(输出语言默认值)、test-all.mjs(契约文档化检查)
- 流程依赖:reserve-report-num.mjs(报告编号原子预留)、cv-sync-check.mjs(简历来源同步检查)、set-status.mjs(Tracker 状态更新)、browser-extract.mjs(可选 CLI 岗位提取器)、DATA_CONTRACT.md(用户层/系统层文件边界)
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0624
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00