weaver-work-cli 0.1.20 → 0.1.21

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.
Files changed (59) hide show
  1. package/README.md +19 -11
  2. package/dist/core/refs.js +39 -36
  3. package/dist/internal/e10/auth/commands.js +33 -18
  4. package/dist/internal/e10/auth/session.js +60 -2
  5. package/dist/internal/e10/auth/xiaoe.js +253 -53
  6. package/dist/internal/e10/context.js +18 -6
  7. package/dist/internal/e10/request-runtime.js +3 -1
  8. package/dist/shortcuts/caizhilian/operations/confirm.js +1 -1
  9. package/dist/shortcuts/caizhilian/operations/handlers/file-collection.js +901 -20
  10. package/dist/shortcuts/caizhilian/operations/handlers/folder.js +55 -0
  11. package/dist/shortcuts/caizhilian/operations/handlers/setting-attach.js +4 -4
  12. package/dist/shortcuts/caizhilian/operations/specs.js +75 -0
  13. package/dist/shortcuts/hrm/manifest.js +16 -9
  14. package/dist/shortcuts/hrm/operations/registry.js +2 -0
  15. package/dist/shortcuts/hrm/operations/resolve.js +449 -0
  16. package/dist/shortcuts/workflow/host.js +5 -1
  17. package/dist/shortcuts/workflow/operations/form.js +95 -11
  18. package/dist/shortcuts/workflow/operations/read.js +785 -26
  19. package/docs/e10-auth.md +4 -2
  20. package/docs/hrm.md +34 -2
  21. package/package.json +2 -2
  22. package/scripts/xiaoe_env.py +118 -0
  23. package/skill-template/domains/hrm.md +2 -1
  24. package/skill-template/skill-template.md +1 -1
  25. package/skills/weaver-e10-blog/SKILL.md +1 -1
  26. package/skills/weaver-e10-caizhilian/SKILL.md +5 -4
  27. package/skills/weaver-e10-caizhilian/references/file-collection.md +37 -0
  28. package/skills/weaver-e10-caizhilian/references/folder.md +5 -1
  29. package/skills/weaver-e10-caizhilian/references/setting-attach.md +35 -5
  30. package/skills/weaver-e10-caizhilian/references/source-manifest.json +620 -5
  31. package/skills/weaver-e10-calendar/SKILL.md +1 -1
  32. package/skills/weaver-e10-ebuilder-form/SKILL.md +1 -1
  33. package/skills/weaver-e10-esb/SKILL.md +1 -1
  34. package/skills/weaver-e10-hrm/SKILL.md +52 -5
  35. package/skills/weaver-e10-hrm/references/org.md +107 -1
  36. package/skills/weaver-e10-jinchengda/SKILL.md +2 -1
  37. package/skills/weaver-e10-jiuchuanhui/SKILL.md +1 -1
  38. package/skills/weaver-e10-jucailin/SKILL.md +1 -1
  39. package/skills/weaver-e10-mail/SKILL.md +1 -1
  40. package/skills/weaver-e10-meeting/SKILL.md +1 -1
  41. package/skills/weaver-e10-okr/SKILL.md +1 -1
  42. package/skills/weaver-e10-okr/references/source-manifest.json +3 -3
  43. package/skills/weaver-e10-plan/SKILL.md +1 -1
  44. package/skills/weaver-e10-qiyecheng/SKILL.md +1 -1
  45. package/skills/weaver-e10-shared/SKILL.md +10 -13
  46. package/skills/weaver-e10-shared/references/e10-auth-and-session.md +11 -17
  47. package/skills/weaver-e10-shared/references/non-interactive-environment.md +21 -14
  48. package/skills/weaver-e10-shijingran/SKILL.md +1 -1
  49. package/skills/weaver-e10-skill-maker/SKILL.md +1 -1
  50. package/skills/weaver-e10-skill-maker/references/weaver-skill-style.md +1 -1
  51. package/skills/weaver-e10-wenshuding/SKILL.md +1 -1
  52. package/skills/weaver-e10-workflow/SKILL.md +19 -19
  53. package/skills/weaver-e10-workflow/references/source-manifest.json +13 -13
  54. package/skills/weaver-e10-workflow/references/workflow-create.md +11 -7
  55. package/skills/weaver-e10-workflow/references/workflow-query.md +9 -14
  56. package/skills/weaver-e10-yepiaotong/SKILL.md +1 -2
  57. package/skills/weaver-e10-yimiaoban/SKILL.md +1 -1
  58. package/skills/weaver-e10-yimiaoban/references/source-manifest.json +3 -3
  59. package/skills/weaver-e10-ziguanjia/SKILL.md +1 -1
@@ -15,7 +15,7 @@ cliHelp: "weaver-work-cli calendar --help"
15
15
 
16
16
  # 泛微E10日程管理
17
17
 
18
- **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须先提示用户先补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行),并把下面两条待执行命令原样完整展示给用户;Agent 不能自行安装——必须先取得用户明确确认后再执行。用户确认后按顺序执行且仅执行一次:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
18
+ **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须调用宿主提供的提问/确认弹框,向用户说明必须补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行)及补齐计划,并把下面两条待执行命令原样完整展示在确认信息中;Agent 不能在未确认时自行安装。用户明确确认后,Agent 必须直接代为按顺序执行且每条仅执行一次,不得要求或引导用户手动执行:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
19
19
  **`--is-connector` 判据**:用户明确使用连接器、或上下文要求用连接器完成任务 → 传 `true`;本次任务或上下文直接选择单独技能 → 不传;用户没有明确说明时,按**正在运行的这份 Skill 是哪一级**定——**用户级(条目标 `(user)`)不传,连接器级(标 `(connector)`)传**(同名 Skill 只会运行用户级那一份)。传 `true` 时不要再写 `--profile` / `--base-url`。完整规则见 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md)。
20
20
 
21
21
  本技能覆盖日程管理业务域:**创建日程**、**查询列表**、**查询详情**、**查询总数**、**更新日程**、**删除日程**、**查询类型/紧急程度字典**、**应用版本检测**。写操作(创建/更新/删除)全部走 prepare→apply 确认协议。
@@ -17,7 +17,7 @@ cliHelp: "weaver-work-cli ebuilder-form --help"
17
17
 
18
18
  # 泛微E10 eBuilder表单
19
19
 
20
- **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须先提示用户先补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行),并把下面两条待执行命令原样完整展示给用户;Agent 不能自行安装——必须先取得用户明确确认后再执行。用户确认后按顺序执行且仅执行一次:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
20
+ **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须调用宿主提供的提问/确认弹框,向用户说明必须补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行)及补齐计划,并把下面两条待执行命令原样完整展示在确认信息中;Agent 不能在未确认时自行安装。用户明确确认后,Agent 必须直接代为按顺序执行且每条仅执行一次,不得要求或引导用户手动执行:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
21
21
  **`--is-connector` 判据**:用户明确使用连接器、或上下文要求用连接器完成任务 → 传 `true`;本次任务或上下文直接选择单独技能 → 不传;用户没有明确说明时,按**正在运行的这份 Skill 是哪一级**定——**用户级(条目标 `(user)`)不传,连接器级(标 `(connector)`)传**(同名 Skill 只会运行用户级那一份)。传 `true` 时不要再写 `--profile` / `--base-url`。完整规则见 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md)。
22
22
 
23
23
  本技能覆盖 eBuilder 表单菜单定位、List/NList 页面查询、字段/选项/浏览字段解析,以及 OpenAPI 和已发布自定义接口的表单数据读写。所有业务调用必须通过 `weaver-work-cli ebuilder-form`,禁止绕过 CLI 直接拼 E10 接口、Cookie、ETEAMSID 或 `/api/bs/` 路径。
@@ -15,7 +15,7 @@ cliHelp: "weaver-work-cli esb --help"
15
15
 
16
16
  # 泛微E10 ESB动作流执行
17
17
 
