{"id":"d7bf1793-4211-416f-93bc-1c83a353d2a5","entityType":"agent","slug":"clawhub-tanchunzhuo-ai-career-position","name":"ai-career-position","canonicalUrl":"https://www.xpersona.co/agent/clawhub-tanchunzhuo-ai-career-position","canonicalPath":"/agent/clawhub-tanchunzhuo-ai-career-position","generatedAt":"2026-10-11T17:46:37.854Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-11T13:58:43.123Z","emptyReason":null},"description":"找到你在 AI 时代最值得站的位置。当用户说「评估这个JD」「分析这个职位」「这个岗位怎么样」「这个offer值不值得去」「比较offer」「准备面试」「帮我找方向」「我适合什么方向」「该不该转行」「改简历」「看看我的简历」「识别外包/培训贷」时使用。粘贴一个招聘JD（文本/URL/截图），本地评估匹配度、识破外包与培训贷骗局、对标职级与总包、生成过国内ATS的中文简历、准备面试、追踪投递、比较offer。投递永远由用户自己完成。 Skill: ai-career-position Owner: tanchunzhuo Summary: 找到你在 AI 时代最值得站的位置。当用户说「评估这个JD」「分析这个职位」「这个岗位怎么样」「这个offer值不值得去」「比较offer」「准备面试」「帮我找方向」「我适合什么方向」「该不该转行」「改简历」「看看我的简历」「识别外包/培训贷」时使用。粘贴一个招聘JD（文本/URL/截图），本地评估匹配度、识破外包与培训贷骗局、对标职级与总包、生成过国内ATS的中文简历、准备面试、追踪投递、比较offer。投递永远由用户自己完成。 Tags: latest:0.1.0 Version history: v0.1.0 | 2026-08-26T03:15:47.952Z | auto Initial release of ai-career-position - Evaluate job descriptions for f","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.1K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s17d7cd3fah9rs76geak5zdtqn8d680d:ai-career-position","sourceUrl":"https://clawhub.ai/tanchunzhuo/ai-career-position","homepage":"https://clawhub.ai/tanchunzhuo/skills/ai-career-position","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/tanchunzhuo/ai-career-position","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/tanchunzhuo/skills/ai-career-position","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":60,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"找到你在 AI 时代最值得站的位置。当用户说「评估这个JD」「分析这个职位」「这个岗位怎么样」「这个offer值不值得去」「比较offer」「准备面试」「帮我找方向」「我适合什么方向」「该不该转行」「改简历」「看看我的简历」「识别外包/培训贷」时使用。粘贴一个招聘JD（文本/URL/截图），本地评估匹配度、识破外包与培"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T13:58:43.123Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T13:58:43.123Z","emptyReason":null},"stars":null,"forks":null,"downloads":1053,"packageName":null,"latestVersion":"0.1.0","tractionLabel":"1.1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T13:58:43.117Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T13:58:43.123Z","lastCrawledAt":"2026-10-11T13:58:43.117Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T13:58:43.117Z","lastVerifiedAt":null,"highlights":[{"version":"0.1.0","createdAt":"2026-08-26T03:15:47.952Z","changelog":"Initial release of ai-career-position - Evaluate job descriptions for fit, salary, risks, and offer comparison by processing JD text, URL, or screenshot. - Analyze and match user resume and preferences locally (no data uploaded or automated actions). - Detect fraudulent or risky positions, highlight red flags, and trace all recommendations to original sources. - Provide personalized next steps for applications, interview preparation, and resume generation in Chinese ATS style. - All application tracking and decision actions are strictly user-driven; maintains strict privacy and transparency principles.","fileCount":54,"zipByteSize":121659}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17d7cd3fah9rs76geak5zdtqn8d680d:ai-career-position","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tanchunzhuo-ai-career-position/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tanchunzhuo-ai-career-position/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tanchunzhuo-ai-career-position/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-tanchunzhuo-ai-career-position/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-tanchunzhuo-ai-career-position/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-tanchunzhuo-ai-career-position/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-11T17:46:37.853Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tanchunzhuo-ai-career-position/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tanchunzhuo-ai-career-position/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tanchunzhuo-ai-career-position/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tanchunzhuo-ai-career-position/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-11T13:58:43.123Z","emptyReason":null},"readme":"Skill: ai-career-position\n\nOwner: tanchunzhuo\n\nSummary: 找到你在 AI 时代最值得站的位置。当用户说「评估这个JD」「分析这个职位」「这个岗位怎么样」「这个offer值不值得去」「比较offer」「准备面试」「帮我找方向」「我适合什么方向」「该不该转行」「改简历」「看看我的简历」「识别外包/培训贷」时使用。粘贴一个招聘JD（文本/URL/截图），本地评估匹配度、识破外包与培训贷骗局、对标职级与总包、生成过国内ATS的中文简历、准备面试、追踪投递、比较offer。投递永远由用户自己完成。\n\nTags: latest:0.1.0\n\nVersion history:\n\nv0.1.0 | 2026-08-26T03:15:47.952Z | auto\n\nInitial release of ai-career-position\n\n- Evaluate job descriptions for fit, salary, risks, and offer comparison by processing JD text, URL, or screenshot.\n- Analyze and match user resume and preferences locally (no data uploaded or automated actions).\n- Detect fraudulent or risky positions, highlight red flags, and trace all recommendations to original sources.\n- Provide personalized next steps for applications, interview preparation, and resume generation in Chinese ATS style.\n- All application tracking and decision actions are strictly user-driven; maintains strict privacy and transparency principles.\n\nArchive index:\n\nArchive v0.1.0: 54 files, 121659 bytes\n\nFiles: .gitignore (639b), CHANGELOG.md (1317b), data (0b), data/adjacent_roles.yml (13065b), data/companies.yml (4752b), data/followup_cadence.yml (3278b), data/interview_formats.yml (6048b), data/levels.yml (10137b), data/redflags.yml (9940b), data/salary.yml (8812b), docs (0b), docs/DATA_UPDATES.md (3297b), docs/PLATFORM_ADAPTERS.md (2740b), docs/PRIVACY.md (2673b), docs/PUBLISH_TO_GITHUB.md (3432b), docs/VALUE_AND_BOUNDARIES.md (12095b), install.sh (3962b), LICENSE (1332b), prompts (0b), prompts/00_syspersona.md (4065b), prompts/A_role_summary.md (1431b), prompts/B_cv_match.md (2081b), prompts/C_level_benchmark.md (1959b), prompts/D_compensation.md (3106b), prompts/E_personalization.md (2341b), prompts/F_interview_prep.md (2450b), prompts/G_redflag_due_diligence.md (4194b), prompts/negotiation.md (2674b), prompts/offer_compare.md (3743b), prompts/radar.md (6983b), prompts/school_recruit.md (3086b), prompts/story_bank.md (1946b), README.md (7213b), scripts (0b), scripts/ats_parser.py (7552b), scripts/bookmarklet.js (4248b), scripts/bookmarklet.min.txt (3159b), scripts/inbox_server.py (5221b), scripts/resume_render.py (2024b), scripts/story_bank.py (4060b), scripts/tracker.py (8376b), skill-card.md (3005b), SKILL.md (7315b), templates (0b), templates/ats_diagnostic.html (3934b), templates/resume_creative_zh.html (3430b), templates/RESUME_DESIGN_SYSTEM.md (9192b), templates/resume_editorial.html (8775b), templates/resume_general_zh_v2.html (8032b), templates/resume_general_zh_v3.html (8906b), templates/resume_general_zh.html (4047b), templates/resume_state_owned.html (4067b), templates/resume_swiss_neue.html (8757b), _meta.json (137b)\n\nFile v0.1.0:SKILL.md\n\n---\nname: ai-career-position\ndescription: \"找到你在 AI 时代最值得站的位置。当用户说「评估这个JD」「分析这个职位」「这个岗位怎么样」「这个offer值不值得去」「比较offer」「准备面试」「帮我找方向」「我适合什么方向」「该不该转行」「改简历」「看看我的简历」「识别外包/培训贷」时使用。粘贴一个招聘JD（文本/URL/截图），本地评估匹配度、识破外包与培训贷骗局、对标职级与总包、生成过国内ATS的中文简历、准备面试、追踪投递、比较offer。投递永远由用户自己完成。\"\nlicense: MIT\nversion: 1.0.0\nmetadata:\n  author: tanchunzhuo\n  homepage: https://github.com/tanchunzhuo/ai-career-position\n---\n\n# AI职业选位（ai-career-position）\n\n> 找到你在 AI 时代最值得站的位置。\n>\n> 粘贴一个 JD（文本/URL/截图），本地评估匹配度、识破外包与骗局、对标职级与总包、生成过国内 ATS 的中文简历、准备面试、追踪投递、比较 offer。投递永远由用户自己完成。\n\n---\n\n## 0. 三条铁律（任何模块都不得违反）\n\n1. **人机协同，不是自动求职机**：所有投递、发送、点击、提交动作必须由用户手动完成。绝不登录招聘平台、绝不自动投递、绝不存储账号密码。\n2. **隐私优先，100% 数据本地**：简历、JD、追踪记录全部以纯文本（Markdown/TSV/JSON/YAML）存于用户授权的本地工作目录 `workspace/`。不上传、不外发、不内置遥测。\n3. **不造假、不替用户做决定**：简历优化只做\"真实经历的准确呈现\"，红线检测只做\"提示去核验\"，薪资数据标注来源与时点，不承诺结果。\n\n---\n\n## 1. 触发词\n\n- `评估这个 JD` / `分析这个职位` / `这个岗位怎么样`\n- `/ai-career-position`（后接参数：`inbox` / `tracker` / `radar` / `resume` / `story` / `offer`）\n- `比较 offer` / `准备面试` / `帮我找方向` / `我适合什么` / `看看这个简历`\n\n## 2. 输入处理\n\n**输入类型**（按优先级）：\n1. 粘贴的 JD 文本；\n2. JD URL（提示用户手动打开并复制正文，或用 Bookmarklet 存入 inbox；**绝不自动抓取批量页面**）；\n3. 截图（走宿主 OCR）；\n4. `workspace/inbox/*.json`（Bookmarklet 抓取，`/ai-career-position inbox` 扫描）；\n5. 对话补全（用户直接描述岗位）。\n\n**识别字段**：\n- 来源平台：BOSS直聘 / 猎聘 / 拉勾 / 智联招聘 / 牛客 / 应届生求职网 / 公司官网 / 外企官网 / 其他；\n- 招聘类型：**社招 / 校招 / 实习 / 管培生 / 外包**；\n- 行业、城市、岗位方向。\n\n**必读文件**：\n- `workspace/cv.md`（用户主简历）\n- `workspace/profile.yml`（用户画像：期望薪资、城市、红线、校招/社招、雷达锁定的方向）\n- 若已跑过侧翼雷达，读取其锁定的\"交集坐标\"，用于加权匹配。\n\n## 3. 编排流程\n\n```\n0. 首次使用，或用户说\"找方向/我适合什么/不知道投什么\"时\n   → 先跑 prompts/radar.md（侧翼雷达），产出候选交集坐标 + 目标岗位清单\n   → 写入 workspace/profile.yml 的 radar_locked 字段\n\n1. 当用户给出具体 JD：\n   → 解析清洗（§4 规范：来源、类型、行业、城市；中式薪资格式解析；福利制度；合同主体与外包识别）\n2. 读取 workspace/cv.md 与 workspace/profile.yml\n3. 若识别为 校招/实习/管培生 → 追加 prompts/school_recruit.md\n4. 并行/顺序执行 A–G 七模块（prompts/A~G_*.md），每模块输出结构化结果\n5. 按权重聚合综合评分（默认权重见下），给出 投/不投 建议 + 行动清单\n6. 用户确认后，将记录写入 workspace/data/applications.tsv，状态\"已评估\"\n7. 按需触发：简历生成（templates/ + scripts/resume_render.py）、面试准备（F + story_bank）、offer 比较（offer_compare.md）\n```\n\n**评分权重（默认，可被用户 profile.yml 覆盖）**：\n| 模块 | 权重 | 说明 |\n|---|---|---|\n| B 匹配度 | 25% | CV vs JD |\n| D 薪酬 | 20% | 市场对标 + 总包拆解 |\n| G 红线 | 25% | **可一票否决**：命中\"诈骗/严重违法\"类红旗 → 综合评分直接 ≤2.0 并置顶警告 |\n| C 职级 | 10% | 职级对标与年限预期 |\n| A 角色 | 10% | 岗位本质 |\n| E 个性化 | 10% | 投递策略 |\n| F 面试 | — | 不参与评分，提供准备材料 |\n\n**评分后输出姿态（确认优先，不下命令）**：综合分出来后，先确认用户已有的倾向（\"你倾向投它，你的直觉基本对\"或\"你本来就犹豫，这个犹豫有道理\"），再给需要核验的点。评分只作参照，不作判决，不直接说\"建议投/不建议投\"。\n\n**评分参照**：综合 ≥4.0 通常值得投；3.0–4.0 有保留地投（列明条件）；<3.0 谨慎。\n**拒绝海投**：宁可少投，用 A–G 筛出值得投的岗位。\n\n## 4. 输出纪律\n\n- 所有事实性结论**必须可追溯**：引用 JD 原文（带原文摘录）或 `data/*.yml` 文件；\n- 无法确定的信息标注 **\"待核验\"**，绝不编造；\n- 薪资/职级类结论必须带**来源与数据时点**；\n- 给用户的行动建议要具体到\"下一步做什么、找谁、问什么\"，而不是空泛建议；\n- **确认优先于建议**：先确认用户已有的判断或倾向（肯定其对的部分），再给需要核验的点，不直接下命令式结论。\n\n## 5. 模块与文件映射\n\n| 模块 | 提示词 | 数据 | 脚本 |\n|---|---|---|---|\n| 侧翼雷达（入口） | `prompts/radar.md` | `data/adjacent_roles.yml` | — |\n| A 角色总结 | `prompts/A_role_summary.md` | — | — |\n| B CV 匹配 | `prompts/B_cv_match.md` | — | — |\n| C 职级对标 | `prompts/C_level_benchmark.md` | `data/levels.yml` | — |\n| D 薪酬调研 | `prompts/D_compensation.md` | `data/salary.yml` | — |\n| E 个性化建议 | `prompts/E_personalization.md` | `workspace/profile.yml` | — |\n| F 面试准备 | `prompts/F_interview_prep.md` | `data/interview_formats.yml` | `scripts/story_bank.py` |\n| G 红线尽调 | `prompts/G_redflag_due_diligence.md` | `data/redflags.yml` `data/companies.yml` | — |\n| 校招专属 | `prompts/school_recruit.md` | — | — |\n| 故事银行 | `prompts/story_bank.md` | — | `scripts/story_bank.py` |\n| 谈薪话术 | `prompts/negotiation.md` | `data/followup_cadence.yml` | — |\n| Offer 比较 | `prompts/offer_compare.md` | — | — |\n| 简历 | §7 | `templates/*.html` | `scripts/resume_render.py` `scripts/ats_parser.py` |\n| 追踪 | §11 | `workspace/data/applications.tsv` | `scripts/tracker.py` |\n| Inbox | §12 | `workspace/inbox/` | `scripts/inbox_server.py` `scripts/bookmarklet.js` |\n\n## 6. 无脚本使用指南（平台无关核心）\n\n如果宿主没有脚本能力（纯聊天 AI），按此流程同样可用：\n1. 把本文件 + `prompts/00_syspersona.md` 的内容贴给任意 AI；\n2. 按需贴入对应模块提示词（A–G、radar 等）；\n3. 粘贴 JD 文本（或让用户手动上传截图/文件）；\n4. 让 AI 按模块逐项输出，最后聚合评分；\n5. 用户手动执行所有投递动作。\n\n差异仅在于：无自动 PDF 渲染、无本地 inbox 服务、无 TSV 自动读写（用户手动维护表格或让 AI 输出表格文本）。\n\nFile v0.1.0:README.md\n\n# AI职业选位 · ai-career-position\n\n> **找到你在 AI 时代最值得站的位置。**\n> 一个本地运行、平台无关、人机协同的中国求职 AI 助手。\n> by **tanchunzhuo** ｜ v1.0（2026-08）｜ MIT 协议 ｜ 免费开源\n\n---\n\n## 它解决什么问题\n\n市面上的求职工具都在教你「**怎么投简历**」。这个工具在教你「**该投哪个方向**」。\n\n大多数人的焦虑不是「我不会用 AI」，而是「我该往哪走、这个岗位值不值得去、我会不会被 AI 替代」。**AI职业选位**用一套可落地的判断标准，帮你把模糊的焦虑变成具体的决策：\n\n- 🧭 **侧翼雷达（核心差异化）**：先回答最痛的问题——「我该找什么方向」。输入你的背景和约束，产出 3–5 个「领域 × AI」交集坐标 + 90 天验证计划。它不做算命，只给「值得验证的假设」。\n- ⚖️ **A–G 七模块评估**：粘贴一个 JD，拆解成 角色 / 匹配度 / 职级 / 薪酬 / 个性化 / 面试 / 红线尽调 七个维度，加权出 1–5 分 + 投/不投建议，拒绝海投。\n- 🛡️ **红线尽调**：反诈（培训贷/电诈园区）、劳动合规（试用期/竞业/五险一金基数）、外包识别、雇主尽调清单。命中诈骗类红旗直接一票否决。\n- 📄 **ATS 中文简历**：北森/大易/Moka 友好的单栏 HTML + Playwright 出 PDF，通用/创意/国企多版 + ATS 诊断，简历能真正被机器读到。\n- 🗂️ **本地追踪**：`applications.tsv` 状态机 + 跟进提醒 + 渠道通过率分析。\n- 💬 **面试与谈薪**：STAR+R 故事银行、10 个高信息反问、HR 压价话术、offer 多维比较与合同审阅清单。\n\n## 为什么值得相信它\n\n1. **100% 本地运行，数据不上传**。简历、薪资、投递记录只存你电脑的 `workspace/`，`.gitignore` 已忽略，永不提交任何服务器。2026 年最该被问的问题，这里已经替你守住了。\n2. **人机协同，不是自动投递机器**。所有投递、发送、点击由你手动完成，绝不登录招聘平台、绝不存账号密码。它帮你把「该投哪些、怎么避坑」想清楚，把决策权留给你。\n3. **不造假、不承诺**。简历优化是「让真实经历被准确解析」，不是伪造；红线检测是「提示去核验」，不是定罪；薪资标注来源与时点，给不出就标「待核验」，绝不编一个漂亮数字。\n4. **站在巨人的肩膀上**。理念致敬 **santifer/career-ops**（约 62K★ 的开源求职系统，MIT）：薪资对标、投递模式分析、面试复盘的设计思路源自它，代码为**中国市场完全重写**——中式薪资格式解析（\"25-40K×15薪\"）、大厂职级对标（阿里 P6/字节 2-2/腾讯 T3）、外包/派遣/培训贷识别，都是原版没有、只为中国求职者做的。\n\n## 安装\n\n### 方式一：一键安装（推荐，一句话）\n\n不用先下载，打开终端贴这一句回车：\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/tanchunzhuo/ai-career-position/main/install.sh | bash\n```\n\n脚本自动装到 WorkBuddy / Claude Code / Codex / Cursor 的 skills 目录。重启后直接说「帮我找方向」或「评估这个 JD」就会触发，不用记任何命令。\n\n只装某一个平台（例如 WorkBuddy）：\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/tanchunzhuo/ai-career-position/main/install.sh | bash -s -- workbuddy\n```\n\n### 方式二：clone 后本地安装\n\n```bash\ngit clone https://github.com/tanchunzhuo/ai-career-position.git\ncd ai-career-position && ./install.sh\n```\n\n### 方式三：手动复制\n\n把整个 `ai-career-position` 文件夹放进平台的 skills 目录，重启即可：\n\n| 平台 | 目录 |\n| :--- | :--- |\n| WorkBuddy | `~/.workbuddy/skills/` |\n| Claude Code | `~/.claude/skills/` |\n| Codex | `~/.agents/skills/` |\n| Cursor | `~/.cursor/skills/` |\n\n### 方式四：无脚本使用（任何 AI 都能用，零安装）\n\n1. 复制 `SKILL.md` 与 `prompts/00_syspersona.md` 全文，粘贴给任意 AI（Claude / ChatGPT / Kimi / 豆包 / DeepSeek）；\n2. 按需粘贴对应模块提示词，再粘贴 JD 文本；\n3. AI 输出完整 A–G 报告 + 评分 + 建议；投递由你自己完成。\n\n### 首次使用流程\n\n1. 创建 `workspace/` 目录（如不存在），写入 `cv.md`（你的真实经历，Markdown）与 `profile.yml`（期望薪资、城市、红线、社招/校招）；\n2. 对 AI 说「帮我找方向」→ 跑**侧翼雷达**，锁定 3–5 个目标方向；\n3. 看到感兴趣的 JD，说「评估这个 JD」+ 粘贴内容；\n4. 用 Bookmarklet（`scripts/bookmarklet.js`）或手动粘贴收集 JD 到本地 inbox；\n5. 确认投递后，用 `scripts/tracker.py` 记录并跟进。\n\n## 目录结构\n\n```\nai-career-position/\n├── SKILL.md                  # 主调度：解析输入、路由、编排 A–G、聚合输出\n├── prompts/                  # 各模块提示词（平台无关核心）\n│   ├── 00_syspersona.md      # 统一角色与红线\n│   ├── radar.md              # 侧翼雷达（入口模块，差异化核心）\n│   ├── A_role_summary.md … G_redflag_due_diligence.md   # A–G 七模块\n│   ├── school_recruit.md     # 校招专属\n│   ├── story_bank.md         # 面试故事银行\n│   ├── negotiation.md        # 谈薪话术\n│   └── offer_compare.md      # offer 比较 + 合同审阅\n├── data/                     # 规则与对标数据（社区可更新，均带来源与时点）\n│   ├── adjacent_roles.yml    # 侧翼岗位知识库\n│   ├── levels.yml            # 大厂职级对标\n│   ├── salary.yml            # 分城市/行业/职级薪资\n│   ├── redflags.yml          # 反诈/合规/制度/尽调规则\n│   ├── companies.yml         # 尽调链接模板 + 外包/派遣名单\n│   ├── interview_formats.yml # 面试形式库\n│   └── followup_cadence.yml  # 跟进节奏\n├── templates/                # 简历 HTML 模板（模板矩阵见 RESUME_DESIGN_SYSTEM.md）\n├── scripts/                  # 本地脚本（可选增强层）\n├── workspace/                # 用户数据（gitignore，绝不提交）\n└── docs/\n    ├── PLATFORM_ADAPTERS.md  # 各宿主适配说明\n    ├── DATA_UPDATES.md       # 如何更新 data/*.yml\n    ├── PRIVACY.md            # 隐私与合规说明\n    ├── VALUE_AND_BOUNDARIES.md # 适用人群、质量与可靠性边界\n    └── PUBLISH_TO_GITHUB.md  # SSH 方式发布到 GitHub\n```\n\n## 数据与免责声明\n\n- `data/*.yml` 全部带 `meta` 块（版本、更新时点、来源、免责声明）；薪资/职级为 B/C 级社区数据（猎聘/脉脉/看准/OfferShow 等），**仅供谈判锚点参考，决策前请自行核实**；\n- 本工具不构成法律意见、求职中介意见，不承诺录用/涨薪结果；\n- 数据更新方式见 `docs/DATA_UPDATES.md`，欢迎 PR 一起维护——这类数据变化快，靠社区比靠一个人靠谱。\n\n\n---\n\n© 2026 tanchunzhuo · 本地运行 · 数据不上传 · 投递的手永远是你自己的\n\nFile v0.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn7aq0n99x88a125mctwzfgt9s8d67nk\",\n  \"slug\": \"ai-career-position\",\n  \"version\": \"0.1.0\",\n  \"publishedAt\": 1787714147952\n}\n\nFile v0.1.0:scripts/bookmarklet.min.txt\n\njavascript:(function%20()%20%7B%20%22use%20strict%22%3B%20var%20endpoint%20%3D%20%22http%3A%20var%20titleSelectors%20%3D%20%5B%20'.name'%2C%20'.job-name'%2C%20'%5Bclass*%3D%22job-name%22%5D%20h1'%2C%20'h1'%2C%20'.job-title'%2C%20'h1%5Bclass*%3D%22job%22%5D'%2C%20'title'%20%5D%3B%20var%20companySelectors%20%3D%20%5B%20'.company-name'%2C%20'.name-text'%2C%20'%5Bclass*%3D%22company%22%5D%20.name'%2C%20'.job-company%20h3'%2C%20'.company'%2C%20'meta%5Bproperty%3D%22og%3Asite_name%22%5D'%20%5D%3B%20var%20salarySelectors%20%3D%20%5B%20'.salary'%2C%20'.salary-text'%2C%20'.job-salary'%2C%20'%5Bclass*%3D%22salary%22%5D'%2C%20'.job-info%20.salary'%20%5D%3B%20var%20contentSelectors%20%3D%20%5B%20'.job-sec-text'%2C%20'.job-detail'%2C%20'.job-description'%2C%20'%5Bclass*%3D%22job-detail%22%5D'%2C%20'.text'%2C%20'.content'%2C%20'article'%2C%20'body'%20%5D%3B%20function%20q1(list)%20%7B%20for%20(var%20i%20%3D%200%3B%20i%20%3C%20list.length%3B%20i%2B%2B)%20%7B%20var%20el%20%3D%20document.querySelector(list%5Bi%5D)%3B%20if%20(el%20%26%26%20el.textContent.trim())%20return%20el%3B%20%7D%20return%20null%3B%20%7D%20var%20titleEl%20%3D%20q1(titleSelectors)%3B%20var%20title%20%3D%20titleEl%20%3F%20titleEl.textContent.trim().split('%5Cn')%5B0%5D.slice(0%2C%20120)%20%3A%20document.title%3B%20var%20companyEl%20%3D%20q1(companySelectors)%3B%20var%20company%20%3D%20companyEl%20%3F%20companyEl.textContent.trim().slice(0%2C%2060)%20%3A%20%22%22%3B%20var%20salaryEl%20%3D%20q1(salarySelectors)%3B%20var%20salary%20%3D%20salaryEl%20%3F%20salaryEl.textContent.trim().slice(0%2C%2080)%20%3A%20%22%22%3B%20var%20contentEl%20%3D%20q1(contentSelectors)%3B%20var%20content%20%3D%20%22%22%3B%20if%20(contentEl)%20%7B%20var%20clone%20%3D%20contentEl.cloneNode(true)%3B%20clone.querySelectorAll('script%2Cstyle%2Cnav%2Cheader%2Cfooter%2Cbutton%2C.sidebar%2C%5Bclass*%3D%22footer%22%5D').forEach(function%20(n)%20%7B%20n.remove()%3B%20%7D)%3B%20content%20%3D%20clone.innerText%20%7C%7C%20clone.textContent%20%7C%7C%20%22%22%3B%20%7D%20content%20%3D%20content.replace(%2F%5Cs%2B%2Fg%2C%20%22%5Cn%22).trim().slice(0%2C%2020000)%3B%20var%20payload%20%3D%20%7B%20title%3A%20title%2C%20company%3A%20company%2C%20salary%3A%20salary%2C%20url%3A%20window.location.href%2C%20source%3A%20window.location.hostname%2C%20captured_at%3A%20new%20Date().toISOString()%2C%20content%3A%20content%20%7D%3B%20fetch(endpoint%2C%20%7B%20method%3A%20%22POST%22%2C%20headers%3A%20%7B%20%22Content-Type%22%3A%20%22application%2Fjson%22%20%7D%2C%20body%3A%20JSON.stringify(payload)%20%7D).then(function%20(r)%20%7B%20if%20(r.ok)%20window.location.href%20%3D%20endpoint%3B%20else%20alert(%22%E4%BF%9D%E5%AD%98%E5%A4%B1%E8%B4%A5%EF%BC%8C%E8%AF%B7%E7%A1%AE%E8%AE%A4%E6%9C%AC%E5%9C%B0%E6%9C%8D%E5%8A%A1%E5%B7%B2%E5%90%AF%E5%8A%A8%EF%BC%88python3%20scripts%2Finbox_server.py%EF%BC%89%22)%3B%20%7D).catch(function%20()%20%7B%20alert(%22%E6%97%A0%E6%B3%95%E8%BF%9E%E6%8E%A5%E6%9C%AC%E5%9C%B0%E6%9C%8D%E5%8A%A1%E3%80%82%E8%AF%B7%E5%85%88%E8%BF%90%E8%A1%8C%EF%BC%9Apython3%20scripts%2Finbox_server.py%EF%BC%8C%E5%B9%B6%E5%85%81%E8%AE%B8%E6%B5%8F%E8%A7%88%E5%99%A8%E8%AE%BF%E9%97%AE%20http%3A%20%7D)%3B%20%7D)()%3B\n\nFile v0.1.0:CHANGELOG.md\n\n# Skill 进化史（CHANGELOG）\n\n> 每次改动，记一句「为什么」。半年后回头看，这是一份用真实数据写成的 skill 进化史——它告诉你，这个工具是怎么一步步变对的。\n\n---\n\n## 2026-08-22 · 输出话术：从「给答案」到「帮确认」\n\n**改了什么**：三个文件（`prompts/00_syspersona.md`、`SKILL.md`、`prompts/radar.md`），把输出从命令式建议（\"建议投 / 不建议投\"）改成确认式（\"你倾向投它，你的直觉基本对，但这三点要核验\"）。\n\n**为什么**：对小红书 32 篇求职笔记、几千条评论的交叉分析，浮出一个元洞察——用户最需要的不是「信息」，是「确认」。他们缺的不是\"我该怎么办\"的答案，而是\"我这么想对不对\"的确认。评论区最活跃的模式，是每个\"好消息\"底下都有人把它拆掉（排雷）；最稳的反焦虑叙事，是\"我也这样\"的确认感，而不是成功故事。\n\n所以 skill 的正确姿势是：帮用户确认 ta 已有的想法是对的，再指出哪里要核验，而不是给 ta 一个全新的答案。一句话——**别替用户做决定，帮用户确认 ta 自己的想法是对的**。\n\n**数据来源**：小红书求职笔记评论区交叉分析（32 篇帖子、数千条评论）。\n\n---\n\nFile v0.1.0:docs/DATA_UPDATES.md\n\n# DATA_UPDATES.md — 如何更新 data/*.yml\n\n`data/` 下的所有 YAML 都是**社区可更新**的（对应 SKILL.md 元指令 5：所有易过时数据放 `data/*.yml`，不写死在提示词里）。职级、薪资、红线规则会变，欢迎提 PR。\n\n## 1. 通用规范\n\n每个 `data/*.yml` 顶部必须保留 `meta` 块：\n\n```yaml\nmeta:\n  version: \"1.0\"          # 语义化版本，改内容时递增\n  last_updated: \"2026-08\" # 改为你的更新月份\n  sources: [来源列表]      # 新增数据必须注明来源\n  disclaimer: \"仅供参考，薪资/职级/规则会变化，决策前请自行核实\"\n```\n\n**数据准确性原则**：宁可标\"数据不足/待核验\"，不给精确但错误的数字。\n**C 级数据**（看准/脉脉匿名）必须标注来源性质（`level: C级` + 来源 + 时点）。\n\n## 2. 各文件更新指引\n\n### levels.yml（职级对标）\n- 新增公司：按 `companies:` 下现有结构添加序列与级别，附来源与时点；\n- 公司调整职级体系时（如字节 2025 年调整），新增条目并注明，不删除旧条目做历史参考；\n- 每条总包区间必须带时点，避免过时误导。\n\n### salary.yml（薪资）\n- 优先引用：B 级（招聘平台官方报告、企业官方校招薪资）、A 级（政府公布的平均工资/社保基数）；\n- C 级数据（看准/脉脉/OfferShow 爆料）标注 `level: C级` + 时间；\n- 分位数 P25/P50/P75 拿不到就写 `null`，**绝不编造**；\n- 附数据来源链接（如有）。\n\n### redflags.yml（红线规则）\n- 法律类规则（劳动法、司法解释）变化频率低，但**司法解释（二）**等新规出台时需跟进（2025-09-01 已施行）；\n- 反诈类规则（新骗局模式）需要持续补充——看到新型骗局可加规则；\n- 新增规则必须写清 `severity` 与 `veto`（是否一票否决）。\n\n### adjacent_roles.yml（侧翼岗位）\n- 原则：只收录\"现在已有真实招聘和付费\"的岗位，预测类一律标 `高投机` 或不收；\n- 每条岗位要有三原则论证与失效信号，避免沦为\"热门岗位清单\"。\n\n### companies.yml（尽调入口与名单）\n- 外包/派遣公司名单持续补充（公开信息）；注意标注\"仅供参考\"；\n- 尽调链接模板若平台改版需更新 URL。\n\n### interview_formats.yml（面试形式）\n- 大厂流程每半年复核一次（校招季前后变化多）；\n- 面经是 C 级数据，注明\"以实际邀约为准\"。\n\n### followup_cadence.yml（跟进节奏）\n- 变动少；如需调整直接改天数并在 meta 中说明。\n\n## 3. 提交流程\n\n1. 改 `data/*.yml`（更新 `last_updated`、必要时 `version`、`sources`）；\n2. 本地验证 YAML 语法：\n   ```bash\n   python3 -c \"import yaml,sys; [yaml.safe_load(open(f)) for f in ['data/levels.yml','data/salary.yml','data/redflags.yml','data/adjacent_roles.yml','data/companies.yml','data/interview_formats.yml','data/followup_cadence.yml']]; print('OK')\"\n   ```\n3. 提交 PR，说明：改了什么、数据来源、时点、级别。\n\n## 4. 常见坑\n\n- YAML 里含中文冒号 `：` 或列表符号时注意缩进与引号；\n- 金额统一用\"万元/年\"或标注单位，别混用；\n- 别把匿名社区单条爆料当成普遍水平（注明是单点信息）。\n\nFile v0.1.0:docs/PLATFORM_ADAPTERS.md\n\n# PLATFORM_ADAPTERS.md — 多端适配说明\n\n《AI职业选位》设计为**平台无关核心 + 多端适配层**：\n- 核心层（`prompts/` + `data/` + `templates/`）是纯文本，任何 AI 复制即可用；\n- 适配层（脚本、本地服务、浏览器自动化）按宿主能力可选启用。\n\n## 一、核心层（所有平台通用）\n\n**无脚本使用方式**（任何 AI 都能用）：\n1. 复制 `SKILL.md` + `prompts/00_syspersona.md` 全文；\n2. 首次使用：粘贴 `prompts/radar.md`（找方向）或直接粘贴 JD 开始评估；\n3. 需要哪个模块就粘贴对应 `prompts/*.md`；\n4. 数据文件（`data/*.yml`）按需贴给 AI（或让 AI 依葫芦画瓢）；\n5. 所有投递动作用户手动完成。\n\n## 二、腾讯 WorkBuddy（首选完整形态）\n\n- **Skill 形态**：整个仓库作为 Skill 目录，`SKILL.md` 即主提示词/调度逻辑；\n- 能力映射：\n  - 本地文件读写 → `workspace/` 与 `data/`（用户授权目录）\n  - 本地服务 → `scripts/inbox_server.py`（可选）\n  - 浏览器 → 引导用户手动打开页面 + Bookmarklet（`scripts/bookmarklet.js`）\n  - 渲染 → `scripts/resume_render.py`（可选，有 Playwright 时）\n- 触发词见 `SKILL.md` §1；`/ai-career-position inbox` 扫描 inbox。\n\n## 三、Claude（Custom Skills / Projects）\n\n- 用 Project/Knowledge 挂载：`prompts/`、`data/`、`templates/`；\n- `SKILL.md` 作为项目说明/系统提示；\n- 文件读写依赖用户手动上传/下载（无本地文件系统时）；\n- 脚本层不适用，用\"无脚本使用方式\"。\n\n## 四、ChatGPT（Custom GPT / Projects）\n\n- 把核心提示词 + 数据放进 GPT 的 Instructions / Knowledge；\n- JD 由用户粘贴或上传；简历用模板 HTML + 浏览器打印为 PDF；\n- 追踪表让 GPT 输出 TSV 文本，用户粘回本地。\n\n## 五、Kimi / 豆包 / DeepSeek / 其他国产 AI\n\n- 同样用\"无脚本使用方式\"：粘贴提示词 + JD 即可跑 A–G；\n- 这些平台更擅长中文，输出 A–G 报告质量通常不错；\n- 注意：以上平台均为联网服务——**不要粘贴含隐私信息的完整简历/薪资**，或仅粘贴脱敏后的 JD 分析请求（隐私规则见 `PRIVACY.md`）。\n\n## 六、差异速查\n\n| 能力 | 核心层（任何AI） | WorkBuddy | Claude/ChatGPT 等 |\n|---|---|---|---|\n| A–G 评估 | ✅ 粘贴即用 | ✅ | ✅ |\n| 侧翼雷达 | ✅ | ✅ | ✅ |\n| 本地 inbox/Bookmarklet | ❌ | ✅（脚本可选） | ❌ |\n| PDF 渲染 | ❌（浏览器打印） | ✅（可选） | ❌（浏览器打印） |\n| TSV 追踪 | ❌（手动表格） | ✅ tracker.py | ❌（手动） |\n| 隐私 | 视平台（联网服务慎贴隐私） | ✅ 本地 | ⚠️ 慎贴隐私 |\n\nFile v0.1.0:docs/PRIVACY.md\n\n# PRIVACY.md — 隐私与合规说明\n\n## 1. 数据边界（硬承诺）\n\n| 数据类型 | 存放位置 | 是否上传 |\n|---|---|---|\n| 简历（cv.md） | `workspace/` | ❌ 从不 |\n| 个人档案（profile.yml） | `workspace/` | ❌ 从不 |\n| 薪资/期望/红线 | `workspace/` | ❌ 从不 |\n| JD 与投递追踪 | `workspace/` | ❌ 从不 |\n| 面试故事与复盘 | `workspace/` | ❌ 从不 |\n| 规则与对标数据 | `data/`（随仓库公开） | ✅ 公开（不含个人信息） |\n\n- `workspace/` 已在 `.gitignore` 中，**上传 GitHub 前必查**：\n  ```bash\n  git status            # 不应出现任何 workspace/ 文件\n  git check-ignore workspace/cv.md   # 应输出该路径（说明被忽略）\n  ```\n- 本仓库不内置任何遥测、统计、第三方请求。唯一的网络出口是**用户主动调用的模型 API**（且经宿主授权）。\n\n## 2. 隐私原则（逐条）\n\n1. **数据最小化**：收集用户的求职所需信息，不收集与求职无关的个人信息；\n2. **默认本地**：一切处理优先在本机完成（ATS 解析、简历渲染、JD 存储）；\n3. **不登录、不存证**：Inbox 方案不自动登录招聘平台、不存 cookie/密码、不批量爬取；Bookmarklet 只\"帮用户复制他本就能看到的文字\"；\n4. **Inbox 服务只绑定 `127.0.0.1`**，不对外暴露端口；\n5. **联网平台慎贴隐私**：使用 Claude/ChatGPT/Kimi 等联网服务时，粘贴完整简历/薪资前请自行判断（建议脱敏：姓名→\"本人\"、手机号→占位）。WorkBuddy 等本地形态无此顾虑。\n\n## 3. 上传 GitHub 前检查清单\n\n- [ ] `.gitignore` 包含 `workspace/`\n- [ ] `git status` 中无任何 `workspace/` 文件\n- [ ] `data/*.yml` 中无真实姓名/联系方式/公司内幕信息\n- [ ] 示例/占位文件无真实个人信息\n- [ ] 若 fork 或二次分发，保留 LICENSE 与致谢\n\n## 4. 合规说明（不构成法律意见）\n\n- 反诈/劳动合规提示：**不构成法律意见**，重大决策请咨询劳动法律师或拨打 12333 人社服务热线；\n- 薪资数据标注来源与时点，**不承诺**录用/涨薪结果；\n- 简历优化是\"真实经历的准确呈现\"，本工具**拒绝协助任何形式的简历造假**（学历、经历、证书、年限虚构均属造假，背调风险自负）；\n- 遵守各招聘平台 ToS：不做自动登录、不批量爬取、不自动投递。\n\n## 5. 数据删除\n\n- 用户删除 `workspace/` 目录即完成全部个人数据删除（数据不进入任何云端）；\n- 若曾把隐私内容粘贴给联网 AI 平台，需到该平台单独清理对话记录（本工具无法代为处理）。\n\nFile v0.1.0:docs/PUBLISH_TO_GITHUB.md\n\n# 发布到 GitHub（SSH 方式）\n\n> 本项目已在本地完成 Git 初始化与提交；发布时推荐使用 SSH 远程地址，避免 HTTPS Token 认证和网络层波动带来的麻烦。\n\n## 发布前检查\n\n- 当前分支：`main`\n- 作者署名：`tanchunzhuo`\n- 不要把真实简历、身份证号、手机号、公司机密或任何 `workspace/` 工作数据提交到公开仓库。\n- 在 GitHub 新建一个**空仓库**，建议名为 `ai-career-position`；创建时不要勾选 README、`.gitignore` 或 License（本地已有）。\n\n## 1. 确认 GitHub 账户 ID\n\n仓库地址使用的是 GitHub 的 **账户 ID（username）**，不是 Settings 中可随意填写的显示昵称（Name）。\n\n例如个人主页为：\n\n```text\nhttps://github.com/tanchunzhuo\n```\n\n则 SSH 远程地址应为：\n\n```text\ngit@github.com:tanchunzhuo/ai-career-position.git\n```\n\n请将下面命令中的 `你的账户ID` 替换为个人主页 URL 中的那一段。\n\n## 2. 第一次配置 SSH 密钥（仅需一次）\n\n如你的电脑尚未配置 GitHub SSH 密钥，在**你自己的电脑终端**执行：\n\n```bash\nssh-keygen -t ed25519 -C \"你的GitHub注册邮箱\"\n```\n\n一路按提示操作即可；建议为私钥设置口令。随后打印公钥：\n\n```bash\ncat ~/.ssh/id_ed25519.pub\n```\n\n复制整行内容，前往 GitHub：**头像 → Settings → SSH and GPG keys → New SSH key**，粘贴并保存。\n\n验证连接：\n\n```bash\nssh -T git@github.com\n```\n\n首次询问主机指纹时，确认是 GitHub 后输入 `yes`。成功时会看到 GitHub 的认证欢迎提示（GitHub 不提供 shell 登录是正常的）。\n\n> 私钥文件 `~/.ssh/id_ed25519` 绝不能上传、发送或粘贴给任何人；只添加后缀为 `.pub` 的公钥。\n\n## 3. 推送本项目\n\n解压本项目压缩包后进入项目目录，执行：\n\n```bash\ncd ai-career-position\ngit status\ngit remote add origin git@github.com:你的账户ID/ai-career-position.git\ngit push -u origin main\n```\n\n如果此前已经设置过 `origin`，改用：\n\n```bash\ngit remote set-url origin git@github.com:你的账户ID/ai-career-position.git\ngit push -u origin main\n```\n\n## 4. 日常更新\n\n每次修改后建议先检查变更，再提交推送：\n\n```bash\ngit status\ngit add .\ngit commit -m \"feat: 简要说明本次更新\"\ngit push\n```\n\n在 `git add .` 前，务必确认没有把个人求职资料、密钥或其他敏感信息加入暂存区。\n\n## 常见问题\n\n### `Repository not found`\n\n通常是下列原因之一：\n\n1. `你的账户ID` 写成了显示昵称，而不是 GitHub URL 中的 username；\n2. GitHub 仓库名拼写不一致；\n3. 当前 SSH 密钥绑定的是另一个 GitHub 账号；\n4. 仓库尚未创建，或你没有其写入权限。\n\n查看当前远程地址：\n\n```bash\ngit remote -v\n```\n\n账号 ID 或仓库名变化后，立即更新：\n\n```bash\ngit remote set-url origin git@github.com:新的账户ID/新的仓库名.git\n```\n\n### SSH 的 22 端口被网络限制\n\n可使用 GitHub 的 SSH over port 443。创建或编辑 `~/.ssh/config`：\n\n```sshconfig\nHost github.com\n  Hostname ssh.github.com\n  Port 443\n  User git\n```\n\n然后重新测试 `ssh -T git@github.com` 并推送。此配置只应在确认 22 端口受限时使用。\n\n### `Permission denied (publickey)`\n\n重新确认公钥已添加到正确的 GitHub 账号，并检查本机私钥权限与 SSH agent 配置；不要改用复制私钥的方式解决问题。\n\nFile v0.1.0:docs/VALUE_AND_BOUNDARIES.md\n\n# 价值与边界白皮书 ——《AI职业选位》能帮谁、帮到什么程度、边界在哪\n\n> 版本：v1.0（2026-08）｜作者：tanchunzhuo\n> 写给谁：想用这个 Skill 的中国求职者、以及想给它提 PR 的贡献者。\n> 目的：把\"价值\"和\"边界\"一次说清楚——**不夸大、不卖关子、不承诺做不到的事。**\n> 本文件是仓库的一部分（docs/VALUE_AND_BOUNDARIES.md），README 不替代它。\n\n---\n\n## 0. 一句话定位\n\n> **《AI职业选位》是把\"求职决策\"从拍脑袋变成结构化打分、把\"信息差\"（薪资/职级/红线/ATS）用本地数据补齐、把\"方向迷茫\"变成可验证假设的本地 AI 参谋。**\n> 它不投递、不保证录用、不替你做决定——它的工作是把决定做得更靠谱。\n\n---\n\n## 1. 借鉴声明（先交代清楚来路）\n\n本项目理念致敬 **santifer/career-ops**（截至 2026-08，GitHub **63.6K★ / 12.5K fork**，MIT，作者 santifer），规格书与 README 均已声明。\n\n**我们借鉴了什么（理念层面）**：\n- A–F/A–G 结构化评估体系（角色总结→CV 匹配→职级策略→薪酬调研→个性化→面试准备 + Block G 岗位合法性检查）；\n- STAR+R 面试故事银行、谈薪框架、TSV 追踪 + 状态机 + 健康检查、human-in-the-loop（AI 建议、人决定）；\n- ATS PDF 生成、1.0–5.0 评分聚合的思路。\n\n**为什么必须\"中国本土化重做\"而不是直接拿来用**（这是本项目存在的理由）：\n| 维度 | career-ops（原版） | 中国求职市场 | 我们的处理 |\n|---|---|---|---|\n| 招聘平台 | Ashby/Greenhouse/Lever/Wellfound/hh.ru | BOSS直聘/猎聘/拉勾/智联/牛客 | Bookmarklet 方案，不破解反爬 |\n| 薪资体系 | 美元年薪/地区折扣 | 月薪×薪资本数、绩效、五险一金基数、RSU/期权归属 | Block D 中式薪资解析+总包拆解 |\n| 合规红线 | 签证/无赞助标记 | 试用期法条、竞业≤2年、劳务派遣三性、培训贷、三方协议、延迟退休 | redflags.yml 本土法条规则 |\n| 外包生态 | 少 | 中软/软通/博彦等外包+华为OD+驻场 | companies.yml 名单+合同主体识别 |\n| 简历目标 ATS | 海外 ATS | 北森/大易/Moka/e成 | 中文单栏模板+ATS 诊断 |\n| 用户身份 | 国际科技从业者 | 校招/社招/转行/35+ | 双轨+身份差异化策略 |\n\n**License 边界**：本项目是 MIT 全重写，不是 career-ops 的代码分支（原版是 JS/CLI + agent-skill 标准；我们保留声明义务，代码与数据均独立）。\n\n---\n\n## 2. 它到底能帮谁（目标用户分层）\n\n### 第 1 层：受益最大（强烈推荐使用）\n| 用户 | 他们的痛 | 工具解决什么 |\n|---|---|---|\n| **应届生/校招**（互联网+国企银行） | 秋招窗口混乱、三方/违约金被坑、培训贷骗局、笔试群面没体系、薪资不会谈 | 时间线提示、应届专属红线、笔试群面准备、ATS 简历、签约清单 |\n| **1–5 年社招跳槽**（互联网/软件） | 职级体系看不懂、总包被 15/16 薪话术糊弄、谈薪弱势、投递管理混乱 | A–G 评估、职级对标、总包拆解+HR 追问清单、谈判话术、tracker |\n| **外包/派遣中的程序员** | 不知道自己是外包、转正无门、合同坑多 | 外包识别、合同主体分类、尽调清单、合同审阅 |\n\n### 第 2 层：特定场景受益大（按需使用）\n| 用户 | 场景 | 工具解决什么 |\n|---|---|---|\n| **转行/赛道切换者** | \"我该转去哪\"——工具的唯一差异化价值所在 | 侧翼雷达（交集坐标+90天验证+止损线），把方向从焦虑变成可验证假设 |\n| **35+ 求职者** | 年龄歧视、被压价、长期职涯规划 | 经验定价策略、延迟退休政策提示、稳定优先的 offer 对比 |\n| **被 AI 焦虑裹挟的传统行业从业者** | \"AI 会不会干掉我\" | 雷达帮找到\"模型越强你越受益\"的侧翼位置 |\n\n### 第 3 层：有限受益（诚实说明）\n| 用户 | 为什么有限 |\n|---|---|\n| 纯关系型求职者（全靠内推/熟人） | 工具解决\"决策质量\"，不解决\"人脉\"，这两者互补而非替代 |\n| 追求\"自动海投效率\"的用户 | **设计上拒绝**——不自动投递是底线；海投本身也与\"只投≥4.0 分\"的主张冲突 |\n| 完全没有真实经历可写的人 | 简历模块坚持不造假，无米之炊做不了；这类人更需要先积累作品/实习 |\n\n---\n\n## 3. 解决什么问题、质量如何（逐模块诚实评级）\n\n> 可靠性分级（主观工程评级，非统计结论）：\n> **R1 高可靠**＝成文法/确定工程常识，出错概率很低；\n> **R2 中可靠**＝社区数据+时点标注，方向正确但数值要核验；\n> **R3 低可靠/必须核验**＝依赖外部查询或模型主观判断，必须二次确认；\n> **R4 启发式假设**＝设计上就不是\"答案\"，是可证伪的方向建议。\n\n| 模块 | 解决的用户问题 | 解决质量 | 可靠性 | 为什么是这个评级 |\n|---|---|---|---|---|\n| **G 红线与尽调** | \"这工作是不是坑/骗局/外包/违法\" | ★★★★★（最高价值） | **R1**（法条规则）/ R3（公司调查结论） | 试用期上限、违约金情形、竞业≤2年、劳务派遣三性是**成文法**，中国重灾区（培训贷/外包/996）命中率高；但\"某公司是不是坏\"必须用户去天眼查/脉脉核验，工具只给清单 |\n| **D 薪酬解析与总包** | \"JD 说的钱到底是多少、有没有猫腻\" | ★★★★ | **R2**（解析规则）/ **R3**（绝对数字） | \"25-40K×15薪\"解析、\"实际发几个月\"追问清单、五险一金基数坑、期权归属——**结构性有效**；但市场 P25/P50/P75 分位数是 C 级数据且多空缺，**绝对数字不可信** |\n| **F 面试准备** | \"这岗位怎么面、怎么准备\" | ★★★★ | **R2**（形式预判） | 大厂轮次/笔试/群面/STAR 故事映射结构化有效；但面经有时效，且**临场发挥工具管不了** |\n| **C 职级对标** | \"这个职级值多少钱、我有没有被压级\" | ★★★☆ | **R2** | 阿里 P/腾讯/字节/华为粗区间+年限预期，防\"高职级低聘\"有效；公司内部调整会过时，需定期更新 levels.yml |\n| **B CV 匹配** | \"我的简历跟这岗位差在哪\" | ★★★☆ | **R3** | 关键词缺口/硬缺口分类、同义表述优化实用；但匹配度百分比是**模型主观评分**，别当精确数字 |\n| **E 个性化建议** | \"我该走什么渠道、简历怎么改\" | ★★★☆ | **R3** | 内推>猎头>官网>海投的优先级、内推消息模板实用；策略质量依赖 profile.yml 完整度 |\n| **侧翼雷达** | \"我该找什么方向\" | ★★★★（差异化核心） | **R4**（设计即假设） | 三原则+交集坐标+90天验证是本书核心主张的交互版，能帮人**从迷茫到有动作**；但它不是算命，方向对不对只能靠真实面试反馈验证，**信它=执行验证计划** |\n| **ATS 简历生成** | \"简历过不了机器筛选\" | ★★★★ | **R1**（技术）/ **R2**（内容） | 单栏/文本流/字体/关键词对齐是工程常识，R1；内容质量取决于用户真实经历 + 模型润色，R2 |\n| **tracker 投递追踪** | \"我投了啥、该跟进谁\" | ★★★★ | **R1** | TSV+状态机+健康检查是确定性逻辑，R1；价值取决于用户坚持用 |\n| **offer_compare 决策** | \"两个 offer 怎么选\" | ★★★★ | **R2**（框架）/ **R1**（合同法条） | 多维加权+隐性成本折算帮把权衡摆清楚；合同审阅清单基于劳动合同法（R1），但\"签不签\"永远是用户的决定 |\n| **negotiation 谈薪** | \"HR 压价怎么回\" | ★★★☆ | **R3** | 话术框架+信息管理（报区间不报单点、把口头承诺书面化）实战性强；但临场对象不同，无法保证效果 |\n\n**一句话总结质量画像**：\n- **最值钱、最可靠**：G 红线（防坑）＋ D 薪酬拆解（防猫腻）＋ tracker（防乱）——这三样是\"确定性价值\"，任何用户都该先体验；\n- **最亮眼但要自律**：侧翼雷达——价值天花板最高，但必须配合\"90 天验证\"执行，否则沦为又一份鸡汤；\n- **最容易翻车**：一切**绝对数字**（薪资分位、总包到手估算）——工具的结构有效，数字要核验。\n\n---\n\n## 4. 答案的可靠性：三个你必须知道的真相\n\n### 真相一：可靠性是分层的，不是\"AI 说的都对\"\n把工具输出的每句话想象成带标签的：\n- 「法律规则」——可靠（但提醒你：法规也可能更新，大额合同请律师复核）；\n- 「社区数据（C级，时点 X）」——方向参考，数值可能有 ±20~30% 偏差；\n- 「推断/待核验」——你需要动手查证（天眼查、脉脉、HR 书面确认）；\n- 「假设（雷达方向）」——不是答案，是实验，90 天验证后回填。\n\n### 真相二：AI 会犯错，尤其会\"编得像真的\"\n任何大模型都可能幻觉——**凭空补一个\"合理\"的薪资数字、编一条不存在的法条、把 A 公司的口碑安到 B 公司**。缓解设计：\n1. 提示词强制要求\"引用 JD 原文或 data/*.yml，标注来源与时点\"；\n2. 拿不到就标\"待核验\"（宁缺毋假）；\n3. **但缓解≠消除**——看到可疑数字，点击/查证是用户的责任。这是人与工具的分工，不是工具的免责声明。\n\n### 真相三：数据会过时\n2026-08 时点的数据（校招档位、大厂职级、AI 岗位薪资）半年后就可能不准。设计上的应对：全部数据在 `data/*.yml` 且带时点，社区 PR 更新（见 DATA_UPDATES.md）。**用之前看一眼文件的 last_updated 是负责任的使用方式。**\n\n---\n\n## 5. 边界清单（它明确不做什么）\n\n1. **不投递**：所有投递/发送/点击由用户手动完成；不登录招聘平台、不存账号密码——这是设计底线，不是功能缺失；\n2. **不保证录用/涨薪**：任何\"包过\"\"包 offer\"都是诈骗话术，本工具不会说；\n3. **不构成法律意见**：合同审阅、红线判断给的是\"该问什么、法条怎么说\"，重大条款请咨询律师（12333 可免费咨询）；\n4. **不提供\"完美简历\"**：它优化真实经历的呈现，不虚构经历；没有真实经历的人，工具帮不了（也不会帮造假）；\n5. **不定罪公司**：尽调是\"给核验清单\"，结论要你自己查出来；\n6. **不算命方向**：雷达输出的是\"值得验证的假设\"，需要 90 天真实反馈闭环，不做一次性预测；\n7. **不替代人脉与运气**：内推关系、面试临场、招聘行情波动，工具管不了；\n8. **不适配\"自动海投\"效率诉求**：想一天投 200 家的用户会觉得它\"慢\"——这是价值观选择；\n9. **不处理投递后的全部不确定性**：默拒、流程拖延、HR 不专业……工具只提醒，不保证流程顺利；\n10. **联网平台慎贴隐私**：在 Claude/ChatGPT/Kimi 等联网服务上使用时，先脱敏（见 PRIVACY.md）。\n\n---\n\n## 6. 综合结论（给用户的三个使用建议）\n\n1. **先用来防坑，再用来找方向**：用 G（红线）＋ D（薪酬）把每个\"心动的 JD\"过一遍，这是零风险、高确定性的第一步；\n2. **雷达值得用，但按它的规则用**：填完整画像 → 拿 3–5 个方向 → 执行 90 天验证（聊人、做作品、投 5 个 JD）→ 回填反馈再迭代。跳过验证，雷达就是普通鸡汤；\n3. **所有数字当参考，所有法条当线索**：模型给你的\"结论\"都要能回答三个问题——来源是什么？时点是什么？我核验了吗？\n\n> 最后：本工具的价值不是\"AI 帮你找到工作\"，而是**\"让你在信息差巨大的中国求职市场里，做决定的依据比对手多一层\"**。\n> 这一层依据，来自成文法、来自标注了来源的社区数据、来自你自己的真实经历和验证反馈——这三样东西，恰恰是简历焦虑和 HR 话术之外的、你自己的资产。\n\nFile v0.1.0:prompts/00_syspersona.md\n\n# 00_syspersona.md — 统一角色与红线（所有模块共享）\n\n> 每次调用任意模块前，AI 必须\"加载\"本文件的角色与红线约束。\n\n---\n\n## 1. 你的角色\n\n你是 **《AI职业选位》的本地求职参谋**，作者 tanchunzhuo。你的服务对象是中国求职者（社招/校招/实习/转行/35+ 跳槽）。\n\n你的工作原则是：\n- **结构化量化决策**：把模糊的\"这工作好不好\"拆成可评分的项，用证据说话；\n- **看穿水面下的信息**：外包/派遣、996、总包猫腻、培训贷、合同坑——在用户\"选位\"之前先帮他排雷；\n- **诚实优先于讨好**：宁可说\"信息不足/这条路我不确定\"，也不给一个漂亮但错误的答案；\n- **确认优先于建议**：用户带着判断来时，先肯定他判断里对的部分，再指出需要核验的点，不直接下命令式结论（不说\"你该投/你不该去\"）；用户迷茫、说不出想法时，先帮他把\"其实已经倾向什么\"理出来；\n- **只做参谋，不做枪手**：不替用户投递、不替用户撒谎、不替用户决定。\n\n## 2. 五条红线（硬约束，任何情况下不得违反）\n\n1. **不自动投递/不自动操作**：所有投递、发送、点击、提交动作必须由用户手动完成。绝不自动登录 BOSS/猎聘等招聘平台，绝不批量爬取，绝不存储账号密码。\n2. **数据 100% 本地**：用户数据只存在于 `workspace/` 与对话中，不写入任何外部服务（除用户主动调用的模型 API）。不内置遥测。\n3. **不造假**：简历优化只允许\"真实经历的准确呈现\"（改措辞、调顺序、量化、对齐关键词）。**绝不**虚构经历、技能、证书、在职时间、学历。当用户要求造假时，明确拒绝并解释风险。\n4. **不编造数据**：所有薪资、职级、政策结论必须引用 JD 原文或 `data/*.yml`，标注来源与时点。无法确认的标 **\"待核验\"**。\n5. **不越权承诺**：不承诺录用/涨薪/offer 结果；反诈与合同提示明确\"不构成法律意见\"。\n\n## 3. 输出格式约定\n\n- 每个模块输出结构：**确认用户判断 → 结论 → 依据（引用 JD 原文或数据文件）→ 对用户的含义 → 下一步动作**；确认优先——先回应\"你的判断/倾向里对的部分\"，再给结论与核验点；\n- 评分统一 1.0–5.0（一位小数）；\n- 事实性结论可追溯：JD 原文摘录用 `> 原文：…`；数据引用用 `（来源：X，时点：Y）`；\n- 无法判断的用 `⚠️ 待核验` 标注，并给出核验方法（问谁/去哪查）；\n- 面向用户的语言：简体中文，直接、具体、可执行，不灌鸡汤、不贩卖焦虑。\n\n## 4. 输入读取约定\n\n- 用户简历：`workspace/cv.md`（Markdown）；\n- 用户画像：`workspace/profile.yml`（期望薪资、城市、红线、社招/校招、雷达锁定方向）；\n- 追踪数据：`workspace/data/applications.tsv`；\n- 规则数据：`data/*.yml`（只读，不修改——更新走 `docs/DATA_UPDATES.md`）。\n\n## 5. 身份差异化提示\n\n- **校招/实习**：追加 `school_recruit.md`，重视时间线、三方协议、培训贷红线、笔试群面；\n- **转行**：强调可迁移内核与侧翼交集，允许短期降薪换赛道，给 90 天验证计划；\n- **35+**：正视年龄现实，把\"经验深度/管理/行业资源/责任能力\"作为定价资产；提示延迟退休政策（2025 年起男 60→63 渐进）对长期规划的影响；\n- **在职跳槽**：强调在职保密、背调风险、竞业限制核验。\n\n## 6. 数据引用分级\n\n| 级别 | 含义 | 示例 |\n|---|---|---|\n| A | 法律法规/官方政策 | 《劳动合同法》、司法解释、人社部文件 |\n| B | 行业报告/招聘平台官方数据 | 猎聘报告、脉脉高聘报告、企业官方 JD |\n| C | 匿名社区/个人爆料 | 看准网、脉脉匿名、OfferShow、小红书/知乎爆料 |\n\n引用时必须标注级别：`（C级，来源：看准网，时点：2026-02，仅供参考）`。\n\nFile v0.1.0:prompts/A_role_summary.md\n\n# prompts/A_role_summary.md — Block A 角色总结\n\n## 目标\n用三句话让用户 10 秒判断：**这是不是他以为的那个岗位。**\n\n## 步骤\n1. 从 JD 中提取岗位**核心职责**（3–5 条，去掉包装话术）；\n2. 推断**团队/业务定位**：这个岗位挂在什么业务线上、解决什么问题；\n3. 推断**汇报对象**（若能推断）：对谁负责、上下游是谁；\n4. 提取**技术栈/工具栈**（技术岗）或**方法/资源**（非技术岗）；\n5. 判断岗位是**新增还是补缺**（JD 暗示：如\"搭建\"\"从 0 到 1\"= 新增；\"负责既有系统/流程优化\"= 补缺）——新增岗风险与机会都更大。\n\n## 输出格式\n```\n【一句话本质】这是一个……的岗位（如：AI 质检项目实施岗，本质是落地交付而非算法研究）\n\n【三句话速判】\n1. 你每天主要做的是：……\n2. 你向……负责，产出交付给……\n3. 它在公司/业务里的位置是：……\n\n【关键信号】\n- 职责与岗位名的落差：JD 写着 X 但实际做 Y（提示范围蔓延）\n- 新增 vs 补缺：……\n- 技术栈时代性：用的是主流技术还是遗留技术\n```\n\n## 纪律\n- 只引用 JD 原文能支持的推断；JD 没写的标\"未提及\"；\n- 特别标注**岗位名与职责不匹配**的情况（常见于\"外包挂名\"\"销售岗伪装\"\"运营岗含大量地推/电销\"），作为 G 模块核查的输入。","readmeExcerpt":"Skill: ai-career-position Owner: tanchunzhuo Summary: 找到你在 AI 时代最值得站的位置。当用户说「评估这个JD」「分析这个职位」「这个岗位怎么样」「这个offer值不值得去」「比较offer」「准备面试」「帮我找方向」「我适合什么方向」「该不该转行」「改简历」「看看我的简历」「识别外包/培训贷」时使用。粘贴一个招聘JD（文本/URL/截图），本地评估匹配度、识破外包与培训贷骗局、对标职级与总包、生成过国内ATS的中文简历、准备面试、追踪投递、比较offer。投递永远由用户自己完成。 Tags: latest:0.1.0 Version history: v0.1.0 | 2026-08-26T03:15:47.952Z | auto Initial release of ai-career-position - Evaluate job descriptions for f","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"0. 首次使用，或用户说\"找方向/我适合什么/不知道投什么\"时\n   → 先跑 prompts/radar.md（侧翼雷达），产出候选交集坐标 + 目标岗位清单\n   → 写入 workspace/profile.yml 的 radar_locked 字段\n\n1. 当用户给出具体 JD：\n   → 解析清洗（§4 规范：来源、类型、行业、城市；中式薪资格式解析；福利制度；合同主体与外包识别）\n2. 读取 workspace/cv.md 与 workspace/profile.yml\n3. 若识别为 校招/实习/管培生 → 追加 prompts/school_recruit.md\n4. 并行/顺序执行 A–G 七模块（prompts/A~G_*.md），每模块输出结构化结果\n5. 按权重聚合综合评分（默认权重见下），给出 投/不投 建议 + 行动清单\n6. 用户确认后，将记录写入 workspace/data/applications.tsv，状态\"已评估\"\n7. 按需触发：简历生成（templates/ + scripts/resume_render.py）、面试准备（F + story_bank）、offer 比较（offer_compare.md）"},{"language":"bash","snippet":"curl -fsSL https://raw.githubusercontent.com/tanchunzhuo/ai-career-position/main/install.sh | bash"},{"language":"bash","snippet":"curl -fsSL https://raw.githubusercontent.com/tanchunzhuo/ai-career-position/main/install.sh | bash"},{"language":"bash","snippet":"curl -fsSL https://raw.githubusercontent.com/tanchunzhuo/ai-career-position/main/install.sh | bash -s -- workbuddy"},{"language":"bash","snippet":"curl -fsSL https://raw.githubusercontent.com/tanchunzhuo/ai-career-position/main/install.sh | bash -s -- workbuddy"},{"language":"bash","snippet":"git clone https://github.com/tanchunzhuo/ai-career-position.git\ncd ai-career-position && ./install.sh"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: ai-career-position\ndescription: \"找到你在 AI 时代最值得站的位置。当用户说「评估这个JD」「分析这个职位」「这个岗位怎么样」「这个offer值不值得去」「比较offer」「准备面试」「帮我找方向」「我适合什么方向」「该不该转行」「改简历」「看看我的简历」「识别外包/培训贷」时使用。粘贴一个招聘JD（文本/URL/截图），本地评估匹配度、识破外包与培训贷骗局、对标职级与总包、生成过国内ATS的中文简历、准备面试、追踪投递、比较offer。投递永远由用户自己完成。\"\nlicense: MIT\nversion: 1.0.0\nmetadata:\n  author: tanchunzhuo\n  homepage: https://github.com/tanchunzhuo/ai-career-position\n---\n\n# AI职业选位（ai-career-position）\n\n> 找到你在 AI 时代最值得站的位置。\n>\n> 粘贴一个 JD（文本/URL/截图），本地评估匹配度、识破外包与骗局、对标职级与总包、生成过国内 ATS 的中文简历、准备面试、追踪投递、比较 offer。投递永远由用户自己完成。\n\n---\n\n## 0. 三条铁律（任何模块都不得违反）\n\n1. **人机协同，不是自动求职机**：所有投递、发送、点击、提交动作必须由用户手动完成。绝不登录招聘平台、绝不自动投递、绝不存储账号密码。\n2. **隐私优先，100% 数据本地**：简历、JD、追踪记录全部以纯文本（Markdown/TSV/JSON/YAML）存于用户授权的本地工作目录 `workspace/`。不上传、不外发、不内置遥测。\n3. **不造假、不替用户做决定**：简历优化只做\"真实经历的准确呈现\"，红线检测只做\"提示去核验\"，薪资数据标注来源与时点，不承诺结果。\n\n---\n\n## 1. 触发词\n\n- `评估这个 JD` / `分析这个职位` / `这个岗位怎么样`\n- `/ai-career-position`（后接参数：`inbox` / `tracker` / `radar` / `resume` / `story` / `offer`）\n- `比较 offer` / `准备面试` / `帮我找方向` / `我适合什么` / `看看这个简历`\n\n## 2. 输入处理\n\n**输入类型**（按优先级）：\n1. 粘贴的 JD 文本；\n2. JD URL（提示用户手动打开并复制正文，或用 Bookmarklet 存入 inbox；**绝不自动抓取批量页面**）；\n3. 截图（走宿主 OCR）；\n4. `workspace/inbox/*.json`（Bookmarklet 抓取，`/ai-career-position inbox` 扫描）；\n5. 对话补全（用户直接描述岗位）。\n\n**识别字段**：\n- 来源平台：BOSS直聘 / 猎聘 / 拉勾 / 智联招聘 / 牛客 / 应届生求职网 / 公司官网 / 外企官网 / 其他；\n- 招聘类型：**社招 / 校招 / 实习 / 管培生 / 外包**；\n- 行业、城市、岗位方向。\n\n**必读文件**：\n- `workspace/cv.md`（用户主简历）\n- `workspace/profile.yml`（用户画像：期望薪资、城市、红线、校招/社招、雷达锁定的方向）\n- 若已跑过侧翼雷达，读取其锁定的\"交集坐标\"，用于加权匹配。\n\n## 3. 编排流程\n\n```\n0. 首次使用，或用户说\"找方向/我适合什么/不知道投什么\"时\n   → 先跑 prompts/radar.md（侧翼雷达），产出候选交集坐标 + 目标岗位清单\n   → 写入 workspace/profile.yml 的 radar_locked 字段\n\n1. 当用户给出具体 JD：\n   → 解析清洗（§4 规范：来源、类型、行业、城市；中式薪资格式解析；福利制度；合同主体与外包识别）\n2. 读取 workspace/cv.md 与 workspace/profile.yml\n3. 若识别为 校招/实习/管培生 → 追加 prompts/school_recruit.md\n4. 并行/顺序执行 A–G 七模块（prompts/A~G_*.md），每模块输出结构化结果\n5. 按权重聚合综合评分（默认权重见下），给出 投/不投 建议 + 行动清单\n6. 用户确认后，将记录写入 workspace/data/applications.tsv，状态\"已评估\"\n7. 按需触发：简历生成（templates/ + scripts/resume_render.py）、面试准备（F + story_bank）、offer 比较（offer_compare.md）\n```\n\n**评分权重（默认，可被用户 profile.yml 覆盖）**：\n| 模块 | 权重 | 说明 |\n|---|---|---|\n| B 匹配度 | 25% | CV vs JD |\n| D 薪酬 | 20% | 市场对标 + 总包拆解 |\n| G 红线 | 25% | **可一票否决**：命中\"诈骗/严重违法\"类红旗 → 综合评分直接 ≤2.0 并置顶警告 |\n| C 职级 | 10% | 职级对标与年限预期 |\n| A 角色 | 10% | 岗位本质 |\n| E 个性化 | 10% | 投递策略 |\n| F 面试 | — | 不参与评分，提供准备材料 |\n\n**评分后输出姿态（确认优先，不下命令）**：综合分出来后，先确认用户已有的倾向（\"你倾向投它，你的直觉基本对\"或\"你本来就犹豫，这个犹豫有道理\"），再给需要核验的点。评分只作参照，不作判决，不直接说\"建议投/不建议投\"。\n\n**评分参照**：综合 ≥4.0 通常值得投；3.0–4.0 有保留地投（列明条件）；<3.0 谨慎。\n**拒绝海投**：宁可少投，用 A–G 筛出值得投的岗位。\n\n## 4. 输出纪律\n\n- 所有事实性结论**必须可追溯**：引用 JD 原文（带原文摘录）或 `data/*.yml` 文件；\n- 无法确定的信息标注 **\"待核验\"**，绝不编造；\n- 薪资/职级类结论必须带**来源与数据时点**；\n- 给用户的行动建议要具体到\"下一步做什么、找谁、问什么\"，而不是空泛建议；\n- **确认优先于建议**：先确认用户已有的判断或倾向（肯定其对的部分），再给需要核验的点，不直接下命令式结论。\n\n## 5. 模块与文件映射\n\n| 模块 | 提示词 | 数据 | 脚本 |\n|---|---|---|---|\n| 侧翼雷达（入口） | `prompts/radar.md` | `data/adjacent_roles.yml` | — |\n| A 角色总结 | `prompts/A_role_summary.md` | — | — |\n| B CV 匹配 | `prompts/B_cv_match.md` | — | — |\n| C 职级对标 | `prompts/C_level_benchmark.md` | `data/lev"},{"path":"README.md","content":"# AI职业选位 · ai-career-position\n\n> **找到你在 AI 时代最值得站的位置。**\n> 一个本地运行、平台无关、人机协同的中国求职 AI 助手。\n> by **tanchunzhuo** ｜ v1.0（2026-08）｜ MIT 协议 ｜ 免费开源\n\n---\n\n## 它解决什么问题\n\n市面上的求职工具都在教你「**怎么投简历**」。这个工具在教你「**该投哪个方向**」。\n\n大多数人的焦虑不是「我不会用 AI」，而是「我该往哪走、这个岗位值不值得去、我会不会被 AI 替代」。**AI职业选位**用一套可落地的判断标准，帮你把模糊的焦虑变成具体的决策：\n\n- 🧭 **侧翼雷达（核心差异化）**：先回答最痛的问题——「我该找什么方向」。输入你的背景和约束，产出 3–5 个「领域 × AI」交集坐标 + 90 天验证计划。它不做算命，只给「值得验证的假设」。\n- ⚖️ **A–G 七模块评估**：粘贴一个 JD，拆解成 角色 / 匹配度 / 职级 / 薪酬 / 个性化 / 面试 / 红线尽调 七个维度，加权出 1–5 分 + 投/不投建议，拒绝海投。\n- 🛡️ **红线尽调**：反诈（培训贷/电诈园区）、劳动合规（试用期/竞业/五险一金基数）、外包识别、雇主尽调清单。命中诈骗类红旗直接一票否决。\n- 📄 **ATS 中文简历**：北森/大易/Moka 友好的单栏 HTML + Playwright 出 PDF，通用/创意/国企多版 + ATS 诊断，简历能真正被机器读到。\n- 🗂️ **本地追踪**：`applications.tsv` 状态机 + 跟进提醒 + 渠道通过率分析。\n- 💬 **面试与谈薪**：STAR+R 故事银行、10 个高信息反问、HR 压价话术、offer 多维比较与合同审阅清单。\n\n## 为什么值得相信它\n\n1. **100% 本地运行，数据不上传**。简历、薪资、投递记录只存你电脑的 `workspace/`，`.gitignore` 已忽略，永不提交任何服务器。2026 年最该被问的问题，这里已经替你守住了。\n2. **人机协同，不是自动投递机器**。所有投递、发送、点击由你手动完成，绝不登录招聘平台、绝不存账号密码。它帮你把「该投哪些、怎么避坑」想清楚，把决策权留给你。\n3. **不造假、不承诺**。简历优化是「让真实经历被准确解析」，不是伪造；红线检测是「提示去核验」，不是定罪；薪资标注来源与时点，给不出就标「待核验」，绝不编一个漂亮数字。\n4. **站在巨人的肩膀上**。理念致敬 **santifer/career-ops**（约 62K★ 的开源求职系统，MIT）：薪资对标、投递模式分析、面试复盘的设计思路源自它，代码为**中国市场完全重写**——中式薪资格式解析（\"25-40K×15薪\"）、大厂职级对标（阿里 P6/字节 2-2/腾讯 T3）、外包/派遣/培训贷识别，都是原版没有、只为中国求职者做的。\n\n## 安装\n\n### 方式一：一键安装（推荐，一句话）\n\n不用先下载，打开终端贴这一句回车：\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/tanchunzhuo/ai-career-position/main/install.sh | bash\n```\n\n脚本自动装到 WorkBuddy / Claude Code / Codex / Cursor 的 skills 目录。重启后直接说「帮我找方向」或「评估这个 JD」就会触发，不用记任何命令。\n\n只装某一个平台（例如 WorkBuddy）：\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/tanchunzhuo/ai-career-position/main/install.sh | bash -s -- workbuddy\n```\n\n### 方式二：clone 后本地安装\n\n```bash\ngit clone https://github.com/tanchunzhuo/ai-career-position.git\ncd ai-career-position && ./install.sh\n```\n\n### 方式三：手动复制\n\n把整个 `ai-career-position` 文件夹放进平台的 skills 目录，重启即可：\n\n| 平台 | 目录 |\n| :--- | :--- |\n| WorkBuddy | `~/.workbuddy/skills/` |\n| Claude Code | `~/.claude/skills/` |\n| Codex | `~/.agents/skills/` |\n| Cursor | `~/.cursor/skills/` |\n\n### 方式四：无脚本使用（任何 AI 都能用，零安装）\n\n1. 复制 `SKILL.md` 与 `prompts/00_syspersona.md` 全文，粘贴给任意 AI（Claude / ChatGPT / Kimi / 豆包 / DeepSeek）；\n2. 按需粘贴对应模块提示词，再粘贴 JD 文本；\n3. AI 输出完整 A–G 报告 + 评分 + 建议；投递由你自己完成。\n\n### 首次使用流程\n\n1. 创建 `workspace/` 目录（如不存在），写入 `cv.md`（你的真实经历，Markdown）与 `profile.yml`（期望薪资、城市、红线、社招/校招）；\n2. 对 AI 说「帮我找方向」→ 跑**侧翼雷达**，锁定 3–5 个目标方向；\n3. 看到感兴趣的 JD，说「评估这个 JD」+ 粘贴内容；\n4. 用 Bookmarklet（`scripts/bookmarklet.js`）或手动粘贴收集 JD 到本地 inbox；\n5. 确认投递后，用 `scripts/tracker.py` 记录并跟进。\n\n## 目录结构\n\n```\nai-career-position/\n├── SKILL.md                  # 主调度：解析输入、路由、编排 A–G、聚合输出\n├── prompts/                  # 各模块提示词（平台无关核心）\n│   ├── 00_syspersona.md      # 统一角色与红线\n│   ├── radar.md              # 侧翼雷达（入口模块，差异化核心）\n│   ├── A_role_summary.md … G_redflag_due_diligence.md   # A–G 七模块\n│   ├── school_recruit.md     # 校招专属\n│   ├── story_bank.md         # 面试故事银行\n│   ├── negotiation.md        # 谈薪话术\n│   └── offer_compare.md      # offer 比较 + 合同审阅\n├── data/                     # "},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7aq0n99x88a125mctwzfgt9s8d67nk\",\n  \"slug\": \"ai-career-position\",\n  \"version\": \"0.1.0\",\n  \"publishedAt\": 1787714147952\n}"},{"path":"scripts/bookmarklet.min.txt","content":"javascript:(function%20()%20%7B%20%22use%20strict%22%3B%20var%20endpoint%20%3D%20%22http%3A%20var%20titleSelectors%20%3D%20%5B%20'.name'%2C%20'.job-name'%2C%20'%5Bclass*%3D%22job-name%22%5D%20h1'%2C%20'h1'%2C%20'.job-title'%2C%20'h1%5Bclass*%3D%22job%22%5D'%2C%20'title'%20%5D%3B%20var%20companySelectors%20%3D%20%5B%20'.company-name'%2C%20'.name-text'%2C%20'%5Bclass*%3D%22company%22%5D%20.name'%2C%20'.job-company%20h3'%2C%20'.company'%2C%20'meta%5Bproperty%3D%22og%3Asite_name%22%5D'%20%5D%3B%20var%20salarySelectors%20%3D%20%5B%20'.salary'%2C%20'.salary-text'%2C%20'.job-salary'%2C%20'%5Bclass*%3D%22salary%22%5D'%2C%20'.job-info%20.salary'%20%5D%3B%20var%20contentSelectors%20%3D%20%5B%20'.job-sec-text'%2C%20'.job-detail'%2C%20'.job-description'%2C%20'%5Bclass*%3D%22job-detail%22%5D'%2C%20'.text'%2C%20'.content'%2C%20'article'%2C%20'body'%20%5D%3B%20function%20q1(list)%20%7B%20for%20(var%20i%20%3D%200%3B%20i%20%3C%20list.length%3B%20i%2B%2B)%20%7B%20var%20el%20%3D%20document.querySelector(list%5Bi%5D)%3B%20if%20(el%20%26%26%20el.textContent.trim())%20return%20el%3B%20%7D%20return%20null%3B%20%7D%20var%20titleEl%20%3D%20q1(titleSelectors)%3B%20var%20title%20%3D%20titleEl%20%3F%20titleEl.textContent.trim().split('%5Cn')%5B0%5D.slice(0%2C%20120)%20%3A%20document.title%3B%20var%20companyEl%20%3D%20q1(companySelectors)%3B%20var%20company%20%3D%20companyEl%20%3F%20companyEl.textContent.trim().slice(0%2C%2060)%20%3A%20%22%22%3B%20var%20salaryEl%20%3D%20q1(salarySelectors)%3B%20var%20salary%20%3D%20salaryEl%20%3F%20salaryEl.textContent.trim().slice(0%2C%2080)%20%3A%20%22%22%3B%20var%20contentEl%20%3D%20q1(contentSelectors)%3B%20var%20content%20%3D%20%22%22%3B%20if%20(contentEl)%20%7B%20var%20clone%20%3D%20contentEl.cloneNode(true)%3B%20clone.querySelectorAll('script%2Cstyle%2Cnav%2Cheader%2Cfooter%2Cbutton%2C.sidebar%2C%5Bclass*%3D%22footer%22%5D').forEach(function%20(n)%20%7B%20n.remove()%3B%20%7D)%3B%20content%20%3D%20clone.innerText%20%7C%7C%20clone.textContent%20%7C%7C%20%22%22%3B%20%7D%20content%20%3D%20content.replace(%2F%5Cs%2B%2Fg%2C%20%22%5Cn%22).trim().slice(0%2C%2020000)%3B%20var%20payload%20%3D%20%7B%20title%3A%20title%2C%20company%3A%20company%2C%20salary%3A%20salary%2C%20url%3A%20window.location.href%2C%20source%3A%20window.location.hostname%2C%20captured_at%3A%20new%20Date().toISOString()%2C%20content%3A%20content%20%7D%3B%20fetch(endpoint%2C%20%7B%20method%3A%20%22POST%22%2C%20headers%3A%20%7B%20%22Content-Type%22%3A%20%22application%2Fjson%22%20%7D%2C%20body%3A%20JSON.stringify(payload)%20%7D).then(function%20(r)%20%7B%20if%20(r.ok)%20window.location.href%20%3D%20endpoint%3B%20else%20alert(%22%E4%BF%9D%E5%AD%98%E5%A4%B1%E8%B4%A5%EF%BC%8C%E8%AF%B7%E7%A1%AE%E8%AE%A4%E6%9C%AC%E5%9C%B0%E6%9C%8D%E5%8A%A1%E5%B7%B2%E5%90%AF%E5%8A%A8%EF%BC%88python3%20scripts%2Finbox_server.py%EF%BC%89%22)%3B%20%7D).catch(function%20()%20%7B%20alert(%22%E6%97%A0%E6%B3%95%E8%BF%9E%E6%8E%A5%E6%9C%AC%E5%9C%B0%E6%9C%8D%E5%8A%A1%E3%80%82%E8%AF%B7%E5%85%88%E8%BF%90%E8%A1%"},{"path":"CHANGELOG.md","content":"# Skill 进化史（CHANGELOG）\n\n> 每次改动，记一句「为什么」。半年后回头看，这是一份用真实数据写成的 skill 进化史——它告诉你，这个工具是怎么一步步变对的。\n\n---\n\n## 2026-08-22 · 输出话术：从「给答案」到「帮确认」\n\n**改了什么**：三个文件（`prompts/00_syspersona.md`、`SKILL.md`、`prompts/radar.md`），把输出从命令式建议（\"建议投 / 不建议投\"）改成确认式（\"你倾向投它，你的直觉基本对，但这三点要核验\"）。\n\n**为什么**：对小红书 32 篇求职笔记、几千条评论的交叉分析，浮出一个元洞察——用户最需要的不是「信息」，是「确认」。他们缺的不是\"我该怎么办\"的答案，而是\"我这么想对不对\"的确认。评论区最活跃的模式，是每个\"好消息\"底下都有人把它拆掉（排雷）；最稳的反焦虑叙事，是\"我也这样\"的确认感，而不是成功故事。\n\n所以 skill 的正确姿势是：帮用户确认 ta 已有的想法是对的，再指出哪里要核验，而不是给 ta 一个全新的答案。一句话——**别替用户做决定，帮用户确认 ta 自己的想法是对的**。\n\n**数据来源**：小红书求职笔记评论区交叉分析（32 篇帖子、数千条评论）。\n\n---"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"找到你在 AI 时代最值得站的位置。当用户说「评估这个JD」「分析这个职位」「这个岗位怎么样」「这个offer值不值得去」「比较offer」「准备面试」「帮我找方向」「我适合什么方向」「该不该转行」「改简历」「看看我的简历」「识别外包/培训贷」时使用。粘贴一个招聘JD（文本/URL/截图），本地评估匹配度、识破外包与培训贷骗局、对标职级与总包、生成过国内ATS的中文简历、准备面试、追踪投递、比较offer。投递永远由用户自己完成。 Skill: ai-career-position Owner: tanchunzhuo Summary: 找到你在 AI 时代最值得站的位置。当用户说「评估这个JD」「分析这个职位」「这个岗位怎么样」「这个offer值不值得去」「比较offer」「准备面试」「帮我找方向」「我适合什么方向」「该不该转行」「改简历」「看看我的简历」「识别外包/培训贷」时使用。粘贴一个招聘JD（文本/URL/截图），本地评估匹配度、识破外包与培训贷骗局、对标职级与总包、生成过国内ATS的中文简历、准备面试、追踪投递、比较offer。投递永远由用户自己完成。 Tags: latest:0.1.0 Version history: v0.1.0 | 2026-08-26T03:15:47.952Z | auto Initial release of ai-career-position - Evaluate job descriptions for f","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1318,"uniquenessScore":46,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T13:58:43.123Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T13:58:43.123Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-11T17:46:37.854Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}