weaver-work-cli 0.1.25 → 0.1.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -30
- package/dist/cmd/root.js +1 -0
- package/dist/cmd/setup/index.js +1 -1
- package/dist/core/runtime-agent.js +19 -0
- package/dist/internal/e10/auth/commands.js +48 -33
- package/dist/internal/e10/auth/messages.js +3 -0
- package/dist/internal/e10/auth/session.js +8 -0
- package/dist/internal/e10/auth/xiaoe.js +62 -43
- package/dist/internal/e10/auth-recovery.js +148 -0
- package/dist/internal/e10/client.js +47 -15
- package/dist/internal/e10/context.js +9 -31
- package/dist/internal/e10/index.js +1 -0
- package/dist/internal/e10/request-runtime.js +51 -9
- package/dist/shortcuts/archive/host.js +3 -2
- package/dist/shortcuts/archive/manifest.js +1 -1
- package/dist/shortcuts/archive-oa/constants.js +66 -0
- package/dist/shortcuts/archive-oa/continuation.js +70 -0
- package/dist/shortcuts/archive-oa/errors.js +53 -0
- package/dist/shortcuts/archive-oa/host.js +158 -0
- package/dist/shortcuts/archive-oa/index.js +225 -0
- package/dist/shortcuts/archive-oa/manifest.js +62 -0
- package/dist/shortcuts/archive-oa/operations/borrow-car.js +159 -0
- package/dist/shortcuts/archive-oa/operations/borrow-url.js +108 -0
- package/dist/shortcuts/archive-oa/operations/confirm.js +48 -0
- package/dist/shortcuts/archive-oa/operations/contract.js +120 -0
- package/dist/shortcuts/archive-oa/operations/locate.js +50 -0
- package/dist/shortcuts/archive-oa/operations/registry.js +40 -0
- package/dist/shortcuts/archive-oa/operations/shared.js +181 -0
- package/dist/shortcuts/archive-oa/operations/types.js +45 -0
- package/dist/shortcuts/archive-oa/operations.js +13 -0
- package/dist/shortcuts/asset/host.js +7 -6
- package/dist/shortcuts/blog/host.js +4 -3
- package/dist/shortcuts/caizhilian/host.js +3 -2
- package/dist/shortcuts/caizhilian/manifest.js +1 -1
- package/dist/shortcuts/calendar/host.js +2 -1
- package/dist/shortcuts/contract/host.js +34 -59
- package/dist/shortcuts/ehr/host.js +2 -1
- package/dist/shortcuts/esb/host.js +2 -1
- package/dist/shortcuts/fna/host.js +6 -3
- package/dist/shortcuts/fna/manifest.js +10 -5
- package/dist/shortcuts/fna/operations/expense-chart.js +162 -0
- package/dist/shortcuts/fna/operations/registry.js +2 -0
- package/dist/shortcuts/hrm/host.js +2 -1
- package/dist/shortcuts/im/host.js +3 -2
- package/dist/shortcuts/index.js +2 -0
- package/dist/shortcuts/invoice/host.js +9 -7
- package/dist/shortcuts/invoice/manifest.js +38 -47
- package/dist/shortcuts/invoice/operations/issuing-qys.js +328 -0
- package/dist/shortcuts/invoice/operations/registry.js +2 -3
- package/dist/shortcuts/jiuchuanhui/host.js +2 -1
- package/dist/shortcuts/mail/host.js +2 -1
- package/dist/shortcuts/meeting/host.js +2 -1
- package/dist/shortcuts/meeting/operations/eb/conflict.js +78 -12
- package/dist/shortcuts/okr/host.js +2 -1
- package/dist/shortcuts/plan/host.js +2 -1
- package/dist/shortcuts/project/host.js +2 -1
- package/dist/shortcuts/workflow/endpoints.js +11 -0
- package/dist/shortcuts/workflow/host.js +5 -7
- package/dist/shortcuts/workflow/index.js +6 -36
- package/dist/shortcuts/workflow/operations/chatscene.js +252 -0
- package/dist/shortcuts/workflow/operations/form.js +1047 -191
- package/dist/shortcuts/workflow/operations/read.js +137 -8
- package/dist/shortcuts/workflow/operations/sign-input.js +106 -0
- package/dist/shortcuts/workflow/operations/write.js +9 -1
- package/dist/shortcuts/workflow/stdout-compact.js +16 -1
- package/docs/SKILL.md +1 -1
- package/docs/_catalog.md +1 -1
- package/docs/agent-invoice.md +1 -1
- package/docs/archive-oa.md +79 -0
- package/docs/caizhilian.md +1 -1
- package/docs/e10-auth.md +7 -6
- package/docs/fna.md +7 -3
- package/docs/invoice.md +4 -6
- package/package.json +1 -1
- package/skill-template/business-info.json +20 -1
- package/skill-template/domains/archive-oa.md +19 -0
- package/skill-template/domains/caizhilian.md +2 -1
- package/skill-template/domains/qiyecheng.md +1 -0
- package/skill-template/domains/yepiaotong.md +8 -4
- package/skill-template/skill-template.md +1 -0
- package/skills/weaver-e10-archive-oa/SKILL.md +159 -0
- package/skills/weaver-e10-archive-oa/references/archive-locate.md +49 -0
- package/skills/weaver-e10-archive-oa/references/borrow-car.md +76 -0
- package/skills/weaver-e10-archive-oa/references/borrow-flow.md +53 -0
- package/skills/weaver-e10-archive-oa/references/contract-search.md +63 -0
- package/skills/weaver-e10-archive-oa/references/disabled-capabilities.md +29 -0
- package/skills/weaver-e10-archive-oa/references/qys-contract-search.md +47 -0
- package/skills/weaver-e10-archive-oa/references/source-manifest.json +400 -0
- package/skills/weaver-e10-blog/SKILL.md +6 -1
- package/skills/weaver-e10-blog/references/blog-query.md +3 -1
- package/skills/weaver-e10-builder/SKILL.md +22 -0
- package/skills/weaver-e10-caizhilian/SKILL.md +47 -16
- package/skills/weaver-e10-caizhilian/references/action-flow.md +70 -0
- package/skills/weaver-e10-caizhilian/references/agent-entry.md +12 -4
- package/skills/weaver-e10-caizhilian/references/auth-and-install.md +207 -0
- package/skills/weaver-e10-caizhilian/references/collaboration.md +5 -3
- package/skills/weaver-e10-caizhilian/references/document.md +33 -11
- package/skills/weaver-e10-caizhilian/references/file-collection.md +57 -54
- package/skills/weaver-e10-caizhilian/references/file-upload.md +5 -6
- package/skills/weaver-e10-caizhilian/references/files.md +9 -3
- package/skills/weaver-e10-caizhilian/references/folder.md +48 -16
- package/skills/weaver-e10-caizhilian/references/host-executor-prompt.md +32 -0
- package/skills/weaver-e10-caizhilian/references/host-platform-integration.md +46 -0
- package/skills/weaver-e10-caizhilian/references/rule-index.md +56 -0
- package/skills/weaver-e10-caizhilian/references/setting-attach.md +17 -54
- package/skills/weaver-e10-caizhilian/references/setting-backup.md +16 -63
- package/skills/weaver-e10-caizhilian/references/setting-encrypt.md +24 -64
- package/skills/weaver-e10-caizhilian/references/setting-storage-docs-summary.md +126 -0
- package/skills/weaver-e10-caizhilian/references/setting-storage-field-map.md +57 -0
- package/skills/weaver-e10-caizhilian/references/setting-storage.md +143 -548
- package/skills/weaver-e10-caizhilian/references/source-manifest.json +7 -7
- package/skills/weaver-e10-caizhilian/references/task-workflow.md +87 -0
- package/skills/weaver-e10-caizhilian/references/withheld.md +21 -45
- package/skills/weaver-e10-caizhilian/references/write-protocol.md +7 -0
- package/skills/weaver-e10-calendar/SKILL.md +6 -1
- package/skills/weaver-e10-esb/SKILL.md +8 -0
- package/skills/weaver-e10-esb/references/input-format.md +3 -1
- package/skills/weaver-e10-esb/references/source-manifest.json +5 -5
- package/skills/weaver-e10-hrm/SKILL.md +6 -1
- package/skills/weaver-e10-hrm/references/employee.md +1 -1
- package/skills/weaver-e10-hrm/references/org.md +1 -1
- package/skills/weaver-e10-hrm/references/position.md +1 -1
- package/skills/weaver-e10-jinchengda/SKILL.md +2 -1
- package/skills/weaver-e10-jinchengda/references/contract-agent-entry.md +1 -1
- package/skills/weaver-e10-jiuchuanhui/SKILL.md +6 -1
- package/skills/weaver-e10-jucailin/SKILL.md +6 -1
- package/skills/weaver-e10-jucailin/references/hr-contact.md +1 -1
- package/skills/weaver-e10-jucailin/references/salary.md +1 -1
- package/skills/weaver-e10-mail/SKILL.md +6 -1
- package/skills/weaver-e10-meeting/SKILL.md +11 -6
- package/skills/weaver-e10-meeting/references/meeting-eb.md +7 -3
- package/skills/weaver-e10-meeting/references/meeting-queries.md +3 -1
- package/skills/weaver-e10-meeting/references/meeting-verification.md +4 -2
- package/skills/weaver-e10-okr/SKILL.md +6 -1
- package/skills/weaver-e10-okr/references/source-manifest.json +5 -5
- package/skills/weaver-e10-plan/SKILL.md +6 -1
- package/skills/weaver-e10-plan/references/plan-overview-and-routing.md +3 -1
- package/skills/weaver-e10-plan/references/plan-report-query.md +3 -1
- package/skills/weaver-e10-plan/references/source-manifest.json +7 -7
- package/skills/weaver-e10-qiyecheng/SKILL.md +16 -6
- package/skills/weaver-e10-qiyecheng/references/catalog.md +6 -3
- package/skills/weaver-e10-qiyecheng/references/expense-center.md +2 -0
- package/skills/weaver-e10-qiyecheng/references/expense-chart.md +78 -0
- package/skills/weaver-e10-qiyecheng/references/source-manifest.json +87 -33
- package/skills/weaver-e10-shared/SKILL.md +53 -28
- package/skills/weaver-e10-shared/references/e10-auth-and-session.md +22 -20
- package/skills/weaver-e10-shared/references/non-interactive-environment.md +13 -13
- package/skills/weaver-e10-shared/references/weaver-e10-installation.md +3 -1
- package/skills/weaver-e10-wenshuding/SKILL.md +6 -1
- package/skills/weaver-e10-wenshuding/references/source-manifest.json +3 -3
- package/skills/weaver-e10-workflow/references/source-manifest.json +33 -24
- package/skills/weaver-e10-workflow/references/workflow-create.md +41 -26
- package/skills/weaver-e10-yepiaotong/SKILL.md +23 -18
- package/skills/weaver-e10-yepiaotong/references/invoice-issuing-examples.md +87 -45
- package/skills/weaver-e10-yepiaotong/references/invoice-issuing-form-fill-rules.md +152 -0
- package/skills/weaver-e10-yepiaotong/references/invoice-issuing-workflow.md +210 -0
- package/skills/weaver-e10-yepiaotong/references/invoice-reim.md +59 -36
- package/skills/weaver-e10-yepiaotong/references/reim-api-reference.md +63 -512
- package/skills/weaver-e10-yepiaotong/references/reim-examples.md +205 -346
- package/skills/weaver-e10-yepiaotong/references/reim-expense-subject-rules.md +4 -5
- package/skills/weaver-e10-yepiaotong/references/reim-form-fill-rules.md +231 -344
- package/skills/weaver-e10-yepiaotong/references/reim-phone-subsidy-rules.md +5 -5
- package/skills/weaver-e10-yepiaotong/references/reim-workflow.md +201 -162
- package/skills/weaver-e10-yepiaotong/references/source-manifest.json +121 -145
- package/skills/weaver-e10-yimiaoban/SKILL.md +9 -2
- package/skills/weaver-e10-yimiaoban/references/file-user-i18n.md +1 -1
- package/skills/weaver-e10-yimiaoban/references/msg-read.md +1 -1
- package/skills/weaver-e10-yimiaoban/references/source-manifest.json +9 -9
- package/skills/weaver-e10-ziguanjia/SKILL.md +6 -1
- package/dist/shortcuts/invoice/operations/issuing.js +0 -198
- package/skills/weaver-e10-yepiaotong/references/invoice-issuing-field-rules.md +0 -161
- package/skills/weaver-e10-yepiaotong/references/invoice-issuing.md +0 -107
- package/skills/weaver-e10-yepiaotong/references/reim-fast-path.md +0 -119
|
@@ -5,7 +5,7 @@ display_name_en: Weaver E10 Document Management
|
|
|
5
5
|
description: "泛微E10采知连知识管理系统Skill,包含多个功能模块,覆盖文档创建/搜索/编辑/比对、附件管理、文件夹操作、参与人与标签管理、文档共享与权限设置、文件存储/备份/加解密/附件设置、FTP/SFTP文件采集、本地文件上传。"
|
|
6
6
|
description_zh: "泛微E10采知连知识管理系统Skill,包含多个功能模块,覆盖文档创建/搜索/编辑/比对、附件管理、文件夹操作、参与人与标签管理、文档共享与权限设置、文件存储/备份/加解密/附件设置、FTP/SFTP文件采集、本地文件上传。"
|
|
7
7
|
description_en: "Weaver E10 document management Skill with multiple functional modules covering document CRUD, attachments, folders, sharing, permissions, file settings, FTP/SFTP collection, and file upload."
|
|
8
|
-
version: 1.1.
|
|
8
|
+
version: 1.1.36
|
|
9
9
|
author: 泛微网络科技股份有限公司
|
|
10
10
|
agent_created: true
|
|
11
11
|
requires:
|
|
@@ -13,14 +13,29 @@ requires:
|
|
|
13
13
|
cliHelp: "weaver-work-cli caizhilian --help"
|
|
14
14
|
---
|
|
15
15
|
|
|
16
|
-
**CRITICAL —
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
16
|
+
**CRITICAL — 开始前先读共享规则**:同级目录存在 `weaver-e10-shared` 技能时,MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md)(安装、E10 认证、JSON 输出和高风险写入规则)。
|
|
17
|
+
若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须调用宿主提供的提问/确认弹框,向用户说明必须补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行)及补齐计划,并把下面两条待执行命令原样完整展示在确认信息中;Agent 不能在未确认时自行安装。
|
|
18
|
+
用户明确确认后,Agent 必须直接代为按顺序执行且每条仅执行一次,不得要求或引导用户手动执行:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,
|
|
19
|
+
`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,
|
|
20
|
+
导致本技能依然读不到共享规则。
|
|
21
|
+
命令均成功后重新读取共享规则;若环境中确实无法补齐共享规则,停止依赖登录态的业务操作,告知用户共享认证规则缺失;不要在业务 Skill 中猜测宿主或写死登录命令。
|
|
22
|
+
**`--is-connector` 判据**:用户明确使用连接器、或上下文要求用连接器完成任务 → 传 `true`;本次任务或上下文直接选择单独技能 → 不传;用户没有明确说明时,按**正在运行的这份 Skill 是哪一级**定——**用户级(条目标 `(user)`)不传,连接器级(标 `(connector)`)传**(同名 Skill 只会运行用户级那一份)。
|
|
23
|
+
传 `true` 时不要再写 `--profile` / `--base-url`。
|
|
24
|
+
完整规则见 [`auth-and-install.md`](references/auth-and-install.md)。
|
|
25
|
+
|
|
26
|
+
认证与登录态只能按 [`auth-and-install.md`](references/auth-and-install.md) 的规定通过 `weaver-work-cli auth ...` 判断:本 Skill 不自行发起 HTTP 请求,请求头凭证由 CLI 统一注入,Agent 不手写、不索取、不转存,也不得直接读取、列出、打印或解析用户主目录下的旧 `.e10-cli`、auth、config 或 Keychain 数据。业务入参里出现认证字段会被 CLI 拒绝或剥离。
|
|
27
|
+
请求头三件套由 CLI 统一注入、缺一不可:Cookie: <完整原始 Cookie 串>(禁止裁剪/去重/改写)、eteamsid: <ETEAMSID>、
|
|
28
|
+
User-Agent: AgentType=<agentType>,IsAgent=true。
|
|
29
|
+
完整契约见 [`auth-and-install.md`](references/auth-and-install.md) 的「请求头契约」。
|
|
30
|
+
|
|
31
|
+
所有命令通过 `weaver-work-cli --json caizhilian run <operation>` 执行:简单 JSON 优先传 `--input-json '<json>'`,复杂或多行 JSON 先写入 UTF-8 文件再传 `--input <path>`,只有确认当前 shell 能稳定传管道时才使用 `--input -`。
|
|
32
|
+
**不要写内联脚本包装调用**——自写脚本在中文与 Windows 环境下容易出现编码、转义问题,且脚本报错时无法判断调用是否已生效,
|
|
33
|
+
容易导致误判或重复提交。
|
|
34
|
+
调用前先按需读取 references 下对应的文件查参数结构,不要猜字段;**references 是第一信息源**,`weaver-work-cli caizhilian schema` 是 operation、字段和风险等级的合约来源,`weaver-work-cli caizhilian operations` 是按资源分组的能力目录(含 `withheldOperations`)。
|
|
35
|
+
|
|
36
|
+
命令示例、提示词和临时说明必须同时兼容 Windows 和 macOS/Linux;涉及 JSON 输入、用户目录、路径分隔符、文件上传下载、目录查看或文件比对时,同时给 Windows PowerShell 与 macOS/Linux(bash/zsh)两套示例。Agent 先根据当前系统和 shell 选择对应示例,不确定时用 `node -p "process.platform"` 判断。
|
|
37
|
+
Windows/PowerShell 下不要使用 `printf`、`$HOME/...`、`~/...`、bash 反斜杠续行、
|
|
38
|
+
`rm/ls/diff/python3` 等 Unix-only 写法。
|
|
24
39
|
|
|
25
40
|
涉及附件、封面图片、正文文件、本地文件上传或下载落盘的操作,执行前必须提醒用户:文件内容可能被上传到 E10 采知连文档中心或文件服务器、下载内容会写入本地磁盘,并可能进入当前大模型上下文用于理解和处理;必须等待用户明确确认后才继续。
|
|
26
41
|
|
|
@@ -48,6 +63,7 @@ cliHelp: "weaver-work-cli caizhilian --help"
|
|
|
48
63
|
| 想做什么 | 命令 | 按需读取 reference |
|
|
49
64
|
|---|---|---|
|
|
50
65
|
| 查看可用 operation、字段和风险等级 | `caizhilian schema` / `caizhilian operations` | [`agent-entry.md`](references/agent-entry.md) |
|
|
66
|
+
| 安装检查、登录、登录失效、切换已有环境、超时与重试预算 | `weaver-work-cli --version`、`auth status`、`auth xiaoe`、`auth login`、`auth profile use` | [`auth-and-install.md`](references/auth-and-install.md) |
|
|
51
67
|
| 接口连通性与登录态自检 | `caizhilian health` | [`agent-entry.md`](references/agent-entry.md) |
|
|
52
68
|
| 检索文档 / 查文档详情 / 查当前登录人 | `caizhilian search`、`caizhilian get`、`caizhilian run caizhilian.document.search` / `.get`、`caizhilian.user.current` | [`document.md`](references/document.md) |
|
|
53
69
|
| 创建文档(HTML / Markdown / Office / 批量上传) | `caizhilian run caizhilian.document.create-html|create-markdown|create-office|create-by-upload.prepare/apply` | [`document.md`](references/document.md) |
|
|
@@ -64,8 +80,12 @@ cliHelp: "weaver-work-cli caizhilian --help"
|
|
|
64
80
|
| 备份设置(开关、规则 CRUD、启停) | `caizhilian run caizhilian.setting-backup.get` / `.set.prepare` / `.set.apply` / `.rule.*` | [`setting-backup.md`](references/setting-backup.md) |
|
|
65
81
|
| 加解密设置(8 项配置) | `caizhilian run caizhilian.setting-encrypt.get` / `.set.prepare` / `.set.apply` | [`setting-encrypt.md`](references/setting-encrypt.md) |
|
|
66
82
|
| 存储设置(实例与规则管理) | `caizhilian run caizhilian.setting-storage.instance.*` / `.rule.*` | [`setting-storage.md`](references/setting-storage.md) |
|
|
83
|
+
| 存储设置业务概念与字段对照 | 修改存储规则前核对目录归属、存储类型和 DTO 字段 | [`setting-storage-docs-summary.md`](references/setting-storage-docs-summary.md) / [`setting-storage-field-map.md`](references/setting-storage-field-map.md) |
|
|
67
84
|
| 文件采集(FTP/SFTP 任务管理) | `caizhilian run caizhilian.file-collection.task.*` / `.scan.*` / `.run.*` / `.cancel.*` / `.delete.*` | [`file-collection.md`](references/file-collection.md) |
|
|
68
85
|
| 新建采集任务 | `caizhilian run caizhilian.file-collection.task.save.prepare/apply` | [`file-collection.md`](references/file-collection.md) |
|
|
86
|
+
| 文件采集动作流检测、兼容校验、动态创建、启用与换绑 | `caizhilian run caizhilian.file-collection.workflow.*` | [`action-flow.md`](references/action-flow.md) |
|
|
87
|
+
| 文件采集端到端流程与规则索引 | 任务、资源、动作流、扫描、运行和结果判读 | [`task-workflow.md`](references/task-workflow.md) / [`rule-index.md`](references/rule-index.md) |
|
|
88
|
+
| 宿主平台代执行文件采集 | 宿主调用 CLI、消费 JSON,并遵守执行与脱敏纪律 | [`host-executor-prompt.md`](references/host-executor-prompt.md) / [`host-platform-integration.md`](references/host-platform-integration.md) |
|
|
69
89
|
| 文件上传(本地文件上传到文件服务) | `caizhilian run caizhilian.file-upload.contract` / `.prepare` / `.upload.prepare` / `.upload.apply` | [`file-upload.md`](references/file-upload.md) |
|
|
70
90
|
| 任何写操作的确认链、票据报错、写结果不确定 | `<name>.prepare` -> 用户确认 -> `<name>.apply --continuation TOKEN --yes` | [`write-protocol.md`](references/write-protocol.md) |
|
|
71
91
|
| 环境列表 / 配置查看 / 重载配置 / 切换环境等未暴露能力 | 无 caizhilian 命令,改用框架命令 | [`withheld.md`](references/withheld.md) |
|
|
@@ -73,7 +93,7 @@ cliHelp: "weaver-work-cli caizhilian --help"
|
|
|
73
93
|
文件上传支持秒传、普通流式上传和分片流式上传;成功必须有非空文件 ID、大小校验与私有回执。
|
|
74
94
|
上传协议的 `lastModified`、`lastModifiedDate` 必须使用相同的整数毫秒值,由 CLI 自动处理;
|
|
75
95
|
小数毫秒可能触发 E10 整数解析错误,详见 [`file-upload.md`](references/file-upload.md) 的时间戳规则与失败处理。
|
|
76
|
-
认证沿用 `
|
|
96
|
+
认证沿用 [`auth-and-install.md`](references/auth-and-install.md) 的登录规则;不执行独立文件上传 Skill 的 bundle 或独立浏览器登录。
|
|
77
97
|
|
|
78
98
|
处理链:
|
|
79
99
|
|
|
@@ -82,7 +102,8 @@ cliHelp: "weaver-work-cli caizhilian --help"
|
|
|
82
102
|
- 改文档:`caizhilian.document.get` 取现状 -> `caizhilian.document.update-*.prepare` -> 用户确认 -> `.apply` -> 必要时 `.get` 复核
|
|
83
103
|
- 共享给某人:`caizhilian.org.search-user`(或 department/subcompany/...)取 `id` -> `caizhilian.share.form` 取 `obj_types[].id` 与 `share_level` 合法值 -> `caizhilian.share.add.prepare` -> 用户确认 -> `.apply`
|
|
84
104
|
- 文件夹权限:`caizhilian.folder.permission.form` 取级联参数 -> `caizhilian.folder.permission.list` 看现状 -> `.add` / `.delete` / `.set-auth` 的 prepare -> 用户确认 -> `.apply`
|
|
85
|
-
- 附件:`caizhilian.document.get` 或 `caizhilian.compare.list-file-objects` 取 `attachment_id` -> `caizhilian.attachment.upload|replace.prepare` -> 用户确认 -> `.apply
|
|
105
|
+
- 附件:`caizhilian.document.get` 或 `caizhilian.compare.list-file-objects` 取 `attachment_id` -> `caizhilian.attachment.upload|replace.prepare` -> 用户确认 -> `.apply`;
|
|
106
|
+
下载用 `caizhilian.attachment.download`(需要 PDF 版用 `.download-as-pdf`)
|
|
86
107
|
- 附件历史版本:`caizhilian.attachment.list-versions` 直接按 `attachment_id` 查询(`doc_id` 可选)
|
|
87
108
|
- 查流程附件上传目录:用户只给流程名称时先 `caizhilian.setting-attach.search-workflows` 拿流程 ID,再 `caizhilian.setting-attach.list-upload-folders` 查目录
|
|
88
109
|
- 文档比对:`caizhilian.compare.search-documents` / `.list-file-objects`(本地文件用 `.upload-file`)取左右 `file_id` -> `caizhilian.compare.submit.prepare` -> 用户确认 -> `.apply` -> 把 `compare_link` 交给用户
|
|
@@ -119,7 +140,13 @@ cliHelp: "weaver-work-cli caizhilian --help"
|
|
|
119
140
|
- 失败后先看进程退出码、`error.type`、`error.subtype` 和 `error.message`。
|
|
120
141
|
- **除非错误明确提示可恢复或需要补充参数,否则不要重复刷同一个 operation。**
|
|
121
142
|
- 写请求已经发出后遇到结果不确定必须停止;不要把 `.apply` 当成可重试的读操作。
|
|
122
|
-
- **错误为 `authentication` 或 `session_expired` 时:立即停止当前操作,不要用示例占位域名或自行猜域名登录,也不要盲目重试。**
|
|
143
|
+
- **错误为 `authentication` 或 `session_expired` 时:立即停止当前操作,不要用示例占位域名或自行猜域名登录,也不要盲目重试。** 先读取同级 `weaver-e10-shared` 的认证规则。
|
|
144
|
+
- 登录失效的认证方式必须由 Agent 复用本任务开始时的宿主判定,禁止调用任何其他登录 Skill。
|
|
145
|
+
- 明确为 XiaoE 时,只执行 `weaver-work-cli auth xiaoe`,不得改用 `auth login`。
|
|
146
|
+
- 统一登录返回 `authentication/xiaoe_credential_unavailable` 时停止并反馈宿主凭据不可用,不自动回退浏览器登录。
|
|
147
|
+
- 非 XiaoE 时不得执行 `auth xiaoe`;取得用户确认的真实 E10 登录域名后,执行 `weaver-work-cli auth login --base-url "<用户确认的 E10 登录域名>" --agent_type "<当前智能体名称>"`。
|
|
148
|
+
- 登录恢复后读操作可重新执行;写操作不得复用旧 continuation,必须重新 prepare 并重新确认。已返回 `partial/write_uncertain` 时先只读回查,禁止直接重放写入。
|
|
149
|
+
- 共享规则不可用时停止并告知用户,不在业务 Skill 中猜测登录方式。
|
|
123
150
|
- `continuation_*` / `plan_changed` / `file_changed` 一律重新 prepare,不要试图修改票据或只改 apply 入参。
|
|
124
151
|
- **明确的业务错误直接转达,不要深挖**:服务端返回的业务提示(如「该附件不支持转为 PDF」「无该文档的共享权限」)是权威结论,直接转述给用户并给出应对建议;不要翻查源码、写调试脚本或追查原始响应找「为什么」。只有错误提示本身含糊(空 message、`INTERNAL_ERROR`)时才进一步诊断。
|
|
125
152
|
- **不要编造失败原因**:不了解真实原因时,直接说明并请用户联系文档负责人或管理员确认;禁止推测平台行为、杜撰因果关系(如「加了附件后权限会变」),也不要替用户断言其本地环境或文件状态。转达时用用户能理解的自然语言,不要把技术字段名、状态码原样抛给用户。
|
|
@@ -127,7 +154,9 @@ cliHelp: "weaver-work-cli caizhilian --help"
|
|
|
127
154
|
|
|
128
155
|
### 5) 附件、图片和文件解析确认
|
|
129
156
|
|
|
130
|
-
- 执行 `caizhilian.attachment.upload|replace`、`caizhilian.attachment.download|download-as-pdf`、`caizhilian.cover.upload|set`、`caizhilian.compare.upload-file
|
|
157
|
+
- 执行 `caizhilian.attachment.upload|replace`、`caizhilian.attachment.download|download-as-pdf`、`caizhilian.cover.upload|set`、`caizhilian.compare.upload-file`、
|
|
158
|
+
`caizhilian.document.create-office|create-by-upload|replace-content`,或任何会读取本地文件、上传文件内容、下载落盘、解析图片/PDF/Office 的步骤前,必须先提醒用户:文件内容可能进入大模型上下文,也可能发送到 E10 采知连文档中心或文件服务器,
|
|
159
|
+
或写入本地磁盘。
|
|
131
160
|
- 用户未明确确认前,不要运行上传、下载或解析命令;确认摘要必须包含文件路径、文件名与大小。
|
|
132
161
|
- 下载只在用户指定路径写入,同名文件按 `名称(1).扩展名` 自动改名,不覆盖已有文件。
|
|
133
162
|
|
|
@@ -180,7 +209,8 @@ cliHelp: "weaver-work-cli caizhilian --help"
|
|
|
180
209
|
- 多步写入(`cover.set` = 上传 + 改字段,`document.replace-content` = 上传 + 替换 + 通知,`document.create-by-upload` = 批量上传)可能只完成了前几步;
|
|
181
210
|
- 批量类操作可能部分成功,`data.summary` 与 `warnings` 里已有成功/失败计数;
|
|
182
211
|
- continuation、目标对象、本地文件或登录上下文可能已经变化。
|
|
183
|
-
3. 如需确认,只补 **一次** 只读查询(`document.search` / `document.get` / `folder.query-by-name` / `permission.list` / `tag.list` / `participant.list` / `share.list` / `compare.list-file-objects
|
|
212
|
+
3. 如需确认,只补 **一次** 只读查询(`document.search` / `document.get` / `folder.query-by-name` / `permission.list` / `tag.list` / `participant.list` / `share.list` / `compare.list-file-objects`),
|
|
213
|
+
不要陷入 query/write 循环。
|
|
184
214
|
4. 最终给用户明确结论、已知状态、成功/失败项和下一步人工确认建议;未生效且需要重做时,从 `prepare` 重新开始并再次取得确认。
|
|
185
215
|
|
|
186
216
|
**特别注意:** 附件上传与文档创建最容易因重复提交造成重复入库,更要严格执行上述规则。
|
|
@@ -221,7 +251,8 @@ weaver-work-cli --json caizhilian run caizhilian.attachment.download --input-jso
|
|
|
221
251
|
- 禁止 curl、fetch、浏览器自动化或直接访问 E10 `/api/doc/**`、`/api/file/**`、`/api/hrm/**`、`/api/crm/**`。
|
|
222
252
|
- 禁止读取或复制 CLI runtime 内部 Token、Cookie、ETEAMSID。
|
|
223
253
|
- 禁止读取、列出、打印或解析用户主目录下的旧 `.e10-cli`、auth、config 或 Keychain 数据。
|
|
224
|
-
-
|
|
225
|
-
|
|
254
|
+
- 环境列表、配置快照、配置重载、环境切换不在本模块(属 withheld 能力),改用 `weaver-work-cli config ...` 与 `weaver-work-cli e10 auth ...`,
|
|
255
|
+
详见 [`withheld.md`](references/withheld.md)。
|
|
256
|
+
- 系统设置(备份/加密/附件全局设置/存储)、文件收集、文件上传等模块已纳入本 CLI。
|
|
226
257
|
- 文档版本回滚、文档审批流转、全文检索高级语法、回收站还原等能力当前未纳入 CLI manifest,需要在 E10 页面操作。
|
|
227
258
|
- 非文档中心类 E10 能力(流程、人事、财务、邮件、会议等)不由本 Skill 承载。
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# 动作流合同(文件采集)
|
|
2
|
+
|
|
3
|
+
文件采集任务必须绑定一个兼容的「动作流」应用。合法来源只有两条:**检测已有**与**动态新建**。禁止上传、迁入或导入固定动作流包,禁止手写设计文件。
|
|
4
|
+
|
|
5
|
+
命令形式:
|
|
6
|
+
|
|
7
|
+
```powershell
|
|
8
|
+
# Windows PowerShell
|
|
9
|
+
weaver-work-cli --json caizhilian run caizhilian.file-collection.<操作> --input-json '<json>'
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
# macOS/Linux(bash/zsh)
|
|
14
|
+
weaver-work-cli --json caizhilian run caizhilian.file-collection.<操作> --input-json '<json>'
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
写操作(`workflow.create` / `workflow.enable` / `workflow.update-task`)分 `.prepare` / `.apply` 两步,确认协议见 `write-protocol.md`。
|
|
18
|
+
|
|
19
|
+
## 目录结构模式(先定,后传)
|
|
20
|
+
|
|
21
|
+
`retain_dir_struct`(是否维持原目录结构)必须在检测/新建动作流**之前**确定,并在动作流与保存任务时保持同一取值:
|
|
22
|
+
|
|
23
|
+
| 模式 | 动作流要求 | 任务行为 |
|
|
24
|
+
| --- | --- | --- |
|
|
25
|
+
| `true`(维持目录) | 触发器额外提供 `folderId` 输入,文档保存节点按 `folderId` 决定落点目录 | 保留 FTP/SFTP 上的目录层级 |
|
|
26
|
+
| `false`(不维持) | 文档保存节点使用固定目标目录 | 文件落到固定目录 |
|
|
27
|
+
|
|
28
|
+
两者不得混用:用 A 模式检测通过的动作流去保存 B 模式任务会被拒绝。
|
|
29
|
+
|
|
30
|
+
## 路径一:选择已有动作流
|
|
31
|
+
|
|
32
|
+
1. 执行 `workflow.search`(可带 `name_contains` 过滤),返回候选列表(`file_collection_action_flow_candidates.v1`):序号、名称、状态、更新时间。
|
|
33
|
+
- 候选**仅供展示**,不是关联凭据。向用户展示序号/名称/状态,等待用户挑一个。
|
|
34
|
+
2. 用户确认后执行 `workflow.inspect`,入参:
|
|
35
|
+
- `application_id`:用户确认的应用 ID;
|
|
36
|
+
- `retain_dir_struct`:与任务保持一致;
|
|
37
|
+
- `archive_required`:归档分支传 `true`。
|
|
38
|
+
3. `workflow.inspect` 读取应用、活动版本和设计并做兼容检测,返回 `validation.compatible` 与 `validation.issues`:
|
|
39
|
+
- `compatible=true`:才允许把该应用 ID 用于保存任务或更新任务动作流;
|
|
40
|
+
- `compatible=false`:把 `issues` 原样反馈给用户(如缺少触发输入、缺少文档保存节点),不得关联。
|
|
41
|
+
- 返回中的场景标识与密钥字段仅内部使用,**不得展示给用户**。
|
|
42
|
+
|
|
43
|
+
兼容条件(任一不满足即拒绝关联):
|
|
44
|
+
|
|
45
|
+
- 应用可正常使用;未启用的先 `workflow.enable` 启用,再重新 `workflow.inspect`。
|
|
46
|
+
- 含自定义触发器,触发输入必须有 `fileId`、`filename`、`employeeId`。
|
|
47
|
+
- 归档分支(`archive_required=true`)额外要求 `fondsId` 输入。
|
|
48
|
+
- 维持目录(`retain_dir_struct=true`)额外要求 `folderId` 输入。
|
|
49
|
+
- 动作链包含「文档保存」与「输出」两类节点。
|
|
50
|
+
|
|
51
|
+
## 路径二:动态新建动作流
|
|
52
|
+
|
|
53
|
+
执行 `workflow.create`(写操作),入参:
|
|
54
|
+
|
|
55
|
+
| 入参 | 说明 |
|
|
56
|
+
| --- | --- |
|
|
57
|
+
| `name` | 可选,默认按 UTC+8 生成 `文件采集动作流(yyyyMMdd HHmmss)` |
|
|
58
|
+
| `archive_required` | 归档分支传 `true` |
|
|
59
|
+
| `retain_dir_struct` | 与任务保持一致 |
|
|
60
|
+
|
|
61
|
+
CLI 自动完成:创建应用 → 注册变量(`fileId` / `filename` / `employeeId`,归档加 `fondsId`,维持目录加 `folderId`)→ 生成标准设计并校验、保存 → 启用应用 → 返回应用 ID。调用方**不手写**触发字段或设计文件。
|
|
62
|
+
|
|
63
|
+
标准链路固定为:自定义触发 → 文档保存 → 输出。文档保存的标题取 `filename`、操作者取 `employeeId`,输出的文档 ID 取自文档保存节点的返回值。不插入其他节点。
|
|
64
|
+
|
|
65
|
+
## 维护与关联
|
|
66
|
+
|
|
67
|
+
- 应用存在但未启用:`workflow.enable` 启用后重新 `workflow.inspect`。
|
|
68
|
+
- 任务尚未启动、要换绑定的动作流:`workflow.update-task`(`task_id` + 新 `workflow_id`)。E10 在任务启动后锁定完整配置,改不动时**报告失败并新建任务**,不得谎报更新成功。
|
|
69
|
+
- 普通执行不要走任何「自定义设计」入口;只有用户明确提出高级定制时才考虑,且仍须满足上述兼容条件。
|
|
70
|
+
- 把动作流 ID 用于 `task.save` 之前,确认它来自 `workflow.inspect`(检测通过)或 `workflow.create`(新建返回),两者以外的 ID 一律不接受。
|
|
@@ -12,8 +12,11 @@
|
|
|
12
12
|
- 业务调用统一走 `weaver-work-cli --json caizhilian run <operation>`;高频动作有薄包装:`caizhilian search` / `caizhilian get` / `caizhilian health`。
|
|
13
13
|
- 简单 JSON 优先 `--input-json '<json>'`;多行或含中文引号的复杂 JSON 先写成 UTF-8 文件再 `--input <path>`;只有确认当前 shell 管道稳定时才用 `--input -`。
|
|
14
14
|
- `--input` 与 `--input-json` 不能同时传,否则 `validation/input_conflict`。
|
|
15
|
+
- `--input <path>` 默认只告警但继续执行;运行环境要求严格时可加 `--no-file-input`(或设置 `WEAVER_WORK_CLI_FILE_INPUT=deny`)拒绝文件输入,需要临时放行时加 `--allow-file-input`。`--input -` 与业务附件参数(如附件上传的文件路径)不受该策略限制。
|
|
16
|
+
- **不要用临时文件中转上一步的输出**:同一次任务里需要把上一步结果作为下一步入参时,用 shell 变量保存 stdout 再传入;只有用户自己提供的 JSON 文件、或业务上确实要求文件入参时,才用 `--input <path>`。
|
|
15
17
|
- 字段名必须与 `caizhilian schema` 完全一致:多传字段报 `validation/unknown_field`,入参不是对象报 `validation/input_not_object`,出现 `__proto__` / `constructor` / `prototype` 报 `validation/forbidden_key`。
|
|
16
|
-
- ID 类字段(`doc_id`、`folder_id`、`user_id` 等)统一是纯数字字符串,**一律用字符串传**(如 `"5818986505368959471"`):19 位 ID 写成 JSON 数字会在解析阶段被截断,查不到却看不出原因;超出安全整数范围的数字入参直接报 `validation/number_out_of_range
|
|
18
|
+
- ID 类字段(`doc_id`、`folder_id`、`user_id` 等)统一是纯数字字符串,**一律用字符串传**(如 `"5818986505368959471"`):19 位 ID 写成 JSON 数字会在解析阶段被截断,查不到却看不出原因;超出安全整数范围的数字入参直接报 `validation/number_out_of_range`。
|
|
19
|
+
不是数字报 `validation/id_invalid`。
|
|
17
20
|
- 分页统一 `page_no`(1 起)+ `page_size`;`<=0` 报 `validation/number_invalid`。返回的 `has_next` 按「本页条数 >= page_size」判定,不要依赖 `total`。
|
|
18
21
|
- 业务入参禁止携带 Cookie、ETEAMSID、Token、Authorization 或任何内部控制字段;认证只通过 `weaver-work-cli auth ...`,CLI 运行时会剥离保留请求头。
|
|
19
22
|
- 写操作 `.apply` 额外必须传 `confirm: true`(CLI 用 `--yes`)与 `continuation`(CLI 用 `--continuation <token>`)。
|
|
@@ -72,8 +75,13 @@ weaver-work-cli --json caizhilian run caizhilian.document.search --input ./searc
|
|
|
72
75
|
}
|
|
73
76
|
```
|
|
74
77
|
|
|
78
|
+
- 成功看退出码 0 且 `ok === true`;失败看非 0 退出码和 `error.type` / `error.subtype` / `error.message`。不要用「退出码等于 0 之外的其他字段」判断成败,成功 envelope 没有顶层 `code` / `msg`。
|
|
79
|
+
- 退出码语义:`0` 成功、`2` 参数或业务输入错误、`3` 认证错误、`4` 网络错误、`10` 需要明确确认、`11` 部分完成或结果不确定。`retryable=true` 只表示读操作或准备阶段可能可以重试;写请求已经发出后遇到结果不确定必须停止。
|
|
75
80
|
- `data` 是业务结果;`meta` 只在有上下文时出现(例如 prepare 的 `status: "PREPARED"`、下载的 `doc_id` / `attachment_id`、`health` 的 `profile` / `tenantKey`)。
|
|
76
|
-
- `caizhilian health`(`caizhilian.system.health`)返回 `{ environment, healthy, base_url, url, status_code, business_code, diagnosis, elapsed_ms, message? }
|
|
81
|
+
- `caizhilian health`(`caizhilian.system.health`)返回 `{ environment, healthy, base_url, url, status_code, business_code, diagnosis, elapsed_ms, message? }`:
|
|
82
|
+
`healthy=false` 时按 `diagnosis` 定位原因(`network_error` / `http_error` / `http_status_mismatch` / `business_code_mismatch` / `request_failed`,多项用逗号连接),
|
|
83
|
+
`ok` 表示各项正常;
|
|
84
|
+
未登录时改为报 `authentication/session_unavailable`,先按 `auth-and-install.md` 完成登录。
|
|
77
85
|
- `warnings` 是非阻断提醒(共享兜底被覆盖、只读回查发现差异、批量上传部分失败等),必须原样转述给用户,不要静默丢弃。
|
|
78
86
|
- 当前输出层只有完整 JSON,没有 `--jq` / `--format table` / `--page-all`。回复时不要原样贴完整 JSON:先摘要关键字段与条数,列表默认小页(`page_size=10`),需要完整内容时落本地文件再给路径。
|
|
79
87
|
|
|
@@ -97,10 +105,10 @@ weaver-work-cli --json caizhilian run caizhilian.document.search --input ./searc
|
|
|
97
105
|
| `validation/number_out_of_range` | 大整数(ID)用 JSON 数字传入,已超出可精确表示的范围 | 改成字符串传一次;不要原样重试,数字形式已经被截断 |
|
|
98
106
|
| `validation/input_invalid` / `input_conflict` / `input_unreadable` | JSON 入参问题 | 修正文件或改用 `--input-json` |
|
|
99
107
|
| `validation/operation_unknown` | operation 名写错或未暴露 | 用 `caizhilian operations` 校对,withheld 能力按提示改用框架命令 |
|
|
100
|
-
| `authentication/session_unavailable` | 本地无可用登录态 |
|
|
108
|
+
| `authentication/session_unavailable` | 本地无可用登录态 | 按 `auth-and-install.md` 引导用户登录,禁止猜域名或用示例域名 |
|
|
101
109
|
| `authentication/session_expired` | 登录态失效(HTTP 401/302) | 停止重试,引导重新登录后再执行原操作 |
|
|
102
110
|
| `network/*` | 网络或协议错误 | `retryable=true` 时最多重试一次,仍失败即停止 |
|
|
103
111
|
| `api/http_error` | HTTP 非 2xx | 把 `code` 与 message 交给用户,写操作不要重复提交 |
|
|
104
112
|
| `api/business_error` | 业务失败(code != 200) | 原样转述服务端 message,判断是否需要换参数 |
|
|
105
113
|
| `confirmation/required` | apply 缺 `confirm` | 先向用户摘要并确认,再加 `--yes` |
|
|
106
|
-
| `partial/write_uncertain` | 写结果不确定 | 立即停止,最多补一次只读回查,禁止自动重放 |
|
|
114
|
+
| `partial/write_uncertain` | 写结果不确定 | 立即停止,最多补一次只读回查,禁止自动重放 |
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
# 接入、安装与登录
|
|
2
|
+
|
|
3
|
+
## 何时使用
|
|
4
|
+
|
|
5
|
+
- 本轮第一次调用采知连能力,需要确认 `weaver-work-cli` 是否可用。
|
|
6
|
+
- 命令报 `command not found` 或退出码 127,需要区分「未安装」与「已安装但不在 PATH」。
|
|
7
|
+
- 需要判断登录态、完成 E10 登录、切换已有环境,或业务命令返回认证错误。
|
|
8
|
+
- 登录命令长时间无返回、出现等待浏览器回调的提示,需要判断当前环境能否完成浏览器登录。
|
|
9
|
+
- 需要确认超时与重试预算,避免无界等待或重复提交。
|
|
10
|
+
|
|
11
|
+
本 Skill 不自行发起 HTTP 请求、不搭建登录流程。安装检查、登录、Cookie 拼接、请求头注入全部由 `weaver-work-cli` 托管,Agent 只负责调用 CLI 并把结果转述给用户。
|
|
12
|
+
|
|
13
|
+
## 安装与可用性检查
|
|
14
|
+
|
|
15
|
+
```text
|
|
16
|
+
weaver-work-cli --version
|
|
17
|
+
weaver-work-cli doctor --e10
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
`weaver-work-cli skills list` 只证明随包文档可读,不证明业务接口可用;接口连通性用 `weaver-work-cli --json caizhilian health` 判断。
|
|
21
|
+
|
|
22
|
+
### 命令找不到(退出码 127):先区分「未安装」与「已安装但不在 PATH」
|
|
23
|
+
|
|
24
|
+
报 `command not found` 或退出码 127 时**不要直接判定为未安装并重装**。CLI 可能已安装在非默认 npm 前缀下,只是当前 shell 的 PATH 未包含全局 bin 目录。按顺序处理:
|
|
25
|
+
|
|
26
|
+
1. 定位全局 bin 目录。
|
|
27
|
+
|
|
28
|
+
Windows PowerShell:
|
|
29
|
+
|
|
30
|
+
```powershell
|
|
31
|
+
npm prefix -g
|
|
32
|
+
Get-ChildItem "$(npm prefix -g)" -Filter "weaver-work-cli*" -Recurse -Depth 1 -ErrorAction SilentlyContinue | Select-Object -ExpandProperty FullName
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
macOS/Linux(bash/zsh):
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npm prefix -g
|
|
39
|
+
npm bin -g 2>/dev/null || echo "$(npm prefix -g)/bin"
|
|
40
|
+
ls "$(npm prefix -g)/bin" | grep -i weaver
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
2. 能在全局 bin 目录里找到 `weaver-work-cli` 时,先把该目录前置到 PATH 再验证,**不要重装**。
|
|
44
|
+
|
|
45
|
+
Windows PowerShell:
|
|
46
|
+
|
|
47
|
+
```powershell
|
|
48
|
+
$env:Path = "$(npm prefix -g);$env:Path"
|
|
49
|
+
weaver-work-cli --version
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
macOS/Linux(bash/zsh):
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
export PATH="$(npm prefix -g)/bin:$PATH"
|
|
56
|
+
weaver-work-cli --version
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
3. PATH 前置后仍不可用,或全局 bin 目录里根本没有 `weaver-work-cli`,才判定为未安装,进入下一节。
|
|
60
|
+
|
|
61
|
+
### 安装运行时:先征得用户同意
|
|
62
|
+
|
|
63
|
+
判定为未安装、或用户要求代装时,**先让用户选择安装来源并明确确认**,未确认前不改动全局 npm 环境,也不把安装命令交给用户手动执行。
|
|
64
|
+
|
|
65
|
+
确认信息里需要原样展示待执行命令:
|
|
66
|
+
|
|
67
|
+
```text
|
|
68
|
+
npm install -g weaver-work-cli
|
|
69
|
+
weaver-work-cli --version
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
- 用户提供 registry 时,改用 `npm install -g weaver-work-cli --registry "<用户提供的 registry 地址>"`。
|
|
73
|
+
- 用户选择本地代码安装时,必须先取得仓库绝对路径并确认其下存在 `package.json`;路径缺失或错误时先追问,不要凭猜测拼路径。
|
|
74
|
+
- 权限错误时停止并如实报告,不自动加 `sudo`。
|
|
75
|
+
- 每条命令只执行一次;成功后用 `weaver-work-cli --version` 确认版本,再继续原业务操作。
|
|
76
|
+
|
|
77
|
+
## 登录态判断
|
|
78
|
+
|
|
79
|
+
只允许通过 CLI 命令判断登录态:
|
|
80
|
+
|
|
81
|
+
```text
|
|
82
|
+
weaver-work-cli auth status --no-check
|
|
83
|
+
weaver-work-cli auth whoami
|
|
84
|
+
weaver-work-cli doctor --e10
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
`--no-check` 只读本地登录态,不访问服务端;需要实际验证连通性时用 `caizhilian health` 或对应业务命令。
|
|
88
|
+
|
|
89
|
+
出现以下任一情况即判定为未登录或登录失效:
|
|
90
|
+
|
|
91
|
+
- `auth status` 输出 `loggedIn: false`,或本地不存在登录信息;
|
|
92
|
+
- `doctor --e10` 的 `e10AuthFile` 检查为 `ok: false`;
|
|
93
|
+
- 业务命令返回 `error.type === "authentication"`(如 `authentication/session_unavailable`);
|
|
94
|
+
- 业务命令返回 `error.subtype === "session_expired"`。
|
|
95
|
+
|
|
96
|
+
此时**禁止**:使用示例占位域名或自行猜域名登录;未向用户确认登录域名前反复重试业务命令;要求用户提供 Cookie、ETEAMSID 或业务 Token。
|
|
97
|
+
|
|
98
|
+
## 登录流程
|
|
99
|
+
|
|
100
|
+
按顺序执行,缺一不可。
|
|
101
|
+
|
|
102
|
+
0. **仅当前智能体明确是 XiaoE 时**,执行统一登录:
|
|
103
|
+
|
|
104
|
+
```text
|
|
105
|
+
weaver-work-cli auth xiaoe
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
判定依据复用任务开始时的宿主判定:宿主/任务上下文明确标识当前智能体为 XiaoE,桌面端显式传入 `--runtime-agent xiaoe`,或当前命令进程存在任意 `XIAOE_*` 环境变量。仅有 `WEAVER_XIAOE_*` 配置、本机 XiaoE 客户端目录、宿主脚本、历史 profile 或登录记录,只表示「凭据可能可用」,**不表示当前智能体是 XiaoE**。其他智能体跳过本步。
|
|
109
|
+
|
|
110
|
+
统一登录失败时,把 CLI 返回的原因转述给用户后停止,不自动改写为浏览器登录,也不调用任何其他登录 Skill,不要求用户去本地终端重复执行。
|
|
111
|
+
|
|
112
|
+
1. **仅非 XiaoE 环境进入本步**。禁止先执行 `auth xiaoe` 或调用其他登录 Skill。先询问用户,让用户二选一:
|
|
113
|
+
- 输入本次要登录的 E10 登录域名,形如 `https://<企业域名>`;
|
|
114
|
+
- 从已有环境中选择一个:先执行 `weaver-work-cli auth profile list` 列出候选,让用户自己选。
|
|
115
|
+
|
|
116
|
+
2. 用户给出**新域名**时,用该域名执行浏览器 OAuth 登录:
|
|
117
|
+
|
|
118
|
+
```text
|
|
119
|
+
weaver-work-cli auth login --base-url "<用户输入的域名>" --agent_type "<当前智能体名称>"
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
3. 用户明确要求切换到**已有且仍有效的环境**时,切换后验证登录态;这不是失效会话的替代登录方式:
|
|
123
|
+
|
|
124
|
+
```text
|
|
125
|
+
weaver-work-cli auth profile use PROFILE_NAME
|
|
126
|
+
weaver-work-cli auth status
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
4. 登录成功后再继续原业务操作;写操作从 `prepare` 重新开始。仍失败时把 `error.type` / `error.subtype` / `error.message` 转述给用户并停止,不要自动重试。
|
|
130
|
+
|
|
131
|
+
登录域名一律以用户实际提供为准。拿不到域名前,不要执行任何依赖登录态的写操作。
|
|
132
|
+
|
|
133
|
+
### 非 XiaoE 浏览器登录防挂起
|
|
134
|
+
|
|
135
|
+
`auth login` 会在本机监听浏览器回调,最长等待 5 分钟。在 Agent 沙箱、容器或托管环境中,外部浏览器可能无法回调到该监听地址。
|
|
136
|
+
|
|
137
|
+
1. 用户确认真实 E10 登录域名、且确认 CLI 与浏览器在同一台机器后,才执行 `auth login`。
|
|
138
|
+
2. 执行时必须限时等待,超时未完成即终止并反馈,不要无界挂起。
|
|
139
|
+
3. 出现 `Open browser login` / `Waiting for E10 authorization callback` / `Could not open browser automatically` 等提示且长时间无进展时,判定当前环境无法完成浏览器登录,停止并说明原因。
|
|
140
|
+
4. 端口冲突时加 `--port 19801`。
|
|
141
|
+
|
|
142
|
+
### 人工保底方式
|
|
143
|
+
|
|
144
|
+
仅在非 XiaoE 环境中,用户无法在当前环境完成浏览器登录时,**经用户明确要求并同意后**才可改用人工录入方式;它不是业务模块认证错误的默认恢复路径:
|
|
145
|
+
|
|
146
|
+
```text
|
|
147
|
+
weaver-work-cli auth set --eteamsid "<ETEAMSID>" --base-url "<用户确认的登录域名>"
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
由用户从已登录的浏览器中主动提供该值。Agent 不得索取、展示、转述或记录该值。
|
|
151
|
+
|
|
152
|
+
### 已有环境(profile)
|
|
153
|
+
|
|
154
|
+
```text
|
|
155
|
+
weaver-work-cli auth profile list
|
|
156
|
+
weaver-work-cli auth profile current
|
|
157
|
+
weaver-work-cli auth profile use PROFILE_NAME
|
|
158
|
+
weaver-work-cli --profile PROFILE_NAME auth status --no-check
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
用户已有多个环境时,由用户指定本次使用哪一个;**不得自行切换登录身份**,也不得改用其他账号规避权限不足。
|
|
162
|
+
|
|
163
|
+
### `--is-connector` 判据
|
|
164
|
+
|
|
165
|
+
同一条命令的认证来源由 `--is-connector true` 区分,只判断一次,本任务内所有命令沿用同一写法:
|
|
166
|
+
|
|
167
|
+
| 本次任务的情形 | 是否传 `--is-connector true` |
|
|
168
|
+
| --- | --- |
|
|
169
|
+
| 用户明确使用连接器,或上下文要求使用连接器完成任务 | **传** |
|
|
170
|
+
| 本次任务或上下文直接选择单独技能 | **不传** |
|
|
171
|
+
| 用户没有明确说明 | 按**正在运行的这份 Skill 是哪一级**定:用户级 → **不传**;连接器级 → **传** |
|
|
172
|
+
|
|
173
|
+
传 `true` 时不要再写 `--profile` / `--base-url`,认证与登录域名由连接器托管。漏传不会报错,但会退回本机当前环境,可能操作到与预期不同的租户。
|
|
174
|
+
|
|
175
|
+
## 安全边界
|
|
176
|
+
|
|
177
|
+
- 登录态、Cookie、ETEAMSID 与业务 Token 只能由 `weaver-work-cli` 内部读取和消费。
|
|
178
|
+
- 禁止要求用户粘贴、或在回复中展示、转述任何凭证;禁止把凭证写入命令、日志或报告。
|
|
179
|
+
- 禁止读取、列出、打印或解析用户主目录下的旧 `.e10-cli`、`e10-login` / `e10-cli` 的历史 auth、config 或 Keychain 数据;`weaver-work-cli auth root` 是唯一用于确认本 CLI 认证根目录的命令。
|
|
180
|
+
- 禁止自行执行宿主取 Token 脚本、禁止把 CLI 导出的认证环境变量 `eval` / `Invoke-Expression` 到当前 shell。
|
|
181
|
+
- 业务入参中不要携带 Cookie、ETEAMSID、Token 等认证字段,CLI 会拒绝或剥离。
|
|
182
|
+
|
|
183
|
+
### 请求头契约
|
|
184
|
+
|
|
185
|
+
CLI 发往 E10 的每个请求都由 CLI 统一携带以下三项,缺一不可,业务入参里不要传这些字段,也不要手工拼装请求头:
|
|
186
|
+
|
|
187
|
+
```text
|
|
188
|
+
Cookie: <CLI 托管登录态的完整原始 Cookie 串,原样透传,禁止裁剪/去重/改写>
|
|
189
|
+
eteamsid: <CLI 托管登录态的 ETEAMSID>
|
|
190
|
+
User-Agent: AgentType=<agentType>,IsAgent=true
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## 超时与重试预算
|
|
194
|
+
|
|
195
|
+
命令执行必须有界。默认按上表约束;超时即终止并反馈,不允许无界等待或无界重试。
|
|
196
|
+
|
|
197
|
+
| 命令类别 | 单次超时预算 | 重试策略 |
|
|
198
|
+
| --- | --- | --- |
|
|
199
|
+
| 登录类(`auth xiaoe` / `auth login` / `auth set`) | 300 秒(5 分钟,限时观察) | **禁止自动重试**;出现挂起信号立即终止并移交用户 |
|
|
200
|
+
| 只读查询(`schema` / `operations` / 检索 / 详情 / 健康检查) | 120 秒 | 最多 1 次;仅在网络类错误且未产生副作用时 |
|
|
201
|
+
| 写入类(`prepare` / `apply` / 上传 / 删除) | 600 秒(10 分钟) | **禁止自动重试**(存在重复入库风险);结果不确定时只补一次只读回查 |
|
|
202
|
+
| 安装与构建(`npm install` / `npm link`) | 1800 秒(30 分钟) | 禁止自动重试;失败即停止并报告,不加 `sudo` |
|
|
203
|
+
| 诊断类(`--version` / `doctor` / `auth status --no-check`) | 60 秒 | 最多 1 次 |
|
|
204
|
+
|
|
205
|
+
预算是**上限**而不是必须等满:登录类一旦出现挂起信号立即终止,不必等满 300 秒;写入类一旦拿到确定结果或返回 `partial` / `write_uncertain` 也立即停止。慢环境(容器冷启动、大依赖安装、批量导入)可以撑到上限,快环境不要人为等待。
|
|
206
|
+
|
|
207
|
+
任何命令被外部超时掐断(退出码 124)都视为超时失败,按上表处理,不得静默重跑。
|
|
@@ -78,11 +78,13 @@ weaver-work-cli --json caizhilian run caizhilian.share.add.prepare --input-json
|
|
|
78
78
|
|
|
79
79
|
- `tag.search` / `tag.list` 返回归一后的 `{ id, name, privacy }`,回复时只展示标签名,`id` 留给后续 `tag.add` / `tag.remove`。
|
|
80
80
|
- `tag.add.apply` / `tag.remove.apply` 返回 `{ doc_id, tag_ids, count }`;标签是**批量两次请求**(公共组 + 个人组),部分组失败会抛错,此时不要自动重放,先用 `tag.list` 回查实际结果。
|
|
81
|
-
- `participant.list` 返回 `{ participants[] }`,每项含 `share_entry_id`、`user_id`、`user_name`、`can_delete`;`participant.add.apply` 返回 `{ share_entry_id, doc_id, user_id, user_name }
|
|
81
|
+
- `participant.list` 返回 `{ participants[] }`,每项含 `share_entry_id`、`user_id`、`user_name`、`can_delete`;`participant.add.apply` 返回 `{ share_entry_id, doc_id, user_id, user_name }`,
|
|
82
|
+
`participant.remove.apply` 返回 `{ share_entry_id, doc_id }`。
|
|
82
83
|
- `share.list` → `{ add_visible, shares[] }`,条目含 `id`、`object_type`、`object_name`、`share_level`、`sec_level`、`download`、`can_delete`;`share.delete.apply` 返回 `{ deleted: true, shares[] }`。
|
|
83
84
|
- `share.form` → `{ obj_types[], param_options }`,`obj_types[].id` 是 `obj_type` 的合法取值。
|
|
84
85
|
- `participant.list` / `share.list` 默认用 Markdown 表格摘要(姓名/类型/是否可下载/是否可删除),条目 ID 只作为入参。
|
|
85
|
-
- `share.add.apply` 有两种成功形态:`{ added: true, shares: [...] }`(新增成功并回读列表)与 `{ added: false, message: "..." }`(服务端判定「已存在」,源用 `code=500 + status=true` 表达)。`added:false` 不是失败,必须把 message
|
|
86
|
+
- `share.add.apply` 有两种成功形态:`{ added: true, shares: [...] }`(新增成功并回读列表)与 `{ added: false, message: "..." }`(服务端判定「已存在」,源用 `code=500 + status=true` 表达)。`added:false` 不是失败,必须把 message 转述给用户;
|
|
87
|
+
其他业务失败会抛 `api/business_error`。
|
|
86
88
|
- `share.add.apply` 成功后回读共享列表失败时仍算成功,只是 `shares` 为空数组——这种情况要提示用户稍后自行复核。
|
|
87
89
|
- 所有 prepare 返回 `continuation` + `expires_in_ms` + `hint`,`meta.status = "PREPARED"`。
|
|
88
90
|
|
|
@@ -109,4 +111,4 @@ weaver-work-cli --json caizhilian run caizhilian.share.add.prepare --input-json
|
|
|
109
111
|
| `empty_response` / `response_shape` | 服务端返回结构与预期不符 | 停止,把原始 message 交给用户,不要重放写请求 |
|
|
110
112
|
| `plan_changed` | prepare 与 apply 之间请求体指纹变化(表单级联或共享条目已变) | 重新 prepare |
|
|
111
113
|
| `continuation_*` | 票据缺失/过期/串用/入参漂移 | 见 `write-protocol.md` |
|
|
112
|
-
| `partial/write_uncertain` | 写结果不确定 | 立即停止,最多补一次 `tag.list` / `participant.list` / `share.list` 只读回查 |
|
|
114
|
+
| `partial/write_uncertain` | 写结果不确定 | 立即停止,最多补一次 `tag.list` / `participant.list` / `share.list` 只读回查 |
|
|
@@ -18,7 +18,9 @@
|
|
|
18
18
|
|
|
19
19
|
- `folder_id` 的根节点约定:`100`=系统、`200`=公共、`300`=个人;具体子文件夹 ID 用 `caizhilian.folder.query-by-name` 查。
|
|
20
20
|
- `include_sub_folder` 只在传了 `folder_id` 时才写入请求体,不传 `folder_id` 时该字段无效。
|
|
21
|
-
- `create_time` 支持枚举 `today` / `yesterday` / `this_week` / `last_week` / `this_month` / `last_month` / `this_year` / `last_year` / `last_7_days` / `last_30_days` / `last_90_days
|
|
21
|
+
- `create_time` 支持枚举 `today` / `yesterday` / `this_week` / `last_week` / `this_month` / `last_month` / `this_year` / `last_year` / `last_7_days` / `last_30_days` / `last_90_days`,
|
|
22
|
+
也支持 `last_<N>_days` 和显式区间 `YYYY-MM-DD HH:MM~YYYY-MM-DD HH:MM`;
|
|
23
|
+
无法解析报 `validation/time_range_invalid`。区间按东八区计算。
|
|
22
24
|
- `caizhilian.user.current` 返回当前登录人的 `employeeId` / `employeeName`,创建文档缺 `author_id` 时可先取它。
|
|
23
25
|
|
|
24
26
|
### 创建文档
|
|
@@ -30,12 +32,15 @@
|
|
|
30
32
|
| `caizhilian.document.create-office` | `file_path`、`folder_id`、`folder_type`、`author_id` | 只接受 `.doc/.docx/.xls/.xlsx/.ppt/.pptx`;`name` 缺省取文件名(不含扩展名) |
|
|
31
33
|
| `caizhilian.document.create-by-upload` | `file_paths`、`folder_id`、`folder_type` | `author_id` 缺省取当前登录人;`file_paths` 接受字符串或数组,去重保序,最多并发 8 个 |
|
|
32
34
|
|
|
33
|
-
公共可选字段:`participant_ids`、`abstract_text`、`keywords`、`auto_invalidate_date`(`YYYY-MM-DD`)、`tags`、`virtual_folder_ids`、`doc_category`(`0`=普通,`1
|
|
35
|
+
公共可选字段:`participant_ids`、`abstract_text`、`keywords`、`auto_invalidate_date`(`YYYY-MM-DD`)、`tags`、`virtual_folder_ids`、`doc_category`(`0`=普通,`1`=重要)、
|
|
36
|
+
`cover_picture_id`(`create-by-upload` 无 `cover_picture_id`)。
|
|
34
37
|
|
|
35
38
|
- `folder_type` 枚举:`company`=公共、`privy`=个人、`sys`=系统。
|
|
36
39
|
- `tags` 元素是对象,形如 `{"id":"1","privacy":false}`;`id` 用 `caizhilian.tag.search` 查。
|
|
37
40
|
- Markdown 文件按 UTF-8 严格解码,失败回退 GBK,两者都失败报 `validation/file_encoding_unknown`。
|
|
38
|
-
- **1:1 保留源行为(重要)**:`create-html` / `create-markdown` / `create-office` 的 prepare 会并发做「文件夹创建权限校验 + 文件夹默认值兜底 +
|
|
41
|
+
- **1:1 保留源行为(重要)**:`create-html` / `create-markdown` / `create-office` 的 prepare 会并发做「文件夹创建权限校验 + 文件夹默认值兜底 + 默认共享兜底」,但源逻辑让**共享兜底结果覆盖文件夹兜底结果**,
|
|
42
|
+
所以这三个操作实际不会把文件夹默认的 `participant_ids` / `virtual_folder_ids` 回填进请求体;
|
|
43
|
+
被丢弃时 prepare 会在 `warnings` 里明确提示。需要生效请显式传这两个字段,或改用 `caizhilian.document.create-by-upload`(不做共享兜底,文件夹默认值会回填)。
|
|
39
44
|
|
|
40
45
|
### 编辑文档
|
|
41
46
|
|
|
@@ -76,16 +81,33 @@ weaver-work-cli --json caizhilian run caizhilian.document.update-field.prepare -
|
|
|
76
81
|
|
|
77
82
|
## 输出处理
|
|
78
83
|
|
|
79
|
-
- `document.search` 返回 `{ total, page_no, page_size, has_next, documents[] }`;每条含 `id`、`name`、`docCreateTime`、`docLastUpdateTime`、`docAuthorId/Name`、`docCreatorId/Name`、`folderPathName
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
-
|
|
84
|
+
- `document.search` 返回 `{ total, page_no, page_size, has_next, documents[] }`;每条含 `id`、`name`、`docCreateTime`、`docLastUpdateTime`、`docAuthorId/Name`、`docCreatorId/Name`、`folderPathName`、
|
|
85
|
+
`belongFolderIds`、`type`、`size`、`docStatus`、
|
|
86
|
+
`docStatusName`。
|
|
87
|
+
回复默认用 Markdown 表格展示序号/标题/作者/所属文件夹/更新时间,`id` 只作为后续 operation 入参,不当作展示内容。
|
|
88
|
+
- `document.get` 返回文档基础信息:`docName`(名称)、`abstractText`(摘要)、`authorId`/`authorName`(负责人)、`creatorId`/`creatorName`(创建者)、`docStatus`(状态码)、`keywords`、`summary`(HTML 正文摘要)、`createTime`、`lastUpdateTime`、
|
|
89
|
+
`contentMainType`/`content`(正文文件 ID)/`contentType`(如 WORD / EXCEL / PPT / PDF)、`coordinate`(1=协同文档)、`parentFolders[]`(`id`/`name`/`namePath`/`type`)、
|
|
90
|
+
`attachments[]`(`id`/`name`/`extName`/`size`(bytes)/`createTime`)、`permission`(操作权限标志:`withEditPermission`、`canEditTitle`、`canEditContent`、`canDelete`、`canDownload`、`canMove`、`canUploadFile`、
|
|
91
|
+
`maxSize`(MB)、`replaceMainText` 等)、`operateMenuSettings[]`(可用操作菜单,
|
|
92
|
+
仅保留 `show=true` 且 `openStatus=1` 的项)。
|
|
93
|
+
字段较多时只摘要用户关心的部分;写操作前可用 `permission` 判断当前用户是否被允许,不要凭猜测。
|
|
94
|
+
- 创建类 `prepare` 返回 `data` 里的预览(`doc_type`、`content_type`、`name`、`folder_id`、`folder_type`、`author_id`、`content_length`、`tags_count`、`participant_ids`、`virtual_folder_ids`、`doc_share_list_count`、
|
|
95
|
+
`request`)+ `continuation` + `expires_in_ms` + `hint`,
|
|
96
|
+
`meta.status = "PREPARED"`。
|
|
97
|
+
向用户摘要时给出标题、目标文件夹、作者、正文长度和将要产生的副作用。
|
|
98
|
+
- 创建类 `apply` 返回 `{ doc_id }`(新文档 ID,可用 `document.get` 复核);`create-office.apply` 额外带 `file_id`;`create-by-upload.apply` 批量时返回 `{ results[], summary: { total, success, failed } }`,
|
|
99
|
+
单文件时返回 `{ doc_id, file_id, name, size, ext_name }`(`meta.batch=false`);
|
|
100
|
+
单个文件失败会写进 `results[].error` 和 `warnings`,不要当成整体失败重试。
|
|
101
|
+
- 编辑类 `apply` 返回变更回显:`update-field` → `{ doc_id, <field 对应字段名>: 新值 }`(`name` / `keywords` / `abstract_text` / `auto_invalidate_date`);`update-author` → `{ doc_id, user_id }`;
|
|
102
|
+
`update-html` → `{ doc_id, summary }`;
|
|
103
|
+
`replace-content` → 上传结果 `{ file_id, name, size, ext_name, version }`(`meta` 带 `doc_id` / `content_type`)。
|
|
84
104
|
|
|
85
105
|
## 注意
|
|
86
106
|
|
|
87
|
-
- 创建和编辑文档都是服务端写操作:`create-html` / `create-markdown` / `update-field` / `update-author` / `update-html` 是 `high-risk-write
|
|
88
|
-
-
|
|
107
|
+
- 创建和编辑文档都是服务端写操作:`create-html` / `create-markdown` / `update-field` / `update-author` / `update-html` 是 `high-risk-write`,
|
|
108
|
+
`create-office` / `create-by-upload` / `replace-content` 是 `read-with-upload`(会读本地文件并上传)。
|
|
109
|
+
- 创建文档前,服务端会校验**目标文件夹的新建文档权限与允许的文档类型**(合约中以 `permissions` 标记为 `folder.create-document`):无权限或类型不允许时返回 `folder_no_create_permission` / `doc_type_not_allowed`,原样转述给用户,不要重试;
|
|
110
|
+
需要提前确认时用 `caizhilian.folder.permission.query`。
|
|
89
111
|
- 执行任何读本地文件、上传文件、替换正文的操作前,必须先提醒用户:文件内容会被上传到 E10 采知连文档中心或文件服务器,并可能进入大模型上下文用于理解和处理;必须等用户明确确认后再继续。
|
|
90
112
|
- `update-html` 会生成新版本,`replace-content` 会替换正文文件;两者都不可撤销,确认摘要里必须写明目标 `doc_id` 与文档标题。
|
|
91
113
|
- 不要为了「补全信息」自动多查一遍:用户已给 `doc_id` 时直接 `document.get` 或对应 `prepare`。
|
|
@@ -108,4 +130,4 @@ weaver-work-cli --json caizhilian run caizhilian.document.update-field.prepare -
|
|
|
108
130
|
| `doc_info_unavailable` | 目标文档信息取不到 | 用 `document.get` 复核 `doc_id` |
|
|
109
131
|
| `plan_changed` | prepare 与 apply 之间文件内容/元信息变化 | 重新 prepare |
|
|
110
132
|
| `api/business_error` | 服务端业务失败 | 转述 message,不要重复提交写请求 |
|
|
111
|
-
| `partial/write_uncertain` | 创建/替换结果不确定 | 立即停止,最多补一次 `document.search` 或 `document.get` 只读回查,禁止自动重放 |
|
|
133
|
+
| `partial/write_uncertain` | 创建/替换结果不确定 | 立即停止,最多补一次 `document.search` 或 `document.get` 只读回查,禁止自动重放 |
|