18
- **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须先提示用户先补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行),并把下面两条待执行命令原样完整展示给用户;Agent 不能自行安装——必须先取得用户明确确认后再执行。用户确认后按顺序执行且仅执行一次:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
18
+ **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须调用宿主提供的提问/确认弹框,向用户说明必须补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行)及补齐计划,并把下面两条待执行命令原样完整展示在确认信息中;Agent 不能在未确认时自行安装。用户明确确认后,Agent 必须直接代为按顺序执行且每条仅执行一次,不得要求或引导用户手动执行:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
19
19
  **`--is-connector` 判据**:用户明确使用连接器、或上下文要求用连接器完成任务 → 传 `true`;本次任务或上下文直接选择单独技能 → 不传;用户没有明确说明时,按**正在运行的这份 Skill 是哪一级**定——**用户级(条目标 `(user)`)不传,连接器级(标 `(connector)`)传**(同名 Skill 只会运行用户级那一份)。传 `true` 时不要再写 `--profile` / `--base-url`。完整规则见 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md)。
20
20
 
21
21
  本技能覆盖 ESB 中心的**自定义触发类型动作流**:取入参模板(只读)与执行动作流(写操作,需确认)。按动作流名称解析 ID、唯一值对应的 `primary_key` SQL 查询都不在本技能范围内,见「不在范围」。
@@ -5,7 +5,7 @@ display_name_en: Weaver E10 Organization Management
5
5
  description: 泛微E10组织管理(员工/组织/岗位查询)的 E10 查询能力,通过 weaver-work-cli hrm 命令执行。
6
6
  description_zh: 泛微E10组织管理(员工/组织/岗位查询)的 E10 查询能力,通过 weaver-work-cli hrm 命令执行。
7
7
  description_en: Weaver E10 Organization Management capabilities for E10, covering employee, organization and position queries, delivered through the weaver-work-cli hrm command.
8
- version: 1.0.22
8
+ version: 1.0.28
9
9
  author: 泛微网络科技股份有限公司
10
10
  agent_created: true
11
11
  requires:
@@ -15,10 +15,10 @@ cliHelp: "weaver-work-cli hrm --help"
15
15
 
16
16
  # 泛微E10组织管理
17
17
 
18
- **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须先提示用户先补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行),并把下面两条待执行命令原样完整展示给用户;Agent 不能自行安装——必须先取得用户明确确认后再执行。用户确认后按顺序执行且仅执行一次:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
18
+ **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须调用宿主提供的提问/确认弹框,向用户说明必须补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行)及补齐计划,并把下面两条待执行命令原样完整展示在确认信息中;Agent 不能在未确认时自行安装。用户明确确认后,Agent 必须直接代为按顺序执行且每条仅执行一次,不得要求或引导用户手动执行:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
19
19
  **`--is-connector` 判据**:用户明确使用连接器、或上下文要求用连接器完成任务 → 传 `true`;本次任务或上下文直接选择单独技能 → 不传;用户没有明确说明时,按**正在运行的这份 Skill 是哪一级**定——**用户级(条目标 `(user)`)不传,连接器级(标 `(connector)`)传**(同名 Skill 只会运行用户级那一份)。传 `true` 时不要再写 `--profile` / `--base-url`。完整规则见 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md)。
20
20
 
21
- 本技能覆盖组织管理三大业务域:**员工(employee)**、**组织(org)**、**岗位(position)**,全部为只读查询,无写操作。代理商查询(`containsDls=true`)属于禁用边界,见 [`references/employee.md`](references/employee.md)。
21
+ 本技能覆盖组织管理三大业务域:**员工(employee)**、**组织(org)**、**岗位(position)**,全部为只读查询,无写操作。代理商查询(`containsDls=true`)属于禁用边界,见 [`references/employee.md`](references/employee.md)。组织域额外提供**多维(虚拟组织维度)解析** `hrm.org.resolve`,见下方「多维解析」。
22
22
 
23
23
  ## 命令入口
24
24
 
@@ -42,10 +42,54 @@ weaver-work-cli --json hrm run <operation> --input -
42
42
  | --- | --- |
43
43
  | 查员工、工号/手机/邮箱、查下属、部门成员、批量人员、人员详情 | [`references/employee.md`](references/employee.md) |
44
44
  | 查分部、查部门、组织架构、层级路径、组织详情 | [`references/org.md`](references/org.md) |
45
+ | **按「多维名称 + 部门/分部名称」找组织**(多维 / 虚拟组织 / 维度) | [`references/org.md`](references/org.md) 的「多维解析」 |
45
46
  | 查岗位、岗位详情、批量岗位 | [`references/position.md`](references/position.md) |
46
47
  | **按部门/分部反查人员**(某部门下有哪些人) | [`references/employee.md`](references/employee.md) 的「按组织反查人员」 |
47
48
  | **按岗位反查人员**(某岗位下有哪些人) | 本技能不支持,需跨到 `weaver-e10-jucailin`;先读下方「反查人员的能力边界」 |
48
49
 
50
+ ## 多维解析(`hrm.org.resolve`):一次调用,禁止自己分两步推理
51
+
52
+ E10 组织树按**多维**(虚拟组织维度,如「行政组织」「1号维度」「备份维度」)切分,同名部门/分部在不同维度下是**不同节点**;组织浏览接口不传 `companyId` 会**默认落到「行政组织」维度**。所以「按名称找部门/分部」需要先定位多维 id,再带 `companyId` 查组织。
53
+
54
+ **这段编排已在 CLI 内实现,Agent 只调一次 `hrm.org.resolve`,不要自己先查维度、再查组织。**
55
+
56
+ ```text
57
+ weaver-work-cli --json hrm run hrm.org.resolve --input-json '{"virtual":"1号维度","name":"第一团队"}'
58
+ ```
59
+
60
+ - 入参:`virtual`(多维名称)+ `name`(部门/分部名称);`type` 可选(`department`/`subcompany`,**不传时同时检索两者、按部门优先定位**);歧义候选**默认最多回 20 条**,要一次性看全时传 `maxCandidates`(1~200)。
61
+ - 匹配分**三级**,"能不能自动往下走"完全不同,别混为一谈:
62
+
63
+ | 级别 | 判定 | CLI 行为 |
64
+ | --- | --- | --- |
65
+ | ① 精确 | 忽略大小写/空白的全等 | 唯一 → 继续;多个 → `ambiguous` |
66
+ | ② 包含(模糊) | 名称是关键字子串 | 唯一 → 继续;多个 → `ambiguous` |
67
+ | ③ **近似(打字级差异,如「客服维度」→「客户维度」)** | 编辑距离阈值内 | **只回 `suggestions`,`status = not_found`,绝不继续** |
68
+
69
+ ### 🔴 不要替用户做主(三条硬边界,违反即算答错)
70
+
71
+ 1. **禁止自行替换/纠正名称**。用户说「客服维度」,就只能在「客服维度」不存在时**如实告知**;不许把「客户维度」当成用户的意思直接用(这是最典型的越权:看着像就替用户认了)。
72
+ 2. **禁止在 `ambiguous` 里替用户选**。不许取第一条、不许取「看起来最像的」、不许取「唯一直属根节点的」——一律列表让用户挑。
73
+ 3. **`not_found` ≠ 换个名字再试**。必须把 `data.message` + `data.suggestions`(近似名称)+ `data.availableVirtuals`(该租户全部多维)原样交给用户,等用户确认;**用户确认后**才用 `virtualId`(维度)/ `orgId`(组织)复调,不要再用名称猜。
74
+
75
+ > 实例:`{"virtual":"客服维度","name":"云桥测试"}` → `not_found`(`suggestions: [客户维度]`)。正确回复是「本租户没有『客服维度』,最接近的是『客户维度』(id …),要用它继续查『云桥测试』吗?」——**不是**直接返回客户维度下的结果。
76
+ > 反过来,③ 之外的 ①② 是 CLI 既定行为(属于系统收敛,不属于你改名),命中了就正常往下走。
77
+
78
+ - **结果判定只看 `data.status`,不要只看 `ok`**(本操作三种结果都是 `ok: true`):
79
+
80
+ | `data.status` | 含义 | Agent 必须做什么 |
81
+ | --- | --- | --- |
82
+ | `resolved` | 已定位唯一组织 | 用 `data.org`(`id`/`name`/`type`/`fullPath`/`link`)直接回答,用 `[名称](link)` 呈现;**若同时回 `data.alsoMatched`(同名但另一类型的节点,如既有同名部门又有同名分部),必须一并告知用户**,不要只报 `org` |
83
+ | `ambiguous` | 精确或包含命中多个 | **停下来问用户**:把 `data.candidates` 以表格(名称 / `fullPath` / link)列出让用户选,不要自行挑一个;候选被截断(`truncated: true`)时先告知总数,用户要全量就用 `maxCandidates` 复调 |
84
+ | `not_found` | 名称不存在(含"只有近似名称"的情况) | 原样转述 `data.message`,并把 `data.suggestions`/`data.availableVirtuals` 一并给用户确认;**禁止自行替换名称后重试** |
85
+
86
+ - 用户确认候选后**复调同一个操作**:把候选的 `id` 作为 `orgId` 传回(若是维度歧义,把维度 `id` 作为 `virtualId` 传回),一次即可定位;**不要再用名称重试猜**。
87
+ - **🔴「这个租户有哪些多维」暂不支持**(`hrm.org.virtuals` 已下线,`hrm schema --full` 的 `withheldOperations` 里有声明):
88
+ - 没有列维度的 operation,**也不许绕**——不要故意传一个不存在的维度名去套 `not_found.availableVirtuals` 来"列清单",那属于构造假查询。
89
+ - `availableVirtuals` 只用于**纠错**(用户给的名字对不上时,顺手告诉他本租户有哪些维度可参考),维度 id 也只从 `not_found.availableVirtuals` / 维度歧义的 `candidates` 里取。
90
+ - 用户明确问"有哪些多维"时 → 直接回答**该能力暂不支持**,并请其改用「维度名 + 组织名」的方式查询。
91
+ - 完整契约、匹配规则与示例见 [`references/org.md`](references/org.md) 的「多维解析」。
92
+
49
93
  ## 反查人员的能力边界
