weaver-work-cli 0.1.26 → 0.1.29
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 +7 -2
- package/dist/cmd/setup/index.js +1 -1
- package/dist/internal/e10/auth/commands.js +1 -6
- package/dist/internal/e10/auth/messages.js +3 -0
- package/dist/internal/e10/auth/session.js +8 -0
- package/dist/internal/e10/auth-recovery.js +148 -0
- package/dist/internal/e10/client.js +47 -15
- package/dist/internal/e10/context.js +8 -8
- 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/host.js +2 -1
- package/dist/shortcuts/archive-oa/manifest.js +1 -1
- 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/invoice/host.js +9 -7
- package/dist/shortcuts/invoice/manifest.js +23 -142
- package/dist/shortcuts/invoice/operations/issuing-qys.js +266 -203
- package/dist/shortcuts/invoice/operations/registry.js +1 -6
- 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/host.js +3 -5
- package/dist/shortcuts/workflow/index.js +4 -1
- package/dist/shortcuts/workflow/operations/chatscene.js +4 -22
- package/dist/shortcuts/workflow/operations/form.js +281 -166
- package/dist/shortcuts/workflow/operations/read.js +39 -8
- package/dist/shortcuts/workflow/operations/registry.js +2 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/businessRules.js +331 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/detailFieldRules.js +133 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/summaryCache.js +326 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoDetailCache.js +113 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoDetailFetcher.js +259 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoListRows.js +64 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoOutputPlanner.js +28 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.aggregate.js +70 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.collect.js +267 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.core.js +392 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.detail.js +165 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.group.js +448 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.groupSummary.js +348 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.js +222 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.pipeline.js +66 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.smartGroup.js +502 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.summary.js +540 -0
- package/dist/shortcuts/workflow/stdout-compact.js +7 -0
- package/docs/SKILL.md +1 -1
- package/docs/_catalog.md +2 -1
- package/docs/agent-invoice.md +1 -1
- package/docs/caizhilian.md +1 -1
- package/docs/e10-auth.md +1 -1
- package/docs/fna.md +7 -3
- package/docs/invoice.md +4 -6
- package/docs/todo-smart-convert/README.md +171 -0
- package/docs/todo-smart-convert/data-contract.md +236 -0
- package/docs/todo-smart-convert/mock/ai-todo-query-target.json +209 -0
- package/docs/todo-smart-convert/subgroup-rules.md +245 -0
- package/package.json +1 -1
- package/scripts/package-skill.mjs +1 -1
- package/skill-template/business-info.json +4 -1
- package/skill-template/domains/caizhilian.md +2 -1
- package/skill-template/domains/qiyecheng.md +1 -0
- package/skill-template/domains/yepiaotong.md +6 -2
- package/skill-template/skill-template.md +1 -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-caizhilian/SKILL.md +18 -9
- package/skills/weaver-e10-caizhilian/references/action-flow.md +70 -0
- package/skills/weaver-e10-caizhilian/references/agent-entry.md +6 -2
- package/skills/weaver-e10-caizhilian/references/auth-and-install.md +207 -0
- package/skills/weaver-e10-caizhilian/references/file-collection.md +56 -54
- package/skills/weaver-e10-caizhilian/references/file-upload.md +4 -4
- 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 +5 -16
- package/skills/weaver-e10-caizhilian/references/setting-backup.md +4 -13
- package/skills/weaver-e10-caizhilian/references/setting-encrypt.md +6 -15
- 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 +142 -482
- 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 +2 -2
- 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 +37 -14
- package/skills/weaver-e10-shared/references/e10-auth-and-session.md +11 -8
- package/skills/weaver-e10-shared/references/non-interactive-environment.md +4 -4
- 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/SKILL.md +23 -1
- package/skills/weaver-e10-workflow/references/source-manifest.json +1 -2
- package/skills/weaver-e10-workflow/references/todo-smart-convert.md +282 -0
- package/skills/weaver-e10-workflow/references/workflow-create.md +30 -55
- package/skills/weaver-e10-workflow/scripts/todo-summary.cjs +695 -0
- package/skills/weaver-e10-yepiaotong/SKILL.md +19 -17
- package/skills/weaver-e10-yepiaotong/references/invoice-issuing-examples.md +75 -78
- package/skills/weaver-e10-yepiaotong/references/invoice-issuing-form-fill-rules.md +179 -0
- package/skills/weaver-e10-yepiaotong/references/invoice-issuing-workflow.md +238 -0
- package/skills/weaver-e10-yepiaotong/references/invoice-reim.md +7 -7
- package/skills/weaver-e10-yepiaotong/references/reim-api-reference.md +11 -5
- package/skills/weaver-e10-yepiaotong/references/reim-examples.md +55 -33
- package/skills/weaver-e10-yepiaotong/references/reim-form-fill-rules.md +102 -23
- package/skills/weaver-e10-yepiaotong/references/reim-phone-subsidy-rules.md +1 -1
- package/skills/weaver-e10-yepiaotong/references/reim-workflow.md +53 -42
- package/skills/weaver-e10-yepiaotong/references/source-manifest.json +94 -214
- 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-qys-ledger.md +0 -66
- package/skills/weaver-e10-yepiaotong/references/invoice-issuing.md +0 -107
|
@@ -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:
|
|
@@ -18,15 +18,15 @@ cliHelp: "weaver-work-cli caizhilian --help"
|
|
|
18
18
|
用户明确确认后,Agent 必须直接代为按顺序执行且每条仅执行一次,不得要求或引导用户手动执行:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,
|
|
19
19
|
`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,
|
|
20
20
|
导致本技能依然读不到共享规则。
|
|
21
|
-
|
|
21
|
+
命令均成功后重新读取共享规则;若环境中确实无法补齐共享规则,停止依赖登录态的业务操作,告知用户共享认证规则缺失;不要在业务 Skill 中猜测宿主或写死登录命令。
|
|
22
22
|
**`--is-connector` 判据**:用户明确使用连接器、或上下文要求用连接器完成任务 → 传 `true`;本次任务或上下文直接选择单独技能 → 不传;用户没有明确说明时,按**正在运行的这份 Skill 是哪一级**定——**用户级(条目标 `(user)`)不传,连接器级(标 `(connector)`)传**(同名 Skill 只会运行用户级那一份)。
|
|
23
23
|
传 `true` 时不要再写 `--profile` / `--base-url`。
|
|
24
|
-
|
|
24
|
+
完整规则见 [`auth-and-install.md`](references/auth-and-install.md)。
|
|
25
25
|
|
|
26
|
-
|
|
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
27
|
请求头三件套由 CLI 统一注入、缺一不可:Cookie: <完整原始 Cookie 串>(禁止裁剪/去重/改写)、eteamsid: <ETEAMSID>、
|
|
28
28
|
User-Agent: AgentType=<agentType>,IsAgent=true。
|
|
29
|
-
|
|
29
|
+
完整契约见 [`auth-and-install.md`](references/auth-and-install.md) 的「请求头契约」。
|
|
30
30
|
|
|
31
31
|
所有命令通过 `weaver-work-cli --json caizhilian run <operation>` 执行:简单 JSON 优先传 `--input-json '<json>'`,复杂或多行 JSON 先写入 UTF-8 文件再传 `--input <path>`,只有确认当前 shell 能稳定传管道时才使用 `--input -`。
|
|
32
32
|
**不要写内联脚本包装调用**——自写脚本在中文与 Windows 环境下容易出现编码、转义问题,且脚本报错时无法判断调用是否已生效,
|
|
@@ -63,6 +63,7 @@ Windows/PowerShell 下不要使用 `printf`、`$HOME/...`、`~/...`、bash 反
|
|
|
63
63
|
| 想做什么 | 命令 | 按需读取 reference |
|
|
64
64
|
|---|---|---|
|
|
65
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) |
|
|
66
67
|
| 接口连通性与登录态自检 | `caizhilian health` | [`agent-entry.md`](references/agent-entry.md) |
|
|
67
68
|
| 检索文档 / 查文档详情 / 查当前登录人 | `caizhilian search`、`caizhilian get`、`caizhilian run caizhilian.document.search` / `.get`、`caizhilian.user.current` | [`document.md`](references/document.md) |
|
|
68
69
|
| 创建文档(HTML / Markdown / Office / 批量上传) | `caizhilian run caizhilian.document.create-html|create-markdown|create-office|create-by-upload.prepare/apply` | [`document.md`](references/document.md) |
|
|
@@ -79,8 +80,12 @@ Windows/PowerShell 下不要使用 `printf`、`$HOME/...`、`~/...`、bash 反
|
|
|
79
80
|
| 备份设置(开关、规则 CRUD、启停) | `caizhilian run caizhilian.setting-backup.get` / `.set.prepare` / `.set.apply` / `.rule.*` | [`setting-backup.md`](references/setting-backup.md) |
|
|
80
81
|
| 加解密设置(8 项配置) | `caizhilian run caizhilian.setting-encrypt.get` / `.set.prepare` / `.set.apply` | [`setting-encrypt.md`](references/setting-encrypt.md) |
|
|
81
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) |
|
|
82
84
|
| 文件采集(FTP/SFTP 任务管理) | `caizhilian run caizhilian.file-collection.task.*` / `.scan.*` / `.run.*` / `.cancel.*` / `.delete.*` | [`file-collection.md`](references/file-collection.md) |
|
|
83
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) |
|
|
84
89
|
| 文件上传(本地文件上传到文件服务) | `caizhilian run caizhilian.file-upload.contract` / `.prepare` / `.upload.prepare` / `.upload.apply` | [`file-upload.md`](references/file-upload.md) |
|
|
85
90
|
| 任何写操作的确认链、票据报错、写结果不确定 | `<name>.prepare` -> 用户确认 -> `<name>.apply --continuation TOKEN --yes` | [`write-protocol.md`](references/write-protocol.md) |
|
|
86
91
|
| 环境列表 / 配置查看 / 重载配置 / 切换环境等未暴露能力 | 无 caizhilian 命令,改用框架命令 | [`withheld.md`](references/withheld.md) |
|
|
@@ -88,7 +93,7 @@ Windows/PowerShell 下不要使用 `printf`、`$HOME/...`、`~/...`、bash 反
|
|
|
88
93
|
文件上传支持秒传、普通流式上传和分片流式上传;成功必须有非空文件 ID、大小校验与私有回执。
|
|
89
94
|
上传协议的 `lastModified`、`lastModifiedDate` 必须使用相同的整数毫秒值,由 CLI 自动处理;
|
|
90
95
|
小数毫秒可能触发 E10 整数解析错误,详见 [`file-upload.md`](references/file-upload.md) 的时间戳规则与失败处理。
|
|
91
|
-
认证沿用 `
|
|
96
|
+
认证沿用 [`auth-and-install.md`](references/auth-and-install.md) 的登录规则;不执行独立文件上传 Skill 的 bundle 或独立浏览器登录。
|
|
92
97
|
|
|
93
98
|
处理链:
|
|
94
99
|
|
|
@@ -135,9 +140,13 @@ Windows/PowerShell 下不要使用 `printf`、`$HOME/...`、`~/...`、bash 反
|
|
|
135
140
|
- 失败后先看进程退出码、`error.type`、`error.subtype` 和 `error.message`。
|
|
136
141
|
- **除非错误明确提示可恢复或需要补充参数,否则不要重复刷同一个 operation。**
|
|
137
142
|
- 写请求已经发出后遇到结果不确定必须停止;不要把 `.apply` 当成可重试的读操作。
|
|
138
|
-
- **错误为 `authentication` 或 `session_expired` 时:立即停止当前操作,不要用示例占位域名或自行猜域名登录,也不要盲目重试。**
|
|
139
|
-
|
|
140
|
-
|
|
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 中猜测登录方式。
|
|
141
150
|
- `continuation_*` / `plan_changed` / `file_changed` 一律重新 prepare,不要试图修改票据或只改 apply 入参。
|
|
142
151
|
- **明确的业务错误直接转达,不要深挖**:服务端返回的业务提示(如「该附件不支持转为 PDF」「无该文档的共享权限」)是权威结论,直接转述给用户并给出应对建议;不要翻查源码、写调试脚本或追查原始响应找「为什么」。只有错误提示本身含糊(空 message、`INTERNAL_ERROR`)时才进一步诊断。
|
|
143
152
|
- **不要编造失败原因**:不了解真实原因时,直接说明并请用户联系文档负责人或管理员确认;禁止推测平台行为、杜撰因果关系(如「加了附件后权限会变」),也不要替用户断言其本地环境或文件状态。转达时用用户能理解的自然语言,不要把技术字段名、状态码原样抛给用户。
|
|
@@ -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,6 +12,8 @@
|
|
|
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
18
|
- ID 类字段(`doc_id`、`folder_id`、`user_id` 等)统一是纯数字字符串,**一律用字符串传**(如 `"5818986505368959471"`):19 位 ID 写成 JSON 数字会在解析阶段被截断,查不到却看不出原因;超出安全整数范围的数字入参直接报 `validation/number_out_of_range`。
|
|
17
19
|
不是数字报 `validation/id_invalid`。
|
|
@@ -73,11 +75,13 @@ weaver-work-cli --json caizhilian run caizhilian.document.search --input ./searc
|
|
|
73
75
|
}
|
|
74
76
|
```
|
|
75
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` 只表示读操作或准备阶段可能可以重试;写请求已经发出后遇到结果不确定必须停止。
|
|
76
80
|
- `data` 是业务结果;`meta` 只在有上下文时出现(例如 prepare 的 `status: "PREPARED"`、下载的 `doc_id` / `attachment_id`、`health` 的 `profile` / `tenantKey`)。
|
|
77
81
|
- `caizhilian health`(`caizhilian.system.health`)返回 `{ environment, healthy, base_url, url, status_code, business_code, diagnosis, elapsed_ms, message? }`:
|
|
78
82
|
`healthy=false` 时按 `diagnosis` 定位原因(`network_error` / `http_error` / `http_status_mismatch` / `business_code_mismatch` / `request_failed`,多项用逗号连接),
|
|
79
83
|
`ok` 表示各项正常;
|
|
80
|
-
未登录时改为报 `authentication/session_unavailable
|
|
84
|
+
未登录时改为报 `authentication/session_unavailable`,先按 `auth-and-install.md` 完成登录。
|
|
81
85
|
- `warnings` 是非阻断提醒(共享兜底被覆盖、只读回查发现差异、批量上传部分失败等),必须原样转述给用户,不要静默丢弃。
|
|
82
86
|
- 当前输出层只有完整 JSON,没有 `--jq` / `--format table` / `--page-all`。回复时不要原样贴完整 JSON:先摘要关键字段与条数,列表默认小页(`page_size=10`),需要完整内容时落本地文件再给路径。
|
|
83
87
|
|
|
@@ -101,7 +105,7 @@ weaver-work-cli --json caizhilian run caizhilian.document.search --input ./searc
|
|
|
101
105
|
| `validation/number_out_of_range` | 大整数(ID)用 JSON 数字传入,已超出可精确表示的范围 | 改成字符串传一次;不要原样重试,数字形式已经被截断 |
|
|
102
106
|
| `validation/input_invalid` / `input_conflict` / `input_unreadable` | JSON 入参问题 | 修正文件或改用 `--input-json` |
|
|
103
107
|
| `validation/operation_unknown` | operation 名写错或未暴露 | 用 `caizhilian operations` 校对,withheld 能力按提示改用框架命令 |
|
|
104
|
-
| `authentication/session_unavailable` | 本地无可用登录态 |
|
|
108
|
+
| `authentication/session_unavailable` | 本地无可用登录态 | 按 `auth-and-install.md` 引导用户登录,禁止猜域名或用示例域名 |
|
|
105
109
|
| `authentication/session_expired` | 登录态失效(HTTP 401/302) | 停止重试,引导重新登录后再执行原操作 |
|
|
106
110
|
| `network/*` | 网络或协议错误 | `retryable=true` 时最多重试一次,仍失败即停止 |
|
|
107
111
|
| `api/http_error` | HTTP 非 2xx | 把 `code` 与 message 交给用户,写操作不要重复提交 |
|
|
@@ -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)都视为超时失败,按上表处理,不得静默重跑。
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: weaver-file-collection
|
|
3
3
|
description: "泛微E10采知连文件服务 FTP/SFTP 文件采集技能。用于选择仅采集文件或采集到档案、按需选择全宗、查询或创建 FTP/SFTP 资源、检索并校验已有动作流、动态新建动作流、创建或维护采集任务,以及校验、扫描、运行和查看文件级结果。"
|
|
4
4
|
license: Proprietary
|
|
5
|
-
compatibility: 泛微E10
|
|
5
|
+
compatibility: 泛微E10采知连配套使用,随 weaver-e10-caizhilian 技能分发
|
|
6
6
|
metadata:
|
|
7
7
|
maintainer: unknown
|
|
8
8
|
type: capability
|
|
@@ -19,73 +19,57 @@ metadata:
|
|
|
19
19
|
|
|
20
20
|
### 认证前置(必须)
|
|
21
21
|
|
|
22
|
-
本模块通过 CLI 托管的认证获取凭证(base_url + Cookie + eteamsid + User-Agent
|
|
22
|
+
本模块通过 CLI 托管的认证获取凭证(base_url + Cookie + eteamsid + User-Agent),凭证契约见 `auth-and-install.md`,不依赖手动配置文件,Agent 不得自己读取或输出凭证。
|
|
23
23
|
|
|
24
24
|
**使用前必须确保**:
|
|
25
25
|
1. CLI 已安装:`weaver-work-cli --version` 能正常输出版本号
|
|
26
26
|
2. 已完成登录:`weaver-work-cli auth status` 显示已登录
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
```text
|
|
30
|
-
# OAuth2.0 浏览器授权(推荐)
|
|
31
|
-
weaver-work-cli auth login
|
|
32
|
-
|
|
33
|
-
# 或手动写入 ETEAMSID(从浏览器 DevTools 复制)
|
|
34
|
-
weaver-work-cli auth set --eteamsid "PCACCOUNT_xxx"
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
**凭证过期处理**:操作返回认证错误时,提示用户通过 `weaver-work-cli auth login` 或 `weaver-work-cli auth set` 重新登录。
|
|
28
|
+
**登录与登录失效处理**:读取 `auth-and-install.md`,由 Agent 复用任务开始时的宿主判定,禁止调用任何其他登录 Skill。明确为 XiaoE 时只执行 `weaver-work-cli auth xiaoe`,失败即停止且不得改走浏览器;非 XiaoE 时先取得用户确认的真实 E10 域名,再执行 `weaver-work-cli auth login --base-url "<用户确认的 E10 登录域名>" --agent_type "<当前智能体名称>"`。
|
|
38
29
|
|
|
39
30
|
## First Move
|
|
40
31
|
|
|
41
32
|
1. 读取 `rule-index.md`。
|
|
42
|
-
2. 确认 CLI
|
|
43
|
-
3.
|
|
44
|
-
4.
|
|
45
|
-
5.
|
|
46
|
-
6.
|
|
33
|
+
2. 确认 CLI 已安装并已完成登录(`weaver-work-cli --version`、`weaver-work-cli auth status` 显示已登录)。
|
|
34
|
+
3. 任务分支、执行与结果判读读取 `task-workflow.md`。
|
|
35
|
+
4. 动作流检测、兼容校验与动态创建读取 `action-flow.md`。
|
|
36
|
+
5. 只有用户选择采集到档案时,才按 `task-workflow.md`「采集目标」的全宗确认流程执行。
|
|
37
|
+
6. 由宿主/Agent 代为执行时,另读 `host-executor-prompt.md` 和 `host-platform-integration.md`。
|
|
47
38
|
|
|
48
39
|
## Hard Rules
|
|
49
40
|
|
|
50
41
|
- 认证凭证统一由 CLI 托管(`weaver-work-cli auth ...`);不得写死域名或输出 Cookie。
|
|
51
|
-
-
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
- `search
|
|
55
|
-
- `create
|
|
56
|
-
-
|
|
57
|
-
-
|
|
58
|
-
- 初始化后的命令携带同一 `chatId`;阶段会原子保存,重复初始化恢复进度,只有显式 `--restart` 才重新开始。
|
|
59
|
-
- `save-task` 和 `update-task-workflow` 只接受 `inspect-action-flow` 或 `create-action-flow` 生成的 `file_collection_workflow_selection.v1` 文件。归档凭据还必须绑定归档兼容检测,并携带已确认全宗。
|
|
42
|
+
- 仅采集文件的分支不询问、不写入全宗;仅采集到档案的分支必须先取得用户确认的全宗,再用 `task.update-fonds` 绑定。
|
|
43
|
+
- 新建任务前先确定 FTP/SFTP 资源(已有或新建),再确定动作流(已有或新建)。
|
|
44
|
+
- 新建任务时先确定是否维持原目录结构(`retain_dir_struct`);该值必须与动作流检测/创建、保存任务保持一致。维持模式使用带动态目录输入的动作流,非维持模式使用固定目录动作流,二者不得混用。
|
|
45
|
+
- `workflow.search` 的候选仅供展示。用户确认 ID 后必须执行 `workflow.inspect` 通过兼容检测,才能把该动作流用于保存任务。
|
|
46
|
+
- 新建动作流使用 `workflow.create` 动态创建标准链路(自定义触发 → 文档保存 → 输出);禁止上传、迁入或导入固定动作流包,不手写触发字段或设计文件。
|
|
47
|
+
- 新建 FTP/SFTP 资源在未指定已有连接器(`system_pk`)时由 CLI 自动创建 FTP 连接器并返回资源 ID;不得通过失败重试摸参数。
|
|
48
|
+
- 所有写操作走 prepare → 用户确认 → apply(见 `write-protocol.md`);apply 入参与 prepare 完全一致。
|
|
60
49
|
- 默认任务名按 UTC+8 生成 `文件采集(yyyyMMdd HHmmss)`。
|
|
61
|
-
- `
|
|
62
|
-
- `run` 只证明启动。只有 `
|
|
63
|
-
- 用户可见输出不展示长 ID、完整 Cookie、明文 FTP
|
|
50
|
+
- 扫描默认增量;只有用户明确要求全量时才传 `full_coll=true`。
|
|
51
|
+
- `run` 只证明启动。只有 `run.result` 结果为 `collection_succeeded`、`file_collection_ok=true` 且失败数为 0,才能报告采集成功。
|
|
52
|
+
- 用户可见输出不展示长 ID、完整 Cookie、明文 FTP 密码、动作流密钥或大段请求体。
|
|
64
53
|
|
|
65
54
|
## Workflow
|
|
66
55
|
|
|
67
|
-
1. 确认 CLI
|
|
68
|
-
2.
|
|
69
|
-
3.
|
|
70
|
-
4.
|
|
71
|
-
5.
|
|
72
|
-
|
|
73
|
-
6. 用相同目录选项和关联凭据执行 `save-task --retain-dir-struct <0|1> --source-id ... --workflow-selection-file ...`;归档分支额外传全宗确认文件。
|
|
74
|
-
7. 依次执行 `check-storage`、`scan --wait`、`run`;需要等待文件级结果时使用 `run --wait` 或 `run-progress`。
|
|
56
|
+
1. 确认 CLI 已安装并已登录,然后明确采集目标:仅采集文件,还是采集到档案(归档分支按 `task-workflow.md` 完成全宗确认)。
|
|
57
|
+
2. 选择已有任务(`task.list` / `task.form`)或新建任务。已有任务仅归档分支可更新全宗(`task.update-fonds`)。
|
|
58
|
+
3. 新建任务时先选资源:`connector.query` 挑已有资源,或 `resource.create` 新建 FTP/SFTP 资源(缺连接器时 CLI 内部自动创建,返回 `source_id`)。
|
|
59
|
+
4. 确定 `retain_dir_struct` 后选动作流:`workflow.search` → 用户确认 → `workflow.inspect`(与任务同一目录模式,归档加 `archive_required=true`);或直接 `workflow.create` 动态新建。
|
|
60
|
+
5. 用 `task.save` 保存任务(`source_id` + `workflow_id` + 同一 `retain_dir_struct`);归档分支保存后再绑定确认过的全宗。
|
|
61
|
+
6. 依次执行 `storage.check`、`scan`(默认增量,必要时 `scan.wait`)、`run`;结果用 `run.result` 判读,明细用 `detail` 查看。
|
|
75
62
|
|
|
76
63
|
## References
|
|
77
64
|
|
|
78
65
|
| Need | Read |
|
|
79
66
|
| --- | --- |
|
|
80
67
|
| 规则与 owner | `rule-index.md` |
|
|
81
|
-
| 认证 | `auth-and-
|
|
82
|
-
|
|
|
68
|
+
| 认证 | `auth-and-install.md` 与本文「认证前置」 |
|
|
69
|
+
| 主流程与结果判读 | `task-workflow.md` |
|
|
83
70
|
| 动作流合同 | `action-flow.md` |
|
|
84
|
-
|
|
|
85
|
-
|
|
|
86
|
-
| API 端点 | `api-endpoints.md` |
|
|
87
|
-
| Payload | `api-payloads.md` |
|
|
88
|
-
| 宿主提示词 | `host-executor-prompt.md` |
|
|
71
|
+
| 写操作确认协议 | `write-protocol.md` |
|
|
72
|
+
| 宿主执行提示词 | `host-executor-prompt.md` |
|
|
89
73
|
| 宿主集成 | `host-platform-integration.md` |
|
|
90
74
|
|
|
91
75
|
# API Endpoints
|
|
@@ -134,7 +118,7 @@ Search results are not association credentials. Inspect or create must complete
|
|
|
134
118
|
| Cancel | POST | `/api/file/coll/cancel` | cancelled task |
|
|
135
119
|
| Delete | POST | `/api/file/coll/delete` | boolean result |
|
|
136
120
|
|
|
137
|
-
`scan`
|
|
121
|
+
`scan` 默认增量并传 `fullColl=false`;入参 `full_coll=true` 才是全量(须用户明确要求)。`finish=true` 不是文件级成功。成功/失败明细由 `run.result` 统一读取并归一化为 `file_collection_result.v1`。
|
|
138
122
|
|
|
139
123
|
## CLI 操作
|
|
140
124
|
|
|
@@ -163,12 +147,30 @@ weaver-work-cli --json caizhilian run caizhilian.file-collection.task.save.prepa
|
|
|
163
147
|
|
|
164
148
|
### 其他操作
|
|
165
149
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
|
169
|
-
|
|
|
170
|
-
|
|
|
171
|
-
|
|
|
172
|
-
|
|
|
173
|
-
|
|
|
174
|
-
|
|
|
150
|
+
写操作均分 `.prepare` / `.apply` 两步(见 `write-protocol.md`)。
|
|
151
|
+
|
|
152
|
+
| 分组 | 操作 | CLI 命令(`caizhilian run` 后接) |
|
|
153
|
+
| --- | --- | --- |
|
|
154
|
+
| 任务 | 列出任务 | `caizhilian.file-collection.task.list` |
|
|
155
|
+
| 任务 | 查看任务详情 | `caizhilian.file-collection.task.form` |
|
|
156
|
+
| 任务 | 另存为副本 | `caizhilian.file-collection.task.save-as.prepare/apply` |
|
|
157
|
+
| 任务 | 启用/禁用任务 | `caizhilian.file-collection.task.switch.prepare/apply` |
|
|
158
|
+
| 任务 | 更新任务全宗(归档分支) | `caizhilian.file-collection.task.update-fonds.prepare/apply` |
|
|
159
|
+
| 资源 | 查询连接器与资源 | `caizhilian.file-collection.connector.query` |
|
|
160
|
+
| 资源 | 创建 FTP 连接器 | `caizhilian.file-collection.connector.create.prepare/apply` |
|
|
161
|
+
| 资源 | 创建 FTP/SFTP 资源 | `caizhilian.file-collection.resource.create.prepare/apply` |
|
|
162
|
+
| 动作流 | 搜索动作流 | `caizhilian.file-collection.workflow.search` |
|
|
163
|
+
| 动作流 | 兼容性检测 | `caizhilian.file-collection.workflow.inspect` |
|
|
164
|
+
| 动作流 | 动态创建动作流 | `caizhilian.file-collection.workflow.create.prepare/apply` |
|
|
165
|
+
| 动作流 | 启用动作流 | `caizhilian.file-collection.workflow.enable.prepare/apply` |
|
|
166
|
+
| 动作流 | 更换任务动作流 | `caizhilian.file-collection.workflow.update-task.prepare/apply` |
|
|
167
|
+
| 执行 | 检查存储连接 | `caizhilian.file-collection.storage.check` |
|
|
168
|
+
| 执行 | 扫描任务 | `caizhilian.file-collection.scan.prepare/apply` |
|
|
169
|
+
| 执行 | 等待扫描完成 | `caizhilian.file-collection.scan.wait` |
|
|
170
|
+
| 执行 | 查询扫描进度 | `caizhilian.file-collection.scan.progress` |
|
|
171
|
+
| 执行 | 运行/暂停任务 | `caizhilian.file-collection.run.prepare/apply` |
|
|
172
|
+
| 执行 | 查询运行进度 | `caizhilian.file-collection.run.progress` |
|
|
173
|
+
| 执行 | 查询采集结果(归一化) | `caizhilian.file-collection.run.result` |
|
|
174
|
+
| 执行 | 查询采集明细 | `caizhilian.file-collection.detail` |
|
|
175
|
+
| 执行 | 取消任务 | `caizhilian.file-collection.cancel.prepare/apply` |
|
|
176
|
+
| 执行 | 删除任务 | `caizhilian.file-collection.delete.prepare/apply` |
|
|
@@ -7,17 +7,17 @@
|
|
|
7
7
|
## 运行与认证
|
|
8
8
|
|
|
9
9
|
- 唯一运行时为 `weaver-work-cli`,全部操作由 CLI 提供。
|
|
10
|
-
-
|
|
10
|
+
- 安装与登录遵守 `auth-and-install.md` 的接入规则。认证只使用 CLI 当前身份或连接器注入的身份。
|
|
11
11
|
- 本模块不执行独立 Skill 的 `dist/weaver-file-upload.js`,不复用 `e10-login` 的会话,
|
|
12
12
|
不启动第二套 Chrome 登录;独立 Skill 的双登录模式不属于本 CLI 上传接口。
|
|
13
|
-
-
|
|
13
|
+
- 缺少会话或登录失效时按 `auth-and-install.md` 处理,不自行切换账号或环境。
|
|
14
14
|
|
|
15
15
|
## 操作与参数
|
|
16
16
|
|
|
17
17
|
| 操作 | 作用 | 必填 |
|
|
18
18
|
| --- | --- | --- |
|
|
19
19
|
| `caizhilian.file-upload.contract` | 获取完整命令、参数用途、策略和结果证据 | 无 |
|
|
20
|
-
| `caizhilian.file-upload.prepare` | 本地文件/上下文检查与 MD5、SHA256
|
|
20
|
+
| `caizhilian.file-upload.prepare` | 本地文件/上下文检查与 MD5、SHA256;仅本地校验、不发起业务请求、不签发上传票据 | `file_path`、`module` |
|
|
21
21
|
| `caizhilian.file-upload.upload.prepare` | 用户授权检查、本地校验、绑定当前环境和身份的确认票据 | `file_path`、`module`、`user_confirmed=true` |
|
|
22
22
|
| `caizhilian.file-upload.upload.apply` | 校验确认票据和内容未变,再执行上传 | 上述参数、`continuation`、`confirm=true`(CLI 用 `--yes`) |
|
|
23
23
|
|
|
@@ -86,7 +86,7 @@ POSIX 文件权限为 `0600`、回执目录为 `0700`。回执只保存归一化
|
|
|
86
86
|
## 命令示例
|
|
87
87
|
|
|
88
88
|
先读取 contract。下面的 `document` 只示意真实文档业务;使用时必须来自当前调用方场景。
|
|
89
|
-
只有用户已经明确确认后,才传 `user_confirmed=true
|
|
89
|
+
只有用户已经明确确认后,才传 `user_confirmed=true`,并遵守 `auth-and-install.md` 的连接器参数要求。
|
|
90
90
|
|
|
91
91
|
Windows PowerShell:
|
|
92
92
|
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# 文件采集执行提示词(宿主注入用)
|
|
2
|
+
|
|
3
|
+
你是「FTP/SFTP 文件采集」的纯执行器。只按命令结果推进:不手写请求体、不猜参数、不跳步,不把准备态报告为完成。
|
|
4
|
+
|
|
5
|
+
## 开始前
|
|
6
|
+
|
|
7
|
+
1. 读取 `SKILL.md` 路由与 `file-collection.md`,按需读 `rule-index.md`、`task-workflow.md`、`action-flow.md`;宿主调度细节见 `host-platform-integration.md`。
|
|
8
|
+
2. 确认 CLI 已安装且已登录(`weaver-work-cli --version`、`weaver-work-cli auth status`);未登录时按 `auth-and-install.md` 先登录,不要自行拼请求头。
|
|
9
|
+
3. 写操作必须按 `write-protocol.md` 的 prepare → 用户确认 → apply 执行。
|
|
10
|
+
|
|
11
|
+
## 调用规范
|
|
12
|
+
|
|
13
|
+
- 统一形式:`weaver-work-cli --json caizhilian run caizhilian.file-collection.<操作> --input-json '<json>'`;全局参数放在子命令之前。
|
|
14
|
+
- 简单 JSON 用 `--input-json`;复杂或多行 JSON 先写 UTF-8 文件再用 `--input <path>`。
|
|
15
|
+
- 不写内联脚本包装调用;不靠反复 `--help` 试错猜参数——字段以 references 文档和 `weaver-work-cli caizhilian schema` 为准。
|
|
16
|
+
- 只使用 `weaver-work-cli caizhilian operations` 列出的操作;未列出的能力一律视为不存在。
|
|
17
|
+
|
|
18
|
+
## 执行纪律
|
|
19
|
+
|
|
20
|
+
1. **只读先行**:ID 一律来自真实查询(`task.list` / `connector.query` / `workflow.search` / `workflow.inspect` / `workflow.create` 等),禁止编造。
|
|
21
|
+
2. **分支先问再走**:仅文件还是归档、已有还是新建任务/资源/动作流,先向用户确认;用户首轮已明确的意图直接消费,不重复问。
|
|
22
|
+
3. **写操作三步走**:prepare(无副作用)→ 向用户摘要并取得明确同意 → apply(入参与 prepare 逐字一致)。没有同意绝不 apply;要改参数就重新 prepare。
|
|
23
|
+
4. **失败即停**:登录态失效提示重新登录;业务错误原样反馈原因;参数缺失只补问缺失项;不靠重试碰运气。
|
|
24
|
+
5. **证据分级**:请求成功 ≠ 业务成功;启动 ≠ 完成 ≠ 成功。采集成功只能按 `task-workflow.md` 的成功标准报告。
|
|
25
|
+
6. **分支边界**:仅文件分支不问全宗、不写全宗;归档分支先取得用户确认的全宗再绑定。
|
|
26
|
+
|
|
27
|
+
## 对用户的输出
|
|
28
|
+
|
|
29
|
+
- 只展示序号、名称、地址、状态与短摘要。
|
|
30
|
+
- 不展示长 ID、Cookie、FTP 明文密码、动作流密钥、票据(continuation)与大段请求体。
|
|
31
|
+
- 内部推理、参数试错过程不展示给用户。
|
|
32
|
+
- 默认任务名 `文件采集(yyyyMMdd HHmmss)`、默认动作流名 `文件采集动作流(yyyyMMdd HHmmss)` 均按 UTC+8 生成,展示时保留原样即可。
|