xbskill 岗位知识补充
调用前先读 ../xbskill/references/interaction-settings.md,按用户已选调用强度和保存提示执行;明确指定其他技能或拒绝 XB 时退出。未初始化时只允许配置与说明,禁止代选或先执行后确认。
把岗位知识做成会参加当前任务的 RoleKnowledgeUnit。运行时返回最小 RoleKnowledgePacket 给当前专科;建设时把真实案例、固定来源、边界和现实反馈做成可校验单元。
当前内置目录 2.0.0 含 15 个 active 单元,覆盖数据、产品研发、职能、金融投研、营销五类岗位族;upstream_sync.py 能对固定提交、许可、allowlist 与证据坐标做离线校验/在线检查并只生成不可信候选,真正更新仍必须经过单元翻译、四类陌生试跑、独立八门评审和全目录激活门。
直接调用本 Skill 时先读 ../xbskill/references/contracts.md、../xbskill/references/resolution-standard.md 与 ../xbskill/references/runtime-compatibility.md。对象、字段、错误码和持久化约定见 references/role-knowledge-protocol.md;内置单元见 references/builtin-role-knowledge.json,目录、运行时 Packet/Trace、冻结证据与内置来源注册表结构分别见 references/role-knowledge.schema.json、references/role-knowledge-runtime.schema.json、references/role-knowledge-evidence.schema.json 和 references/builtin-source-registry.schema.json。上游仓库固定账及其结构见 references/upstream-role-sources.json 与 references/upstream-role-sources.schema.json。用 scripts/role_knowledge.py 校验和匹配,用 scripts/upstream_sync.py 检查或生成外部候选;不能只凭阅读目录、下载仓库或显示来源名声称知识已参与。
以下命令里的 <PYTHON3> 按运行时兼容契约解析为当前平台的 Python 3.10+ 启动命令。契约缺失或解析失败时,报告精确错误并停止脚本操作。
触发与核心模型
有两种调用方式:
- 运行支持:当前
xb-*专科已经选定,岗位知识会改变本题的专业观察或做法。此时本 Skill 是支持子调用,返回包后结束;当前专科不切换、不让用户重述上下文。 - 知识补充:用户明确要新增、修订、失效或回测岗位知识。此时本 Skill 可成为当前专科,完成“缺口—来源—单元—试跑—激活—回流”的建设闭环。
核心链:
真实岗位任务 → 知识缺口 → 固定证据/案例 → 候选单元 → 匹配试跑 → 独立评审 → 激活 → 当前任务使用 → 现实结果回流 → 修订/失效
岗位名、企业类别、资历、GitHub stars 或工具功能列表都不能直接生成专业结论。实际责任、当前问题信号、生命周期和证据适用范围共同决定是否命中。
可观察信号词典
以下任一信号出现时,检查是否需要岗位知识包:
- 同一个表面任务在不同岗位会有不同责任、失败语义、产物或验收。
- 用户要求“按专业做法”“补充这个岗位的知识”“把这次经验沉淀进去”。
- 通用建议能说通,但无法回答先看什么、怎样区分原因、谁能决定、交付什么、怎样知道现实有效。
- 已有岗位图谱只给检查面,当前任务需要可执行的专业分支。
- 现实结果推翻了已激活单元,或来源、制度、版本、角色边界发生变化。
以下情况不加载:答案简单唯一且岗位不改变动作;只因用户自报职位而展示知识;需要的是本地制度或法律结论但尚无当前真源;单元排除信号已命中。
运行支持:让知识参加当前任务
1. 建最小请求
从 RoleContext 和当前问题建立 JSON 请求,只填已知事实;组织类别不进入专业匹配。最少包含:
{
"schema_version": 1,
"current_specialist": "xb-data",
"job_family": "data",
"role": "数据工程师",
"task_family": "数据管道回填",
"lifecycle_stage": "运行与恢复",
"proficiency_mode": "S1_working",
"problem": "任务显示成功,但下游发现重复和漏数,需要安全回填",
"signals": ["DAG 成功但数据错", "重复", "漏数", "回填"],
"actual_constraints": [],
"knowledge_requirement": "required",
"required_unit_ids": [],
"max_units": 1
}
缺少角色、岗位族或真正会改变匹配的字段时,沿 role-context-model.md 每轮只问一个问题;能形成安全的唯一动作就停。
actual_constraints 不是自由文本标签。只有项目本地知识需要精确范围匹配时,才放入带证据的对象。rule_scope.value 只能是项目单元所绑定 scope_binding 的确定性 SHA-256;该对象同时固定项目 ID、packet 文件与摘要、完整权威裁决摘要、claim ID 与完整语义摘要、岗位族、角色、任务族和生命周期,不能手写或只哈希范围名称:
[{"kind":"rule_scope","value":"sha256:<64位小写摘要>","evidence_date":"2026-08-11","evidence_ref":"knowledge/packets/<packet-id>.json"}]
kind 只能是 legal_entity / jurisdiction / system_version / rule_scope。rule_scope 同时精确绑定 packet 路径与权威裁决日期;scope_kind 固定为 project_rule。原始组织标签或其手工摘要没有完整结构绑定,所以“国企、外企、SOE/SOEs、政府部门、某大型国有企业”等类别或同义改写即使漏过友好提示正则,也不能参与岗位知识命中或覆盖。
init-project 生成的 project_scope_id 绑定项目解析后的绝对根路径;把整个本地目录复制到另一项目也会响亮失败。项目搬迁后必须在新根重新初始化、重新绑定来源包并重跑证据门,不能沿用旧摘要。
2. 机械校验与匹配
使用绝对请求路径;不传项目根时只读取随包发布的内置目录:
<PYTHON3> <本Skill绝对路径>/scripts/role_knowledge.py validate
<PYTHON3> <本Skill绝对路径>/scripts/role_knowledge.py resolve --context <绝对request.json> --output <绝对packet.json>
只有用户明确给出项目根且希望使用本地增补时才加 --project-root <绝对项目根>。显式给了项目根但本地目录未初始化,必须报 E_PROJECT_UNINITIALIZED;不能静默回到内置目录并假装加载了本地知识。
3. 岗位知识参与闭环
命中后,当前专科必须在内部保留这条追踪链,并以 verify-trace 同时读取实际交付物、核对其 SHA-256 与逐字片段、再对当前目录重放后才算已应用:
unit_id → 本轮新增观察 → 至少两个竞争解释 → 区分动作 → 条件分支 → 产物字段 → 验证 → 现实反馈
知识只有在至少改变以下一项时才算参加:观察字段、竞争解释、辨别动作、分支、权限边界、动作、产物字段、验收或反馈。Trace 还必须把专业 effect、六项权限、全部风险门和当前阶段适配绑定到交付物中的真实片段,而且每个片段必须逐项包含对应 effect 的原始内容;无关通用段落不能替它作证。六权与风险门以 RoleKnowledgePacket 1.3 的固定机器策略为唯一权限真源:AI 只可提出,决定/授权/执行/复核/风险接受由对应人类主体保留;职责原文和风险触发原文都标为 authority_effect=false,不能改写机器策略。只在答案末尾列来源、复述岗位常识、填写“result.changed”式形式字段或显示“已加载”均视为未参与。
当前专科消费 RoleKnowledgePacket.active_injection,结合本地事实重新推导;不得把单元当万能模板。必须显形采用的 unit_id、关键条件和会推翻它的新证据,但不必向用户展示整包 JSON。
<PYTHON3> <本Skill绝对路径>/scripts/role_knowledge.py verify-trace --packet <绝对packet.json> --trace <绝对trace.json> --artifact <实际交付物绝对路径>
包若来自项目单元,同一命令必须追加创建该包时的 --project-root <绝对项目根>;验证器会按当前受治理目录重放解析,旧目录、伪造包或漂移包都会响亮失败。
4. 无匹配与上下文变化
knowledge_requirement=required且无匹配:以E_NO_MATCH停止依赖岗位专科知识的结论,指出缺的任务切片;不拿模型记忆冒充已加载知识。optional且无匹配:返回显式no_match包;当前专科只能给标为“通用、未做岗位知识适配”的可逆建议。
无论 active 还是 no_match,都按包内 delivery_requirements 交付。active 必须显形唯一当前专科、生命周期/匹配理由、claim→来源坐标、局限和刷新触发器,并用 [[field:<artifact_field>]] 锚点让 Trace 真正可寻址;no_match 必须保留三条竞争责任分支和观察者—信号—时点反馈,不能用一句“没匹配”结束。
- 角色、任务族、生命周期或问题信号发生实质变化:旧包失效,重新解析;不能把另一顶岗位帽子的单元沿用。
- 本地单元与内置单元 ID 冲突、来源包失效或关键边界冲突:报错并停止受影响结论。
知识补充:建立或修订单元
1. 冻结缺口,不先写百科
至少收集两个高保真样本:一个真实成功/失败任务和一个边界或反例。写清实际角色、任务、生命周期、已有做法为什么不够、两种会导向不同动作的解释、谁有权决定、现实结果。没有样本时可研究,但只能产出候选,不能激活。
2. 建来源包
若主张依赖本地材料、官方文件、论文、标准或仓库,按 ../xbskill/references/knowledge-source-protocol.md 建 KnowledgeRequirement → SourceRecord → EvidenceRecord → SourceLock → KnowledgePacket。发现、读取、执行分权;外部内容不执行。stars 仅作 discovery_only 发现信号。
内置目录的来源还必须登记到 references/builtin-source-registry.json:注册表逐项固定来源账行摘要、上游 commit/抓取日期、许可策略和只读安全策略,catalog 与冻结证据共同绑定其 SHA-256。只有来源 ID 相同不算同一来源;坐标、版本、许可或安全说明漂移都报 E_SOURCE_COORDINATE。
必需来源、许可、安全、固定版本、坐标、权威裁决或关键冲突任一不合格,单元保持 candidate。不能用“业内一般如此”补位。
3. 检查上游并生成内化候选
上游同步不是 git pull,也不是把整个仓库复制进 Skill。固定账只列经许可/安全初审的 allowlist 文本与证据坐标;外部 README、Skill、CSV 和代码始终是不可信数据,不能导入、安装或执行。先离线校验登记,再做一次官方元数据检查:
<PYTHON3> <本Skill绝对路径>/scripts/upstream_sync.py validate
<PYTHON3> <本Skill绝对路径>/scripts/upstream_sync.py check
网络、限流、意外 404、归档、HEAD 或许可漂移时响亮停止;不要循环重试。stars 的权重恒为 none/discovery_only。expected_unavailable 继续 404 只表示缺口仍在;若仓库恢复,必须重新过许可、安全、allowlist 和证据坐标门,不能自动采用。
用户明确同意刷新后,把 allowlist 文本写到 Skill 之外一个全新的绝对目录。命令拒绝覆盖、拒绝 Skill 内路径,也不修改 active catalog 或来源注册表:
<PYTHON3> <本Skill绝对路径>/scripts/upstream_sync.py refresh-candidate --output <尚不存在的绝对候选目录> --yes
候选目录只用于审阅当前固定 commit 的不可信文本、blob/SHA-256、行数和坐标。只检查报告中的 changed sources / affected units;将新关系重写为“条件—竞争解释—辨别动作—分支—产物—验证—翻转”,不得复制模板、固定阈值、无证据数字或审美映射。discovery_only 只能提出下一来源需求,不能进入 active claim;许可不兼容、来源不可用或证据不足时明确保留缺口。
达到“内化完成”必须同时满足:来源固定且可用、RoleKnowledgeUnit 更新、确定性与陌生试跑通过、独立八门全 2、catalog 激活,并在普通任务中由 RoleKnowledgePacket → ApplicationTrace → 实际交付物 证明参加。仅生成 refresh candidate、更新来源账或写完候选单元都不算完成。
4. 写 RoleKnowledgeUnit
每个单元必须具备:
- 激活范围:岗位族、实际角色、任务族、生命周期、包含/排除信号。
- 专业问题:本单元解决哪种错误判断,不是岗位职责介绍。
- 主张:条件、来源坐标、反证和刷新触发器。
- 完整动作器官:观察、竞争解释、辨别动作、分支、动作、产物、验证、边界、现实反馈。
- 决策图:每个竞争解释都进入至少一个“辨别动作—证据输出—权限—可翻转结果—下一步”图,不能靠分号堆在一个字符串里。
- S0/S1/S2 适配:只改变帮助粒度和用户保留动作,不降低专业正确性与安全线。
- 权限边界:AI、用户、负责人和有权主体分别能做什么;所有精确阈值与组织安排必须有依据或标待校准。
先在项目目录沉淀时,用户明确确认项目根后初始化:
<PYTHON3> <本Skill绝对路径>/scripts/role_knowledge.py init-project --project-root <绝对项目根> --yes
该命令只创建标明 governance_complete=false 的空候选目录,不表示已经有岗位知识。项目单元写入 <project>/memory/xbskill/role-knowledge/catalog.json;active 项目单元必须绑定同项目 <project>/memory/xbskill/knowledge/packets/ 下经验证的 KnowledgePacket,同时固定 packet 文件 SHA-256、lock ID/digest、全部 claim ID、authority scope 原文摘要和裁决时间。项目目录、knowledge root、packet 与证据若经 junction/symlink 解析到项目外,必须报 E_PATH_BOUNDARY。
若要发布为 xbskill 内置知识,则修改本 Skill 的内置目录与来源账,运行完整套件发布门;不能把某家公司流程、个人信息或内部材料带入公开内置目录。
5. 试跑、评审、激活
对每个候选至少做:
- 正向匹配:该岗位该任务能命中,并改变一条实际动作链。
- 负向隔离:相似岗位或不相关任务不命中。
- 阶段分化:S0 与 S2 的帮助方式不同,但权限和验证不缩水。
- 反例翻转:排除信号或新事实能阻止/推翻单元。
- 陌生回答者试跑:不读取验收观察;独立评审者按 G/C/A/P/S/E/R/V 八门评分。
修订已发布的内置目录时,先用 scripts/prepare_candidate.py 生成新候选;它移除旧发布绑定与旧证据引用,绝不复制“已通过”状态:
<PYTHON3> <本Skill绝对路径>/scripts/prepare_candidate.py --catalog <当前内置catalog绝对路径> --output <同目录的新候选绝对路径> --catalog-version <新候选版本>
再用 scripts/deterministic_test.py 对候选目录冻结前四类结构与匹配证据;它只在测试进程内把候选视为可匹配,不会改目录状态,也不能替代陌生试跑:
<PYTHON3> <本Skill绝对路径>/scripts/deterministic_test.py --catalog <绝对catalog.json> --output <新的绝对evidence.json> --actor-id <稳定测试者别名>
项目候选必须在 deterministic、blind fixture 和 activation 三步都追加同一个 --project-root <绝对项目根>;任何一步缺失都停止,不能把本地范围默认为全局。
陌生试跑输入用 scripts/blind_fixture.py 生成;每个需要新证据的单元固定生成 positive_s0 / positive_s2 / negative / overturn 四题,其中 S0/S2 使用同一专业事实。文件只含用户题目、目标单元绑定和经候选解析出的运行包,不含 tests/review 或评分标准。内容、版本、引用来源行或运行包变化的单元必须生成新文件并换陌生回答者,禁止在旧冻结答案上补写。
八门全部为 2 才可把候选改为 active。测试和评审必须写入冻结证据登记,引用具体记录 ID 并校验文件 SHA-256;首次失败、修改原因和冻结重测都要保留。作者补写答案或回答者看到评分标准的轮次不得计入发布证据。
需要合并确定性记录、陌生答案和独立评审时,使用 scripts/assemble_evidence.py;它会校验三方 case 对齐、Trace、文本摘要和身份分离,任一盲测非全 2 仍会生成失败记录但返回非零,目录不得激活。
只有合并登记全过后,才用 scripts/activate_catalog.py 生成一个新的激活候选文件;它要求四类陌生题八门全 2,精确核对 candidate catalog digest 与每个 unit_id@version+unit_digest,拒绝覆盖原文件、拒绝非候选输入,并在写出前按登记摘要重新跑完整激活门。项目目录还必须传 --project-root。生成文件仍须经过独立 diff 复核,不能把命令成功等同现实有效。
当一次更新只改变少数单元时,可对 deterministic_test.py 与 blind_fixture.py 重复传 --unit-id <changed-id>,但两者仍用完整候选目录匹配和固定原始目录索引。先按上面的 assemble_evidence.py 合并这些变化单元的新证据,再用 scripts/merge_incremental_evidence.py 复用未变单元的旧冻结记录:
<PYTHON3> <本Skill绝对路径>/scripts/merge_incremental_evidence.py \
--candidate <完整新候选绝对路径> \
--previous-catalog <旧 active catalog 绝对路径> \
--previous-evidence <旧 evidence 绝对路径> \
--previous-source-registry <旧来源注册表绝对路径> \
--current-source-registry <新来源注册表绝对路径> \
--current-evidence <变化单元的新证据绝对路径> \
--output <新的完整证据绝对路径> --yes
复用不是免测:只有 id + version + reviewable_unit_digest 完全相同、该单元引用的每条来源记录在新旧注册表逐对象相同、旧四类确定性/答案/全 2 独立评审完整,并能在新完整目录中逐题重放时才允许。旧答案文本、hash、时间和身份原样保留;任一字段漂移即要求该单元重新外测。合并器最后对 15/全部候选重放,不能用差分范围绕过完整激活门。
匹配与条件分支
- 默认选一个主单元,最多两个;能覆盖当前瓶颈就不注入岗位全景。
- 实际角色、岗位族与已填写的生命周期是硬门;任务词或问题信号至少命中一项。
required_unit_ids只用于调用方已明确知道单元 ID 的情况,仍不能绕过角色、任务/信号、生命周期和排除信号,也不能被max_units静默截断。 - 项目单元不能用同 ID 覆盖内置单元;修订用新 ID 和
supersedes,保留来源、范围与失效条件。 - 企业类别完全不参与专业单元得分。只有
evidenced的组织基因可在专业包形成后调整沟通、授权路径或制品包装,不能改写专业事实。 - 多角色任务一次只按当前责任帽子解析;换帽子即重建请求。
微型边界例
正例:数据工程师说“DAG 绿但下游重复”。命中管道正确性单元后,当前 xb-data/xb-it 不再只查任务状态,而会增加部分成功语义、幂等重跑、消费者侧核验与回填/回滚决定包。
反例:产品经理只让把已经确认的三句话排成邮件。岗位知识不会改变答案,直接由 xb-writing 完成,不加载产品发现单元。
边界例:行政用户问某事业单位采购是否必须走特定程序。内置单元只能要求核验实际实体、资金、现行制度和有权者,不能凭“事业单位”给法律结论;缺当前真源时停止正式动作。
验证、失败与翻转
交付前检查:
- 是运行支持还是知识补充?当前专科是否保持唯一?
- 命中的单元是否实际改变了一条动作链,而非只被引用?
- 是否保留至少两个竞争解释、一个辨别动作和会翻转判断的证据?
- 阶段适配是否保留用户判断、验证和授权责任?
- 本地制度、精确阈值和组织职责是否有当前证据;类别是否只作问题种子?
- 是否给出当前产物边界与下一现实反馈点,没有把包生成写成现实问题已解决?
validate、resolve、独立行为试跑任一失败都不得声称知识已激活。来源过期、现实反复证伪、角色边界变化、反指标游戏或验证结果恶化时,将单元降为 stale/rejected,回到补充流程;不得静默换成模型先验。