50
94
 
51
95
  "这个部门/岗位下有哪些人"是高频误判点,先按下表判断,**不要默认认为 hrm 整个模块都做不到**:
@@ -106,7 +150,9 @@ weaver-work-cli --json hrm run <operation> --input -
106
150
  - 说明:服务端**不校验**该上限(实测 `pageSize=500` 会原样返回 500 行,不传 `pageSize` 时服务端按 20 返回),所以这条是**本技能为控制上下文体积定下的自觉约束**。Agent 必须遵守,不得因为"服务端没拦"就放大取值。
107
151
  - **🔴 `status` 不能单独使用**:`employee.query` 的 `status`(`["normal"]` 在职 / `["6"]` 离职)必须搭配其它条件(keyword/工号/姓名/手机/邮箱)。
108
152
  - **批量禁止循环单查**:批量查询一律走 `batch`(每批 ≤100,CLI 自动分批);岗位批量走 `position.list` 一次性返回,禁止按 id 逐个调详情。
109
- - **姓名/工号/名称模糊匹配**:多人命中时必须列出候选让用户选择,不得自动取第一条;`dept.members` 部门重名时报 `dept_ambiguous`,需改用组织 id。
153
+ - **姓名/工号/名称模糊匹配**:多人命中时必须列出候选让用户选择,不得自动取第一条;`dept.members` 部门重名时报 `dept_ambiguous`,需改用组织 id。`hrm.org.resolve` 不抛歧义错误,而是回 `data.status = ambiguous` + `data.candidates`,同样必须问用户、不得自动取第一条。
154
+ - **🔴 禁止自主任意解读名称**:`hrm.org.resolve` 报 `not_found` 时,`data.suggestions`(近似名称)**只是给用户看的提示,不是给你用的参数**——不得据此改名重试、也不得省略「不存在」这一事实直接给结果。凡「名称对不上」一律先回用户,用户确认后再用 `virtualId`/`orgId` 复调。
155
+ - **🔴 禁止绕取未暴露能力**:`hrm.employee.dls`(代理商查询)与 `hrm.org.virtuals`(列多维)都在 `hrm schema --full` 的 `withheldOperations` 里声明为不可用;**不得构造假查询(如故意传不存在的维度名)去套内部字段**、也不得编造或绕过。用户问到就如实回答暂不支持。
110
156
  - **人员 id、组织 id、岗位 id 都是长整型**,一律按字符串传递。
111
157
  - **代理商查询禁用**:`hrm.employee.dls`(`containsDls=true`)仅泛微自用系统支持,已列为禁用边界,不得编造或绕过。
112
158
 
@@ -114,7 +160,8 @@ weaver-work-cli --json hrm run <operation> --input -
114
160
 
115
161
  - `code=302` 或认证类错误:引导用户执行 `weaver-work-cli auth login`,不要用其他方式排查。
116
162
  - 业务失败看 stderr JSON 的 `error.type` / `error.subtype` / `error.message`,不要用退出码 `0` 判断成功。
117
- - 常见业务错误:`empty_condition`(空条件拉取被拦截)、`full_pull_blocked`(岗位全量需 `all=true`)、`dept_not_found`/`dept_ambiguous`(组织未找到或重名,改用 id)、`enum_invalid`(枚举取值非法)、`permission_denied`(接口开关未开启)。
163
+ - 常见业务错误:`empty_condition`(空条件拉取被拦截)、`full_pull_blocked`(岗位全量需 `all=true`)、`dept_not_found`/`dept_ambiguous`(组织未找到或重名,改用 id)、`enum_invalid`(枚举取值非法)、`permission_denied`(接口开关未开启)、`virtual_required`/`name_required`(`hrm.org.resolve` 缺多维或多维名称参数)。
164
+ - `hrm.org.resolve` 的「没找到 / 命中多个」**不是错误**:命令仍退出 0、`ok: true`,判定以 `data.status` 为准,不要把 `not_found` 当异常重试。
118
165
 
119
166
  ## 平台兼容
120
167
 
@@ -4,12 +4,15 @@
4
4
 
5
5
  按名称/编号/上级组织查分部(subcompany)与部门(department)、按组织节点 id 取详情、按多级路径逐级收敛查询时使用。全部为只读操作。
6
6
 
7
+ 若用户给的是「**多维名称 + 部门/分部名称**」(例如「1号维度下的第一团队」),**不要**自己先查维度再查组织——直接用 `hrm.org.resolve` 一次调用(见本文末尾「多维解析」)。
8
+
7
9
  ## 输入要点
8
10
 
9
11
  | operation | 必填 | 说明 |
10
12
  | --- | --- | --- |
11
13
  | `hrm.org.query` | 至少一个收敛条件 | 按名称/编号/上级组织查询组织(`type` 区分分部/部门) |
12
14
  | `hrm.org.detail` | `id` | 按组织节点 id 取组织详情(类型由服务端自动判断,含全路径 `fullPath`、上级部门名、所属分部名;**不含人员统计**) |
15
+ | `hrm.org.resolve` | `virtual` + `name` | 多维名称 + 部门/分部名称 → 解析组织(精确优先/包含模糊兜底/近似只提示,歧义回候选) |
13
16
 
14
17
  ### `hrm.org.query` 关键字段
15
18
 
@@ -65,6 +68,106 @@ weaver-work-cli --json hrm run hrm.org.query --input-json '{"subcompany":["10000
65
68
  weaver-work-cli --json hrm run hrm.org.detail --input-json '{"id":"1000000000000000101"}'
66
69
  ```
67
70
 
71
+ ## 多维解析(`hrm.org.resolve`)
72
+
73
+ > 多维清单(维度名 + id)**不单独暴露成 operation**,全部由 `hrm.org.resolve` 内部获取与处理:匹配时用它、不存在时把 `availableVirtuals` 随结果回给用户。
74
+
75
+ ### 为什么需要它
76
+
77
+ E10 组织树按**多维**(虚拟组织维度)切分:「行政组织」是真实组织树,其余是各业务维度(「1号维度」「备份维度」…)。**同名部门/分部在不同维度下是不同节点**,浏览接口 `department`/`subcompany` 不带 `companyId` 时会**默认落到「行政组织」维度**(实测:按名称查到的 `virtualid` 全是 `1`)。所以「按名称找部门」必须先定位多维 id,再以 `companyId` 收敛。
78
+
79
+ 这段编排(取维度 → 匹配维度名 → 取多维 id → 带 `companyId` 查组织 → 匹配组织名)**已全部实现在 CLI 内**,Agent **只调一次 `hrm.org.resolve`**,不需要自己分两步推理(也不存在"先列维度再查组织"的第二步可用)。
80
+
81
+ ### 入参
82
+
83
+ | 字段 | 必填 | 说明 |
84
+ | --- | --- | --- |
85
+ | `virtual` | 首调必填 | 多维名称(如 `行政组织` / `1号维度`);精确优先,未命中按**包含**模糊匹配 |
86
+ | `name` | 首调必填 | 部门或分部名称;精确优先,未命中按**包含**模糊匹配 |
87
+ | `type` | 否 | `department` 部门 / `subcompany` 分部;**不传时同时检索两者、按部门优先定位**,并把同名另一类型节点回在 `alsoMatched` |
88
+ | `virtualId` | 复调用 | 多维 id(长整型字符串);用户确认后复调直接传,跳过维度名称匹配 |
89
+ | `orgId` | 复调用 | 组织节点 id(长整型字符串);用户确认后复调直接传,跳过名称匹配(改走组织详情) |
90
+ | `maxCandidates` | 否 | 歧义时最多回传的候选条数,**1~200,默认 20**;超限抛 `number_invalid` |
91
+
92
+ 首调至少要有 `virtual` + `name`;只给 `virtualId` + `orgId` 也可以(纯 id 定位)。缺 `virtual`/`virtualId` 抛 `virtual_required`,缺 `name`/`orgId` 抛 `name_required`。
93
+
94
+ ### 匹配规则(两级同名匹配,三级判定)
95
+
96
+ 名称匹配分**三级**,它们的「能否自动往下走」完全不同:
97
+
98
+ | 级别 | 判定方式 | CLI 行为 |
99
+ | --- | --- | --- |
100
+ | ① 精确 | 忽略大小写与多余空白的**全等**(服务端条件 `eq`/等于) | 唯一 → 继续;多个 → `ambiguous` |
101
+ | ② 包含(模糊) | 名称是关键字**子串**(服务端条件 `in`/包含);返回行再做一次客户端「忽略大小写全等」优先,兜住服务端 `eq` 漏判(全角/空格差异) | 唯一 → 继续;多个 → `ambiguous` |
102
+ | ③ **近似** | 编辑距离阈值内(`相似度 ≥ 0.6`,只认**打字/口误级**差异,如「客服维度」→「客户维度」) | **只回 `suggestions` + `status: not_found`,绝不自动继续** |
103
+
104
+ - ①② 属于系统收敛,命中即可往下走;③ **绝不参与解析**,只能作为「是不是指这个?」的提示交回用户。
105
+ - 维度级:③ 在**本地全量维度清单**上算相似度(`listCompanyVirtual` 一次返回全部)。
106
+ - 组织级:③ 用「关键字**末 2 字 / 首 2 字**」各做一次包含查询(≤2 次,中文名后缀信息量最大:经理/部/科/中心…),命中即作为 `suggestions` 回传。
107
+ - 未命中且无近似项时,组织级回 `availableVirtuals`(仅维度级)或提示补充关键字。
108
+
109
+ ### 结果契约(🔴 只看 `data.status`,不要只看 `ok`)
110
+
111
+ 三种结果都是 `ok: true`、退出码 `0`:
112
+
113
+ | `data.status` | 附带字段 | Agent 该做什么 |
114
+ | --- | --- | --- |
115
+ | `resolved` | `org`(`id`/`name`/`type`/`fullPath`/`parentPath`/`parentId`/`subcompanyId`/`virtualId`/`virtualName`/`link` 等)、`virtual`、`matchType`(`exact`/`fuzzy`/`id`);不传 `type` 且存在**同名另一类型**节点时另回 `alsoMatched[]` | 直接用 `org` 回答,按 `[名称](link)` 呈现;**有 `alsoMatched` 时必须一并告知用户**(如同一客户下既有同名部门又有同名分部) |
116
+ | `ambiguous` | `stage`(`virtual`=多维歧义 / `org`=组织歧义)、`virtual`、`candidates[]`、`candidateTotal`、`truncated`、`message` | **停下问用户**:把 `candidates` 列表(名称 / `fullPath` / link)给用户选,**禁止自动取第一条** |
117
+ | `not_found` | `stage`、`virtual`、`suggestions[]`/`suggestionTotal`(近似名称)、`availableVirtuals`(`stage=virtual` 时)、`message` | **原样转述给用户**(含"不存在"这一事实 + 近似名称 + 可用多维),**禁止自行替换名称后重试**;用户确认后再用 `virtualId`/`orgId` 复调 |
118
+
119
+ - `candidates` 每项为 `{id, name, type, fullPath, code?, link}`;**默认最多 20 条**,`truncated: true` 表示还有更多。`candidateTotal` 是服务端匹配总数(模糊时可能大于所列条数)。
120
+ - 要把候选一次列全:用 `maxCandidates` 复调(1~200),如 `{"virtual":"客户维度","name":"客户经理","maxCandidates":100}` → `candidateTotal: 29, truncated: false`。上游浏览分页会同步放宽到 `max(100, maxCandidates)`,因此上限 200 内都能取全。
121
+ - **`suggestions`(`not_found` 才可能出现)**:近似名称,**最多 5 条**;维度级每项 `{id, name}`,组织级每项与 `candidates` 同结构。`suggestionTotal` 为该级近似匹配总数(组织级来自宽松探测)。
122
+ - 🔴 **它只是给用户看的提示,不是给 Agent 用的参数**:不得据此改名重试,也不得因此省略「用户给的名称不存在」这一事实。
123
+ - 实测:`{"virtual":"客服维度","name":"云桥测试"}` → `not_found` + `suggestions: [{id:"100001569000010000", name:"客户维度"}]` + 5 个可用多维;正确回复是「本租户没有『客服维度』,最接近的是『客户维度』,要用它继续查吗?」,而**不是**直接返回客户维度下的结果。
124
+ - `fullPath` 含多维名并逐级到本节点(如 `1号维度/超级组织66/第一团队`),同名不同层级靠它区分。
125
+ - ⚠️ **不同租户上游的层级分隔符不一致**(实测:木林泉用 `/`、泛微网络租户的 `supDepartment` 用 `|`);CLI 已统一归一化为 `/`,所以 `fullPath`/`parentPath` 跨环境格式一致。需要精确定位时用 `id`/`parentId`,不要反解析字符串。
126
+ - 直属多维根节点的候选 `fullPath` 就是名称本身(无上级路径),可用于识别「标准节点 vs 各客户下的同名子节点」。
127
+ - **`alsoMatched`(resolved 才可能出现)**:不传 `type` 时,若同一多维下**既有一个同名部门、又有一个同名分部**,本操作不会静默二选一 —— 按部门优先给出 `org`,同时把另一类型节点放进 `alsoMatched`(结构与 `candidates` 相同,含 `id`/`type`/`fullPath`/`link`),并在 `message` 里提示。**Agent 必须把两者都告诉用户**,用户要另一个就用它的 `id` 当 `orgId` 复调(或显式传对应 `type`)。要避免这种双命中,直接在首调传 `type`。
128
+
129
+ ### 用户确认后的复调
130
+
131
+ 把候选的 `id` 作为 `orgId` 传回;若是**多维**歧义(`stage: "virtual"`),把维度的 `id` 作为 `virtualId` 传回:
132
+
133
+ ```powershell
134
+ weaver-work-cli --json hrm run hrm.org.resolve --input-json '{"virtual":"1号维度","name":"第一团队","orgId":"9163142909607938"}'
135
+ ```
136
+
137
+ `not_found` 时若用户**确认**了 `suggestions` 里的近似名称,同样复调:维度近似 → 传 `virtualId`;组织近似 → 传 `orgId`(或按用户确认后的准确名称重查一次)。**但确认之前绝不能自己走这一步。**
138
+
139
+ 复调一次即定位,**不要再用名称反复重试**。
140
+
141
+ ### 命令示例
142
+
143
+ 首调(多维名称 + 部门名称;分部同理,传 `"type":"subcompany"` 或省略让它自动识别):
144
+
145
+ ```powershell
146
+ weaver-work-cli --json hrm run hrm.org.resolve --input-json '{"virtual":"1号维度","name":"第一团队"}'
147
+ ```
148
+
149
+ macOS/Linux(bash/zsh):
150
+
151
+ ```bash
152
+ printf '%s\n' '{"virtual":"1号维度","name":"第一团队"}' | weaver-work-cli --json hrm run hrm.org.resolve --input -
153
+ ```
154
+
155
+ 多维名不存在时(自动给出近似名称 + 该租户全部多维,不自动继续):
156
+
157
+ ```powershell
158
+ weaver-work-cli --json hrm run hrm.org.resolve --input-json '{"virtual":"客服维度","name":"云桥测试"}'
159
+ ```
160
+
161
+ ### 注意
162
+
163
+ - 覆盖关系:`hrm.org.resolve` 是「多维 + 名称」的**一步到位**入口;已有明确收敛条件(编号 `code`、上级组织 id 等)或已知组织 id 时,仍用 `hrm.org.query` / `hrm.org.detail`。
164
+ - 多维清单来自 `/api/bs/hrm/companyVirtual/listCompanyVirtual`(一次返回全量,无分页);`行政组织` 也在清单里(id 为 `1`)。
165
+ - 🔴 **「列多维」暂不支持,且不暴露入口**:`hrm.org.virtuals` 已下线(`hrm schema --full` 的 `withheldOperations` 中有声明),Agent 拿不到独立的维度清单接口。
166
+ - `not_found.availableVirtuals` 是**纠错辅助**(用户给的名字对不上时,顺手告知本租户有哪些维度),不是列维度能力——**不要故意构造一个不存在的维度名去套它**。
167
+ - 用户明确问「这个租户有哪些多维」→ 直接回答**暂不支持**,请其改用「维度名 + 组织名」查询。
168
+ - 维度 id 的唯一来源:`not_found.availableVirtuals`(全量)或维度歧义时的 `candidates`。
169
+ - 名称匹配不做拼音/别名/简称展开(`shortname` 只回显不参与匹配)。
170
+
68
171
  ## 多级路径查询(drill-down 编排)
69
172
 
70
173
  路径形如 `总部/研发部/产品组`,逐级用「父节点 id 作为上级条件 + 下一段名称」调用 `org.query`:
@@ -88,11 +191,14 @@ weaver-work-cli --json hrm run hrm.org.detail --input-json '{"id":"1000000000000
88
191
  - 分部与部门是两个不同接口(`browser/data/subcompany` 与 `browser/data/department`),CLI 用 `type` 区分;不传 `type` 默认查部门。
89
192
  - `org.detail` 详情查询**只需传 `id`**,服务端按记录自动判断分部/部门,无需传 `type`。
90
193
  - 组织节点 id 是长整型,按字符串传递。
91
- - 浏览按钮行含 `title`(`名称|全路径`),可直接用于路径确认/重建。
194
+ - 浏览按钮行含 `title`(`名称|上级路径`),行上另有 `supDepartment`(部门)/ `supSubDepartment`(分部)给同一信息;本节点全路径由 CLI 合成在 `fullPath`(`上级路径/名称`)。
195
+ - `hrm.org.resolve` 的行内字段还含 `virtualid`(所属多维 id)、`subcompanyid`(所属分部 id)、`hasSub`(是否有下级),已投影进 `org`。
92
196
 
93
197
  ## 失败处理
94
198
 
95
199
  - `empty_condition`:空条件拉取被拦截,先询问用户补条件。
96
200
  - `enum_invalid`:`type` 取值非法(仅 `subcompany`/`department`)。
97
201
  - `permission_denied`(`code=403`):HRM 读接口开关未开启,提示用户联系管理员开启。
202
+ - `virtual_required`/`name_required`:`hrm.org.resolve` 少传了多维(`virtual`/`virtualId`)或名称(`name`/`orgId`)。
203
+ - **「未找到 / 命中多个」不是错误**:`hrm.org.resolve` 仍 `ok: true`、退出 0,按 `data.status` 分派(`not_found` / `ambiguous`),不要当异常重试。
98
204
  - 认证类错误:引导用户执行 `weaver-work-cli auth login`。
@@ -15,7 +15,8 @@ dependencies:
15
15
  cliHelp: "weaver-work-cli contract --help"
16
16
  ---
17
17
 
18
- **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须先提示用户先补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行),并把下面两条待执行命令原样完整展示给用户;Agent 不能自行安装——必须先取得用户明确确认后再执行。用户确认后按顺序执行且仅执行一次:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
18
+ **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须调用宿主提供的提问/确认弹框,向用户说明必须补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行)及补齐计划,并把下面两条待执行命令原样完整展示在确认信息中;Agent 不能在未确认时自行安装。用户明确确认后,Agent 必须直接代为按顺序执行且每条仅执行一次,不得要求或引导用户手动执行:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
19
+ **`--is-connector` 判据**:用户明确使用连接器、或上下文要求用连接器完成任务 → 传 `true`;本次任务或上下文直接选择单独技能 → 不传;用户没有明确说明时,按**正在运行的这份 Skill 是哪一级**定——**用户级(条目标 `(user)`)不传,连接器级(标 `(connector)`)传**(同名 Skill 只会运行用户级那一份)。传 `true` 时不要再写 `--profile` / `--base-url`。完整规则见 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md)。
19
20
  认证和登录态只能按共享规则通过 `weaver-work-cli auth ...` 命令判断;禁止直接读取、列出、打印或解析用户主目录下的旧 `.e10-cli`、auth、config 或 Keychain 数据。
20
21
  所有命令通过 `weaver-work-cli --json contract run <operation>` 执行:简单 JSON 优先传 `--input-json '<json>'`,复杂或多行 JSON 先写入 UTF-8 文件再传 `--input <path>`,只有确认当前 shell 能稳定传管道时才使用 `--input -`。调用前先按需读取 references 下对应的文件,查参数结构,不要猜字段;**references 是第一信息源**,`weaver-work-cli contract schema` 是 operation、字段和风险等级的合约来源。
21
22
  命令示例、提示词和临时说明必须同时兼容 Windows 和 macOS/Linux;涉及 JSON 输入、用户目录、路径分隔符、Python 启动器、文件删除、目录查看或文件比对时,同时给 Windows PowerShell 与 macOS/Linux(bash/zsh)两套示例。Agent 先根据当前系统和 shell 选择对应示例,不确定时用 `node -p "process.platform"` 判断。Windows/PowerShell 下不要使用 `printf`、`$HOME/...`、`~/...`、bash 反斜杠续行、`rm/ls/diff/python3` 等 Unix-only 写法。
@@ -15,7 +15,7 @@ dependencies:
15
15
  cliHelp: "weaver-work-cli jiuchuanhui --help"
16
16
  ---
17
17
 
18
- **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须先提示用户先补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行),并把下面两条待执行命令原样完整展示给用户;Agent 不能自行安装——必须先取得用户明确确认后再执行。用户确认后按顺序执行且仅执行一次:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
18
+ **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须调用宿主提供的提问/确认弹框,向用户说明必须补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行)及补齐计划,并把下面两条待执行命令原样完整展示在确认信息中;Agent 不能在未确认时自行安装。用户明确确认后,Agent 必须直接代为按顺序执行且每条仅执行一次,不得要求或引导用户手动执行:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
19
19
  **`--is-connector` 判据**:用户明确使用连接器、或上下文要求用连接器完成任务 → 传 `true`;本次任务或上下文直接选择单独技能 → 不传;用户没有明确说明时,按**正在运行的这份 Skill 是哪一级**定——**用户级(条目标 `(user)`)不传,连接器级(标 `(connector)`)传**(同名 Skill 只会运行用户级那一份)。传 `true` 时不要再写 `--profile` / `--base-url`。完整规则见 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md)。
20
20
 
21
21
  认证和登录态只能按共享规则通过 `weaver-work-cli auth ...` 命令判断;请求头三件套由 CLI 统一注入(唯一权威声明见 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md) 的「请求头契约」章节),业务调用方不得覆盖,也不得在业务 JSON 中传入凭证类字段。禁止直接读取、列出、打印或解析用户主目录下的 `.e10-cli`、auth、config 或 Keychain 数据。
@@ -15,7 +15,7 @@ cliHelp: "weaver-work-cli ehr --help"
15
15
 
16
16
  # 泛微聚才林人事云
17
17
 
18
- **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须先提示用户先补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行),并把下面两条待执行命令原样完整展示给用户;Agent 不能自行安装——必须先取得用户明确确认后再执行。用户确认后按顺序执行且仅执行一次:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
18
+ **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须调用宿主提供的提问/确认弹框,向用户说明必须补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行)及补齐计划,并把下面两条待执行命令原样完整展示在确认信息中;Agent 不能在未确认时自行安装。用户明确确认后,Agent 必须直接代为按顺序执行且每条仅执行一次,不得要求或引导用户手动执行:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
19
19
  **`--is-connector` 判据**:用户明确使用连接器、或上下文要求用连接器完成任务 → 传 `true`;本次任务或上下文直接选择单独技能 → 不传;用户没有明确说明时,按**正在运行的这份 Skill 是哪一级**定——**用户级(条目标 `(user)`)不传,连接器级(标 `(connector)`)传**(同名 Skill 只会运行用户级那一份)。传 `true` 时不要再写 `--profile` / `--base-url`。完整规则见 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md)。
20
20
 
21
21
  本技能覆盖聚才林业务域:**人事档案(hr)**、**出勤管理(attend)**、**薪酬管理(salary)**、**招聘(recruit,读 + 写)**。招聘写操作走 prepare→apply 确认协议;撤销类写操作不实现,原因见 [`references/safety-boundaries.md`](references/safety-boundaries.md)。
@@ -15,7 +15,7 @@ dependencies:
15
15
  cliHelp: "weaver-work-cli mail --help"
16
16
  ---
17
17
 
18
- **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须先提示用户先补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行),并把下面两条待执行命令原样完整展示给用户;Agent 不能自行安装——必须先取得用户明确确认后再执行。用户确认后按顺序执行且仅执行一次:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
18
+ **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须调用宿主提供的提问/确认弹框,向用户说明必须补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行)及补齐计划,并把下面两条待执行命令原样完整展示在确认信息中;Agent 不能在未确认时自行安装。用户明确确认后,Agent 必须直接代为按顺序执行且每条仅执行一次,不得要求或引导用户手动执行:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
19
19
  **`--is-connector` 判据**:用户明确使用连接器、或上下文要求用连接器完成任务 → 传 `true`;本次任务或上下文直接选择单独技能 → 不传;用户没有明确说明时,按**正在运行的这份 Skill 是哪一级**定——**用户级(条目标 `(user)`)不传,连接器级(标 `(connector)`)传**(同名 Skill 只会运行用户级那一份)。传 `true` 时不要再写 `--profile` / `--base-url`。完整规则见 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md)。
20
20
 
21
21
  认证和登录态只能按共享规则通过 `weaver-work-cli auth ...` 命令判断;禁止直接读取、列出、打印或解析用户主目录下的旧 `.e10-cli`、auth、config 或 Keychain 数据。
@@ -17,7 +17,7 @@ cliHelp: "weaver-work-cli meeting --help"
17
17
 
18
18
  # 泛微 E10 会议管理 Skill(双模式:标准版 + EB 版)
19
19
 
20
- **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须先提示用户先补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行),并把下面两条待执行命令原样完整展示给用户;Agent 不能自行安装——必须先取得用户明确确认后再执行。用户确认后按顺序执行且仅执行一次:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
20
+ **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须调用宿主提供的提问/确认弹框,向用户说明必须补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行)及补齐计划,并把下面两条待执行命令原样完整展示在确认信息中;Agent 不能在未确认时自行安装。用户明确确认后,Agent 必须直接代为按顺序执行且每条仅执行一次,不得要求或引导用户手动执行:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
21
21
  **`--is-connector` 判据**:用户明确使用连接器、或上下文要求用连接器完成任务 → 传 `true`;本次任务或上下文直接选择单独技能 → 不传;用户没有明确说明时,按**正在运行的这份 Skill 是哪一级**定——**用户级(条目标 `(user)`)不传,连接器级(标 `(connector)`)传**(同名 Skill 只会运行用户级那一份)。传 `true` 时不要再写 `--profile` / `--base-url`。完整规则见 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md)。
22
22
 
23
23
  凭证边界:所有 E10 调用凭证一律由 `weaver-work-cli` 的登录托管凭据(`auth` 命令/profile 体系)提供,禁止硬编码任何密钥,禁止向用户索取 Cookie、ETEAMSID、Token 或密码。
@@ -17,7 +17,7 @@ cliHelp: "weaver-work-cli okr --help"
17
17
 
18
18
  # 泛微E10 OKR 目标管理
19
19
 
20
- **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须先提示用户先补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行),并把下面两条待执行命令原样完整展示给用户;Agent 不能自行安装——必须先取得用户明确确认后再执行。用户确认后按顺序执行且仅执行一次:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
20
+ **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须调用宿主提供的提问/确认弹框,向用户说明必须补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行)及补齐计划,并把下面两条待执行命令原样完整展示在确认信息中;Agent 不能在未确认时自行安装。用户明确确认后,Agent 必须直接代为按顺序执行且每条仅执行一次,不得要求或引导用户手动执行:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
21
21
  **`--is-connector` 判据**:用户明确使用连接器、或上下文要求用连接器完成任务 → 传 `true`;本次任务或上下文直接选择单独技能 → 不传;用户没有明确说明时,按**正在运行的这份 Skill 是哪一级**定——**用户级(条目标 `(user)`)不传,连接器级(标 `(connector)`)传**(同名 Skill 只会运行用户级那一份)。传 `true` 时不要再写 `--profile` / `--base-url`。完整规则见 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md)。
22
22
 
23
23
  本技能覆盖 OKR 目标管理业务域:**目标分页查询**、**目标详情**、**关键成果查询与保存**、**目标对齐**、**目标评论**、**目标详情页链接**、**链路判定**。所有写操作(新建/编辑目标、保存关键成果、添加目标对齐)全部走 `prepare -> apply` 确认协议。
@@ -573,7 +573,7 @@
573
573
  }
574
574
  },
575
575
  "artifactBaseline": {
576
- "aggregateSha256": "d0f0a278d8e96d1c9c2fd3422bc022fc0568a167f7326c5faaa588f2e4a26432",
576
+ "aggregateSha256": "a7f377dea03cae7c8dfb0db3eafd1b99a87af21c10ab5dd04773d7b4270d9475",
577
577
  "files": [
578
578
  {
579
579
  "path": "src/shortcuts/okr/errors.ts",
@@ -647,8 +647,8 @@
647
647
  },
648
648
  {
649
649
  "path": "skills/weaver-e10-okr/SKILL.md",
650
- "size": 10350,
651
- "sha256": "5d7036a7143a0af2a7c9886e8a600ede3cf72e153cbd27a5089a33c78ca297ea"
650
+ "size": 10465,
651
+ "sha256": "200e19e57c42b086b57294e3aacb6ab45d471c43374cf8c901a80644cd4e03d1"
652
652
  },
653
653
  {
654
654
  "path": "docs/okr.md",
@@ -15,7 +15,7 @@ cliHelp: "weaver-work-cli plan --help"
15
15
 
16
16
  # 泛微E10计划报告
17
17
 
18
- **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须先提示用户先补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行),并把下面两条待执行命令原样完整展示给用户;Agent 不能自行安装——必须先取得用户明确确认后再执行。用户确认后按顺序执行且仅执行一次:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
18
+ **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须调用宿主提供的提问/确认弹框,向用户说明必须补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行)及补齐计划,并把下面两条待执行命令原样完整展示在确认信息中;Agent 不能在未确认时自行安装。用户明确确认后,Agent 必须直接代为按顺序执行且每条仅执行一次,不得要求或引导用户手动执行:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
19
19
  **`--is-connector` 判据**:用户明确使用连接器、或上下文要求用连接器完成任务 → 传 `true`;本次任务或上下文直接选择单独技能 → 不传;用户没有明确说明时,按**正在运行的这份 Skill 是哪一级**定——**用户级(条目标 `(user)`)不传,连接器级(标 `(connector)`)传**(同名 Skill 只会运行用户级那一份)。传 `true` 时不要再写 `--profile` / `--base-url`。完整规则见 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md)。
20
20
 
21
21
  本技能覆盖报告业务域:**汇总生成报告**(多模块采集后整合)、**查询报告详情**、**分页查询报告**、**新建**、**修改**、**发布**、**撤回**、**发送提交提醒**、**查看报告评论**。写操作全部走 prepare→apply 确认协议。
@@ -17,7 +17,7 @@ cliHelp: "weaver-work-cli fna --help"
17
17
 
18
18
  # weaver-work-cli 齐业成费控(FNA)Skill
19
19
 
20
- **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须先提示用户先补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行),并把下面两条待执行命令原样完整展示给用户;Agent 不能自行安装——必须先取得用户明确确认后再执行。用户确认后按顺序执行且仅执行一次:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
20
+ **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须调用宿主提供的提问/确认弹框,向用户说明必须补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行)及补齐计划,并把下面两条待执行命令原样完整展示在确认信息中;Agent 不能在未确认时自行安装。用户明确确认后,Agent 必须直接代为按顺序执行且每条仅执行一次,不得要求或引导用户手动执行:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
21
21
  **`--is-connector` 判据**:用户明确使用连接器、或上下文要求用连接器完成任务 → 传 `true`;本次任务或上下文直接选择单独技能 → 不传;用户没有明确说明时,按**正在运行的这份 Skill 是哪一级**定——**用户级(条目标 `(user)`)不传,连接器级(标 `(connector)`)传**(同名 Skill 只会运行用户级那一份)。传 `true` 时不要再写 `--profile` / `--base-url`。完整规则见 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md)。
22
22
 
23
23
  所有调用统一走 `weaver-work-cli fna ...`,禁止绕过 CLI 直接 curl/fetch E10 接口,禁止读取、复制、打印或解析 Cookie、ETEAMSID、Token 或 `~/.e10-cli` 等认证目录;登录诊断只允许 `weaver-work-cli auth root/status/profile list/profile current`、`weaver-work-cli doctor --e10` 和业务命令 JSON 错误。
@@ -49,27 +49,24 @@ Token、Cookie、ETEAMSID 和业务凭证**只能由 `weaver-work-cli` 内部读
49
49
  - 执行 `weaver-work-cli auth export-weaver-env` 并 `eval` / `Invoke-Expression` 到当前 shell,或把 `WEAVER_*` 值写进命令、日志、报告;
50
50
  - 要求用户粘贴、或在回复中展示、转述任何凭证。
51
51
 
52
- 需要登录态时只运行 `weaver-work-cli auth xiaoe`(业务命令也会自动尝试)。CLI 内部按「平台注入 `XIAOE_USER_TOKEN` + `XIAOE_DOMAIN` → 宿主 `tokens.py` → 桌面 XiaoE 客户端会话 → `WEAVER_XIAOE_*` 环境映射」顺序取凭据;沙箱(Linux、无桌面客户端、无 `tokens.py`)只会命中第一条,其余链路不可用时由 CLI 自行报错降级,Agent 不要替它安装 Python 依赖或手工取 Token。
52
+ 需要登录态时只运行 `weaver-work-cli auth xiaoe`(业务命令也会自动尝试)。CLI 内部按「平台凭证 Node 换票 → CLI 自带 `xiaoe_env.py` 兼容换票 → 宿主 `tokens.py` → 桌面 XiaoE 客户端会话 → `WEAVER_XIAOE_*` 环境映射」顺序取凭据;其中 `XIAOE_DOMAIN` 是 XiaoE/erpa 换票服务地址,不是 E10 地址。`xiaoe_env.py` 属于 CLI npm 包,不放入 shared Skill,且只能由 CLI 内部执行和解析。失败时 CLI 返回结构化错误,Agent 不要替它执行脚本、安装 Python 依赖、手工取 Token 或自动引导用户在本地终端重复登录。
53
53
 
54
54
  1. 未登录、登录失效、准备执行业务命令前需要确认 E10 会话,或 `auth status --no-check` 显示未登录时,先运行:
55
55
  ```text
56
56
  weaver-work-cli auth xiaoe
57
57
  ```
58
58
  2. 不得因为本地存在旧 profile、`auth profile current` 指向旧环境,或 `auth profile list` 里只有旧环境,就跳过 XiaoE 统一登录;也不得先要求用户选择旧 profile 或输入域名。
59
- 3. XiaoE 统一登录由 CLI 按序取凭证:① 平台注入的 `XIAOE_USER_TOKEN` + `XIAOE_DOMAIN`(沙箱唯一可用来源,不依赖桌面客户端与 Python);② 宿主 `xiaoeUserData/tokens.py`(仅桌面宿主);③ 内置原生实现读取桌面 XiaoE 客户端会话(`XiaoE/Robots/<id>/user_settings.json`)换取 `eteamId`;④ `WEAVER_XIAOE_*` 环境映射。宿主只注入 `XIAOE_DOMAIN`、`XIAOE_USER_TOKEN` 等平台变量,不会注入 ETEAMSID 环境变量,CLI 也不读取 `XIAOE_ETEAMSID`。Agent 不要打印、转述、索取或要求用户手动设置这些凭证,也不要因为脚本报缺依赖就中断登录或让用户装 Python 包——降级由 CLI 内部完成。
60
- 4. `auth xiaoe` 和未显式指定 `--auth` / `--profile` 的业务命令都会先尝试上述统一登录;`tokens.py` 只返回 `eteamId` 时,CLI 优先用宿主注入的 `XIAOE_DOMAIN` 作为兜底域名,没有时才采用 CLI 资料包内置的兜底 E10 域名(地址由资料包提供,不在文档中写死)。Token、Cookie、ETEAMSID 仍属于凭证,禁止在回复中展示。
61
- 5. XiaoE 统一登录走不通时,CLI 必须先反馈未拿到登录信息的原因;`auth xiaoe` 随后再降级打开浏览器 OAuth,降级等待必须遵守「浏览器 OAuth 降级防挂起」规则。业务命令不得自动沿用旧 profile;如需网页登录,先运行 `weaver-work-cli auth xiaoe` 或由用户明确改用 `weaver-work-cli auth login`。
59
+ 3. XiaoE 统一登录由 CLI 按序取凭证:① 平台注入的 `XIAOE_USER_TOKEN` + `XIAOE_DOMAIN`,先走 Node 换票,再由 CLI npm 包自带的标准库 `xiaoe_env.py` 作兼容回退;② 宿主 `xiaoeUserData/tokens.py`(仅桌面宿主,CLI 在 macOS/Windows 都会先自动发现 XiaoE 客户端内置 Python,再回退到系统 Python);③ 内置原生实现读取桌面 XiaoE 客户端会话(`XiaoE/Robots/<id>/user_settings.json`)换取 `eteamId`;④ `WEAVER_XIAOE_*` 环境映射。宿主只注入 `XIAOE_DOMAIN`、`XIAOE_USER_TOKEN` 等平台变量,不会注入 ETEAMSID 环境变量,CLI 也不读取 `XIAOE_ETEAMSID`。Agent 不要打印、转述、索取或要求用户手动设置这些凭证,也不要直接执行任一脚本或因为脚本报缺依赖就让用户安装 Python 包——降级由 CLI 内部完成。
60
+ 4. `auth xiaoe` 和未显式指定 `--auth` / `--profile` 的业务命令都会先尝试上述统一登录。E10 目标地址按「显式 `--base-url` → 专用 `WEAVER_XIAOE_*` E10 配置/映射 → 当前 profile → CLI 内置默认值」解析,绝不能把 `XIAOE_DOMAIN` 当作 E10 地址。Token、Cookie、ETEAMSID 仍属于凭证,禁止在回复中展示。
61
+ 5. XiaoE 统一登录走不通时,CLI 必须反馈未拿到登录信息的原因。Web/Linux 环境的 `auth xiaoe` 返回 `authentication/xiaoe_web_credential_unavailable`,不会自动打开 localhost 浏览器 OAuth;macOS/Windows 桌面宿主才允许自动降级。用户明确要求网页登录、且 CLI 与浏览器同机时,再显式运行 `weaver-work-cli auth login`。
62
62
  6. `auth status --no-check` 只是本地诊断,不会主动触发 XiaoE 统一登录;业务命令和 `auth xiaoe` 才会尝试写入统一登录态。具体读取 [`e10-auth-and-session.md`](references/e10-auth-and-session.md)。
63
63
 
64
- ### 浏览器 OAuth 降级防挂起(顶层强规则)
64
+ ### 浏览器 OAuth 防挂起(顶层强规则)
65
65
 
66
- `auth xiaoe` / `auth login` 的浏览器 OAuth 降级会在本机 `127.0.0.1:19800` 监听回调并无限等待,命令自身不会超时退出。在 Agent 沙箱/托管环境(没有本地浏览器,或浏览器与 CLI 不在同一台机器/容器)中,外部浏览器无法回调容器内 `127.0.0.1:19800`,该路径结构性不可达,命令会一直挂起直到被外部超时掐断(退出码 124),用户感知为「卡住 / 跑很久」。因此:
66
+ `auth login`(以及 macOS/Windows 桌面宿主上的 `auth xiaoe` 降级)会在本机 `127.0.0.1:19800` 监听浏览器回调,最长等待 5 分钟。在 Agent 沙箱/托管环境中,外部浏览器无法回调容器内 `127.0.0.1:19800`,因此:
67
67
 
68
- 1. 运行 `auth xiaoe` 时必须防挂起:以后台方式启动并限时观察(上限 300 秒 / 5 分钟)。一旦输出出现 `Waiting for E10 authorization callback`(说明统一登录已失败、进入浏览器 OAuth 等待),立即终止该进程,不得继续等待。
69
- 2. 进入浏览器 OAuth 等待后:
70
- - 先向用户反馈 XiaoE 统一登录失败的实际原因;
71
- - 沙箱/托管环境:不要替用户执行浏览器登录等待,把完整命令交给用户在其本地终端执行,例如 `weaver-work-cli auth login --base-url "<用户确认的登录域名>" --agent_type "<当前智能体名称>"`;
72
- - 本地环境(CLI 与浏览器同机):可继续执行浏览器登录,但仍须限时等待,超时未完成即终止并反馈。
68
+ 1. Web/Linux 中运行 `auth xiaoe` 时,收到 `xiaoe_web_credential_unavailable` 即反馈宿主登录态/凭据注入异常,不要自动切换 `auth login`,也不要要求用户去本地终端重复执行命令。
69
+ 2. 只有用户明确要求浏览器授权且确认 CLI 与浏览器同机时,才运行 `auth login`;仍须限时等待,超时未完成即终止并反馈。
73
70
  3. 用户无法本地执行浏览器登录时,经用户明确同意后改用保底方式 `weaver-work-cli auth set --eteamsid "<ETEAMSID>" --base-url "<用户确认的登录域名>"`,由用户从已登录浏览器主动提供 ETEAMSID;Agent 不得索取、展示或转述该值。
74
71
  4. 严禁不加限制地前台运行 `auth xiaoe` / `auth login` 并等待 OAuth 回调。
75
72
 
@@ -162,8 +159,8 @@ User-Agent: AgentType=<agentType>,IsAgent=true
162
159
 
163
160
  5. 不能猜测 CLI 未暴露的内部字段、接口路径、ID 解析逻辑或回查语义。
164
161
 
165
- 6. 未登录或登录失效(`authentication` / `session_expired` / `auth status` 未登录)时,XiaoE 宿主环境必须先运行 `weaver-work-cli auth xiaoe` 尝试统一登录;统一登录不可用时必须先反馈未拿到登录信息的原因,然后 `auth xiaoe` 再降级打开浏览器 OAuth,降级等待必须遵守「浏览器 OAuth 降级防挂起」规则,禁止前台无限等待回调。业务命令不得自动沿用旧 profile。执行浏览器登录时必须传入 `--agent_type "<当前智能体名称>"`,让授权确认页展示发起登录验证的智能体;**禁止**使用示例占位域名登录,也禁止在拿到域名前反复重试业务命令。具体流程读取 [`e10-auth-and-session.md`](references/e10-auth-and-session.md)。
162
+ 6. 未登录或登录失效(`authentication` / `session_expired` / `auth status` 未登录)时,XiaoE 宿主环境必须先运行 `weaver-work-cli auth xiaoe` 尝试统一登录;统一登录不可用时必须反馈 CLI 原因。Web/Linux 环境不得把 `xiaoe_web_credential_unavailable` 自动改成浏览器 OAuth 或本地终端操作;只有用户明确要求且 CLI 与浏览器同机时才运行 `auth login`。执行浏览器登录时必须传入 `--agent_type "<当前智能体名称>"`,让授权确认页展示发起登录验证的智能体;**禁止**使用示例占位域名登录,也禁止在拿到域名前反复重试业务命令。具体流程读取 [`e10-auth-and-session.md`](references/e10-auth-and-session.md)。
166
163
 
167
164
  7. 附件、图片上传或文件解析属于敏感数据处理。即便 operation 风险等级不是高风险写入,也必须先取得用户对“文件内容可能进入大模型/外部解析服务”的明确确认;不能把用户仅提供文件路径或文件名视为同意解析或上传。
168
165
 
169
- 8. 在 XiaoE 宿主环境中,CLI 按顺序从平台注入凭证(`XIAOE_USER_TOKEN` + `XIAOE_DOMAIN`)、宿主 `xiaoeUserData/tokens.py`、内置原生实现读取的桌面 XiaoE 客户端会话(`XiaoE/Robots/<id>/user_settings.json`)、`WEAVER_XIAOE_*` 环境映射读取支持统一登录的凭证(宿主不会注入 ETEAMSID 环境变量);未显式传域名时优先使用凭证结果或 `XIAOE_DOMAIN`,再其次才使用当前 profile,最后兜底 CLI 资料包内置默认域名(地址由资料包提供,不在文档中写死)。业务命令会在未显式指定 `--auth` / `--profile` 时自动优先尝试 XiaoE 统一登录;Agent 也可以显式调用 `weaver-work-cli auth xiaoe`。不要要求用户提供、展示或手动设置这些凭证。XiaoE 统一登录失败、当前域名不在支持范围内或用户切换访问域名时,`auth xiaoe` 必须先反馈原因,再自动降级到浏览器 OAuth,降级等待必须遵守「浏览器 OAuth 降级防挂起」规则。
166
+ 8. 在 XiaoE 宿主环境中,CLI 按顺序从平台注入凭证(Node 换票后由 CLI npm 包自带 `xiaoe_env.py` 兼容回退)、宿主 `xiaoeUserData/tokens.py`、内置原生实现读取的桌面 XiaoE 客户端会话(`XiaoE/Robots/<id>/user_settings.json`)、`WEAVER_XIAOE_*` 环境映射读取支持统一登录的凭证(宿主不会注入 ETEAMSID 环境变量)。shared Skill 不携带任何 Token 脚本。`XIAOE_DOMAIN` 仅是 XiaoE/erpa 换票服务地址;E10 目标按显式参数、专用 E10 配置/映射、当前 profile、CLI 默认值的顺序解析。业务命令会在未显式指定 `--auth` / `--profile` 时自动优先尝试 XiaoE 统一登录;Agent 也可以显式调用 `weaver-work-cli auth xiaoe`。不要要求用户提供、展示或手动设置这些凭证。Web/Linux 失败时反馈结构化错误,不自动降级浏览器;macOS/Windows 桌面宿主可由 CLI 自动降级。