weaver-work-cli 0.1.38 → 0.1.40
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 -3
- package/dist/chunks/{archive-PDV724YK.js → archive-JHTONRST.js} +556 -66
- package/dist/chunks/{archive-oa-4XE4MNXQ.js → archive-oa-FCHLCPHC.js} +2 -2
- package/dist/chunks/{asset-PDL2QE2N.js → asset-RLIHC7DB.js} +2 -2
- package/dist/chunks/asset-idle-KVOFTLCP.js +670 -0
- package/dist/chunks/{attachment-content-MDDGOE5E.js → attachment-content-RZYDB3MB.js} +3 -3
- package/dist/chunks/{blog-UYR3EUXW.js → blog-42OZTJNP.js} +2 -2
- package/dist/chunks/{caizhilian-LG2X5NMF.js → caizhilian-KRK547K5.js} +2 -2
- package/dist/chunks/{calendar-FG4BAZHE.js → calendar-RTWAMKHD.js} +2 -2
- package/dist/chunks/{chunk-J7USS3ED.js → chunk-4CTESSKI.js} +4 -4
- package/dist/chunks/{chunk-OJQUJZQF.js → chunk-4TEDNCON.js} +45 -5
- package/dist/chunks/chunk-57IECMWX.js +487 -0
- package/dist/chunks/{chunk-ELYDWBZJ.js → chunk-7BRU4EFH.js} +13 -7
- package/dist/chunks/{chunk-6LTFIFLM.js → chunk-7E6MUOEK.js} +2 -2
- package/dist/chunks/{chunk-KKRL3REV.js → chunk-7U577Q7U.js} +2 -2
- package/dist/chunks/{chunk-UJJD4QWF.js → chunk-CAQNBBQA.js} +2 -2
- package/dist/chunks/{chunk-CORFRD7Q.js → chunk-CXRQWOZ5.js} +2 -2
- package/dist/chunks/{chunk-GGJFMNJM.js → chunk-FLS4DPGP.js} +110 -16
- package/dist/chunks/{chunk-JSMFPO43.js → chunk-I566ZYNF.js} +1 -1
- package/dist/chunks/{chunk-6FTTSA45.js → chunk-IZSSVYAG.js} +2 -2
- package/dist/chunks/{chunk-XJY7G4DD.js → chunk-JWRZM2H2.js} +3 -3
- package/dist/chunks/{chunk-NI6GIPIM.js → chunk-LFMSDBZN.js} +529 -395
- package/dist/chunks/{chunk-VRYHGG6O.js → chunk-LN447PY2.js} +92 -51
- package/dist/chunks/{chunk-NR6RKXPA.js → chunk-NETCCARD.js} +4 -2
- package/dist/chunks/{chunk-Z32KWY6G.js → chunk-NJKREDA3.js} +1 -1
- package/dist/chunks/{chunk-FUWVHMVV.js → chunk-SPRHHSVC.js} +2 -2
- package/dist/chunks/{chunk-IZUDA353.js → chunk-T6EGVBKU.js} +1 -1
- package/dist/chunks/{chunk-DMV2TOMH.js → chunk-VNBU55SL.js} +428 -145
- package/dist/chunks/{chunk-UZZBA6PV.js → chunk-WFFNM65B.js} +47 -6
- package/dist/chunks/{chunk-EG6ZU444.js → chunk-ZUX3P6BQ.js} +10 -5
- package/dist/chunks/{conflict-BQZEQ4SP.js → conflict-VR55AOOO.js} +2 -2
- package/dist/chunks/{contract-XIRAFTEV.js → contract-HI4FNPYE.js} +2 -2
- package/dist/chunks/{cowork-BLG62BL2.js → cowork-HJLI353D.js} +12 -5
- package/dist/chunks/{ebuilder-form-NUKG5QW4.js → ebuilder-form-HTGI63UU.js} +3 -3
- package/dist/chunks/{ehr-2STW5ILH.js → ehr-GYXIYH3A.js} +2 -2
- package/dist/chunks/env-DW3G4HUO.js +19 -0
- package/dist/chunks/{esb-UUDQUNKY.js → esb-I5INCEFE.js} +4 -4
- package/dist/chunks/factory-TKXGXS6L.js +30 -0
- package/dist/chunks/{fna-6RCY4NU5.js → fna-K2MHTQ24.js} +2 -2
- package/dist/chunks/group-chat-VYBNMJLG.js +18 -0
- package/dist/chunks/{host-FWDOSRH5.js → host-256GVCAH.js} +3 -3
- package/dist/chunks/{host-EJZFROU3.js → host-D5SERMAJ.js} +3 -3
- package/dist/chunks/{host-RHM3NPXV.js → host-JM4YVHFM.js} +3 -3
- package/dist/chunks/{host-7RXEDMAH.js → host-L3VLITMT.js} +3 -3
- package/dist/chunks/{host-UFF33TWJ.js → host-ZUQTJYYK.js} +3 -3
- package/dist/chunks/{hrm-PKJ6ELSH.js → hrm-VLRBKTZB.js} +3 -3
- package/dist/chunks/{im-YJAXS7CO.js → im-QK3VTLXK.js} +8 -8
- package/dist/chunks/{invoice-HWVSXGX6.js → invoice-T5JTA32H.js} +3 -3
- package/dist/chunks/{jiuchuanhui-L7VKILZB.js → jiuchuanhui-P2FNEQVZ.js} +2 -2
- package/dist/chunks/{lazy-dispatch-NMYEIHRH.js → lazy-dispatch-XRRI46M6.js} +5 -5
- package/dist/chunks/{mail-B42RRU7G.js → mail-3Y7MJ6PS.js} +9 -4
- package/dist/chunks/{meeting-CFYVBJSS.js → meeting-M7LTXGJE.js} +11 -10
- package/dist/chunks/{okr-GCLF6V7W.js → okr-OBC6S67L.js} +2 -2
- package/dist/chunks/{plan-ZVL7GBRI.js → plan-5H6I53SK.js} +2 -2
- package/dist/chunks/{project-4YWAAE2K.js → project-L75QZV4S.js} +2 -2
- package/dist/chunks/{registry-EP4VTHZS.js → registry-KMHCPAAD.js} +9 -8
- package/dist/chunks/{registry-OZSMDVPP.js → registry-QGHFNUWS.js} +2 -2
- package/dist/chunks/{registry-FRJ6H7BT.js → registry-RXPN6BBT.js} +4 -4
- package/dist/chunks/{registry-SG2PGVCF.js → registry-UGRBCBHO.js} +3 -3
- package/dist/chunks/{room-recommend-R3JVUUAC.js → room-recommend-A3UDC3CA.js} +4 -4
- package/dist/chunks/{schedule-NIJBTYDO.js → schedule-5GCACCK7.js} +4 -4
- package/dist/chunks/{workflow-BB24DFBY.js → workflow-M5ZJ7DWF.js} +11 -8
- package/dist/core/output.js +16 -6
- package/dist/index.js +33 -28
- package/dist/internal/e10/auth/commands.js +109 -56
- package/dist/internal/e10/auth/messages.js +1 -0
- package/dist/internal/e10/auth/session.js +11 -1
- package/dist/internal/e10/auth/xiaoe.js +29 -4
- package/dist/internal/e10/auth-recovery.js +13 -6
- package/dist/internal/e10/client.js +13 -0
- package/dist/internal/e10/context.js +24 -3
- package/dist/internal/e10/request-runtime.js +12 -1
- package/dist/shortcuts/archive/host.js +2 -0
- package/dist/shortcuts/archive/manifest.js +1 -1
- package/dist/shortcuts/archive/operations/borrow-list.js +13 -1
- package/dist/shortcuts/archive/operations/flow-url.js +1 -1
- package/dist/shortcuts/archive/operations/prelib.js +472 -0
- package/dist/shortcuts/archive/operations/registry.js +2 -0
- package/dist/shortcuts/archive/operations/upload.js +1 -1
- package/dist/shortcuts/asset-idle/errors.js +44 -0
- package/dist/shortcuts/asset-idle/host.js +161 -0
- package/dist/shortcuts/asset-idle/index.js +114 -0
- package/dist/shortcuts/asset-idle/manifest.js +159 -0
- package/dist/shortcuts/asset-idle/operations/idle.js +47 -0
- package/dist/shortcuts/asset-idle/operations/registry.js +33 -0
- package/dist/shortcuts/asset-idle/operations/shared.js +142 -0
- package/dist/shortcuts/asset-idle/operations/types.js +9 -0
- package/dist/shortcuts/asset-idle/operations.js +15 -0
- package/dist/shortcuts/cowork/operations/item-write.js +10 -2
- package/dist/shortcuts/index.js +5 -0
- package/dist/shortcuts/mail/operations/mail-send.js +8 -2
- package/dist/shortcuts/meeting/operations/eb/catalog.js +5 -1
- package/dist/shortcuts/meeting/operations/eb/create-flow.js +381 -104
- package/dist/shortcuts/meeting/operations/eb/crm-search.js +87 -5
- package/dist/shortcuts/meeting/operations/eb/flow-memory.js +49 -0
- package/dist/shortcuts/meeting/operations/eb/group-chat.js +583 -0
- package/dist/shortcuts/meeting/operations/eb/index.js +2 -0
- package/dist/shortcuts/meeting/operations/eb/room-recommend.js +19 -3
- package/dist/shortcuts/meeting/operations/eb/room-summary.js +2 -0
- package/dist/shortcuts/meeting/operations/eb/usage-cache.js +99 -0
- package/dist/shortcuts/meeting/operations/from-group-chat.js +35 -12
- package/dist/shortcuts/workflow/host.js +3 -0
- package/dist/shortcuts/workflow/index.js +1 -1
- package/dist/shortcuts/workflow/operations/form.js +65 -171
- package/dist/shortcuts/workflow/operations/todoSmartConvert/aigroupRules.js +129 -27
- package/dist/shortcuts/workflow/operations/todoSmartConvert/aigroupStore.js +6 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/summaryCache.js +60 -117
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoDetailCache.js +44 -7
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoDetailFetcher.js +37 -29
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.collect.js +48 -8
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.core.js +1 -0
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.detail.js +22 -18
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.group.js +17 -9
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.groupSummary.js +34 -10
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.js +5 -2
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.smartGroup.js +9 -2
- package/dist/shortcuts/workflow/operations/todoSmartConvert/todoSmartConvert.summary.js +122 -20
- package/docs/_catalog.md +3 -0
- package/docs/asset-idle.md +45 -0
- package/docs/e10-auth.md +16 -1
- package/docs/todo-smart-convert/subgroup-rules.md +1 -1
- package/package.json +1 -1
- package/scripts/mcp-meeting.mjs +234 -0
- package/scripts/package-skill.mjs +2 -0
- package/skill-template/business-info.json +14 -1
- package/skill-template/domains/asset-idle.md +13 -0
- package/skill-template/domains/wenshuding.md +3 -0
- package/skills/weaver-e10-archive-oa/SKILL.md +1 -0
- package/skills/weaver-e10-archive-oa/references/my-borrow.md +49 -0
- package/skills/weaver-e10-asset-idle/SKILL.md +73 -0
- package/skills/weaver-e10-asset-idle/references/idle-list.md +62 -0
- package/skills/weaver-e10-asset-idle/references/idle-stats-and-charts.md +65 -0
- package/skills/weaver-e10-asset-idle/references/source-manifest.json +193 -0
- package/skills/weaver-e10-asset-idle/references/widget-style.md +205 -0
- package/skills/weaver-e10-caizhilian/SKILL.md +29 -11
- package/skills/weaver-e10-caizhilian/references/auth-and-install.md +12 -0
- package/skills/weaver-e10-caizhilian/references/files.md +1 -1
- package/skills/weaver-e10-caizhilian/references/setting-encrypt.md +1 -1
- package/skills/weaver-e10-caizhilian/references/source-manifest.json +45 -45
- package/skills/weaver-e10-cowork/SKILL.md +2 -0
- package/skills/weaver-e10-cowork/references/cowork-write.md +1 -1
- package/skills/weaver-e10-jucailin/SKILL.md +2 -0
- package/skills/weaver-e10-jucailin/references/recruit-read.md +2 -0
- package/skills/weaver-e10-jucailin/references/recruit-write.md +1 -1
- package/skills/weaver-e10-mail/SKILL.md +3 -0
- package/skills/weaver-e10-mail/references/mail-send.md +2 -0
- package/skills/weaver-e10-meeting/SKILL.md +88 -25
- package/skills/weaver-e10-meeting/references/meeting-minute-file.md +25 -11
- package/skills/weaver-e10-meeting.zip +0 -0
- package/skills/weaver-e10-shared/SKILL.md +5 -5
- package/skills/weaver-e10-shared/references/e10-auth-and-session.md +3 -3
- package/skills/weaver-e10-wenshuding/SKILL.md +29 -6
- package/skills/weaver-e10-wenshuding/references/archive-borrow-list.md +14 -0
- package/skills/weaver-e10-wenshuding/references/archive-download.md +2 -0
- package/skills/weaver-e10-wenshuding/references/archive-flow.md +1 -1
- package/skills/weaver-e10-wenshuding/references/archive-prelib-arrange.md +76 -0
- package/skills/weaver-e10-wenshuding/references/archive-prelib-list.md +107 -0
- package/skills/weaver-e10-wenshuding/references/archive-prelib-open.md +59 -0
- package/skills/weaver-e10-wenshuding/references/archive-upload.md +4 -1
- package/skills/weaver-e10-wenshuding/references/source-manifest.json +108 -65
- package/skills/weaver-e10-workflow/SKILL.md +9 -2
- package/skills/weaver-e10-workflow/aigroup/default.json +166 -19
- package/skills/weaver-e10-workflow/references/todo-smart-convert.md +72 -34
- package/skills/weaver-e10-workflow/tools/todo-serve.cjs +113 -25
- package/skills/weaver-e10-workflow/tools/todo-summary.cjs +350 -50
- package/dist/chunks/{chunk-2LV74IWP.js → chunk-E7OK5WD5.js} +5 -5
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# 电子文件库列表与智能识别
|
|
2
|
+
|
|
3
|
+
## 什么时候读取
|
|
4
|
+
|
|
5
|
+
用户要「查看电子文件库(里有什么)」「列出电子文件库的数据」「对电子文件库的数据做智能识别 / 智能分类」时读取本文件。
|
|
6
|
+
|
|
7
|
+
注意:电子文件库列表属于**预归档库**(`menuSign=preLib`)的数据,与全文检索的可借档案(`archive.search.run`)不是同一批数据,不要混用。
|
|
8
|
+
|
|
9
|
+
## 链路(三步,CLI 内部一次完成)
|
|
10
|
+
|
|
11
|
+
1. 查预归档树 → 识别电子文件库节点 `treeId`(形如 `{appId}_{appId}`)与节点名
|
|
12
|
+
2. 查节点详情(入参 `treeId`)→ `url1`(列表视图地址,尾段数字即 `listId`)+ 表单标识(`metaFormId` / `tag`)
|
|
13
|
+
3. 查列表数据(上一步的 `listId` 与表单标识)→ 列定义 `columns` 与数据行 `rows`
|
|
14
|
+
|
|
15
|
+
三步都由 `archive.prelib.list` 内部完成,Agent 不需要也不得自行拼请求。
|
|
16
|
+
|
|
17
|
+
## Operation
|
|
18
|
+
|
|
19
|
+
| Operation | 必填输入 | 风险 | 说明 |
|
|
20
|
+
| --- | --- | --- | --- |
|
|
21
|
+
| `archive.prelib.list` | 无;可选 `treeId`、`pageNo`(默认 1) | read | 返回 `treeId` / `nodeName` / `listId` / `metaFormId` / `tag` / `url1` / `columns` / `rows` / `total` |
|
|
22
|
+
| `archive.prelib.intelligent.prepare` | `checkIds`(勾选行 `id` 数组);可选 `treeId`、`formId` | read | 预检并签发 continuation;`formId` 不传时取 `getTreeDetail` 的 `metaFormId` |
|
|
23
|
+
| `archive.prelib.intelligent.apply` | `continuation` + `confirm: true` | write | 调 `intelligentCate` 提交识别任务,返回 `taskId` |
|
|
24
|
+
|
|
25
|
+
macOS/Linux(bash/zsh):
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
weaver-work-cli --json archive run archive.prelib.list --input-json '{}'
|
|
29
|
+
weaver-work-cli --json archive run archive.prelib.list --input-json '{"treeId":"1229705529974292495_1229705529974292495","pageNo":1}'
|
|
30
|
+
weaver-work-cli --json archive run archive.prelib.intelligent.prepare --input-json '{"checkIds":["1313909785262178418"]}'
|
|
31
|
+
weaver-work-cli --json archive run archive.prelib.intelligent.apply --input-json '{"continuation":"<token>","confirm":true}'
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Windows PowerShell:
|
|
35
|
+
|
|
36
|
+
```powershell
|
|
37
|
+
weaver-work-cli --json archive run archive.prelib.list --input-json '{}'
|
|
38
|
+
weaver-work-cli --json archive run archive.prelib.list --input-json '{"treeId":"1229705529974292495_1229705529974292495","pageNo":1}'
|
|
39
|
+
weaver-work-cli --json archive run archive.prelib.intelligent.prepare --input-json '{"checkIds":["1313909785262178418"]}'
|
|
40
|
+
weaver-work-cli --json archive run archive.prelib.intelligent.apply --input-json '{"continuation":"<token>","confirm":true}'
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## 展示(列与显示值的正确取法)
|
|
44
|
+
|
|
45
|
+
CLI 同时返回四份数据,用途不同,**不要混用**:
|
|
46
|
+
|
|
47
|
+
| 字段 | 含义 | 用途 |
|
|
48
|
+
| --- | --- | --- |
|
|
49
|
+
| `visibleColumns` | `columns` 中 `hide !== true` 的列(`title` / `dataIndex`) | **渲染表头** |
|
|
50
|
+
| `displayData` | 显示值行,与 `rows` 行序对齐 | **渲染单元格**(优先取这里) |
|
|
51
|
+
| `rows` | `data` 原始值行,含 `id` / `rowKey` 等隐藏列的值 | **后续操作取用**(智能识别 `checkIds` 取 `rows[n].id`) |
|
|
52
|
+
| `dataFields` | 数据里**实际存在**的可展示字段(已排除内部标识与 `Action`/`Span` 配置字段) | **补齐表头**:`columns` 没配置的列从这里补,避免"显示不全" |
|
|
53
|
+
| `columns` | 原始列定义,含 `hide` 标记 | 判断哪些列不展示 |
|
|
54
|
+
|
|
55
|
+
规则:
|
|
56
|
+
|
|
57
|
+
1. **序号列(必须有)**:表格第一列加序号,**表头显示"序号"**(不要用 `#` 等符号),值从 1 递增。`id` 是隐藏列不展示,用户靠序号指代行;后续操作取 `rows[序号-1].id`,**不要让用户自己抄 id**。
|
|
58
|
+
- Markdown 表格列宽由宿主渲染决定,无法精确指定像素;默认用 Markdown。
|
|
59
|
+
- 只有用户明确要求序号列更窄**且宿主支持 HTML** 时,才改用 `<table>` + `<colgroup><col style="width:56px">` + 表头"序号";不要为控宽牺牲 Markdown 可读性,也不要同时输出 Markdown 与 HTML 两份表格。
|
|
60
|
+
2. **表头 = `visibleColumns` + `dataFields` 补齐(不能只看 `columns`)**:`columns` 常常只配置了一部分列(例如 187 只返回 5 列),但数据里实际字段更多。必须把 `dataFields` 中**未出现在 `visibleColumns`** 的字段也补进表头,否则会"显示不全"。
|
|
61
|
+
- 补齐字段的表头:优先用 `columns` 中同名 `dataIndex` 的 `title`;没有就用字段名本身。`hide=true` 的字段**仍然不展示**。
|
|
62
|
+
- 明显语义重复的补充列(例如 `name` 与 `arc_document_name` 同为文件名且值相同)**跳过**,不要并列两列相同内容。
|
|
63
|
+
- **限制(永不展示)**:`id`、`rowKey`、`flowId`、`form_data_id`、`form_table_id`、`ebrecord_rowkey`、`isFollow`、`is_flow`、`isToDo`、`data_status_value`,以及所有以 `Action` / `Span` 结尾的字段(是列动作/布局配置,不是单元格值)。其中 `id` 只供后续操作取用,不进表格。
|
|
64
|
+
3. **单元格**:优先取 `displayData[行][dataIndex]`;它是显示值(例如 `read_state` 原始值 `"0"` 的显示值是 `"未识别"`)。`displayData` 缺该字段时才回落 `rows[行][dataIndex]`。
|
|
65
|
+
- **第一个业务列做成超链接(必须)**:第一个业务列(通常是"电子文件名称")的值渲染成 Markdown 超链接 **`[显示值](openUrls[n])`**。`openUrls` 与行序对齐,已是拼好环境域名的完整 URL,点击即在预归档里打开该条档案。
|
|
66
|
+
- `openUrls[n]` 为空(该行无 `id`)时退回纯文本,不要拼半个链接。
|
|
67
|
+
- 只在第一列加链接,其余列保持纯文本;不要给每个单元格都加链接。
|
|
68
|
+
4. **隐藏列的值不能丢**:`rows[行].id` 是智能识别 `checkIds` 的来源,按用户给的序号取 `rows[n-1].id`。
|
|
69
|
+
5. `displayData` 里形如 `xxxAction` 的字段(如 `arc_document_nameAction`)是列动作配置(openpage / url / dataId 的 JSON),**不是单元格值,不要展示**。
|
|
70
|
+
6. `listId` / `metaFormId` / `tag` 等内部标识不展示,只用于后续 operation 入参。
|
|
71
|
+
7. 用户没有要求全量时只取第 1 页(`pageNo=1`),不自动翻页。
|
|
72
|
+
|
|
73
|
+
## 获取不到节点 / 数据为空时
|
|
74
|
+
|
|
75
|
+
`archive.prelib.list` 报 `prelib_node_missing`,或列表返回空时,按以下顺序处理:
|
|
76
|
+
|
|
77
|
+
1. **先重新获取一次**:直接重试本 operation。服务端预归档树接口会偶发返回空(`code=200 / status=true` 但 `data=[]`,而节点实际仍在),重试通常即可恢复。
|
|
78
|
+
2. **仍取不到 → 判定多为无权限**:不再继续重试,也**不做后续操作**。向用户说明"可能是当前账号没有该预归档库(电子文件库)权限,或该环境未配置预归档库",建议到系统界面确认预归档库是否可见。
|
|
79
|
+
3. **若已知 `treeId`**:可显式传入 `--input-json '{"treeId":"..."}'` 验证一次。成功 → 说明只是"树发现失败",节点仍在;失败 → 按无权限处理。
|
|
80
|
+
4. **不要**:猜测 `treeId`、用历史 id 硬拼、跳过节点直接调用上传。
|
|
81
|
+
|
|
82
|
+
上传场景同样适用(上传依赖同一个电子文件库节点),见 [`archive-upload.md`](archive-upload.md)。
|
|
83
|
+
|
|
84
|
+
## 展示完列表后必须提示后续操作
|
|
85
|
+
|
|
86
|
+
给出表格**不代表任务结束**。展示后必须主动告诉用户"接下来可以做什么",再等用户选择:
|
|
87
|
+
|
|
88
|
+
1. **智能识别**(CLI 可直接执行):对勾选的行发起智能识别,是异步任务。
|
|
89
|
+
流程:用户给出序号 → 取 `rows[序号-1].id` → `archive.prelib.intelligent.prepare` → 用户确认 → `.apply` → 返回 `taskId`。
|
|
90
|
+
提示时可结合本次列表状态给建议(例如优先选识别状态为"未识别"的行)。
|
|
91
|
+
2. **提交整理**(把预归档数据整理并提交到正式档案库):**CLI 已支持**,见 [`archive-prelib-arrange.md`](archive-prelib-arrange.md)。
|
|
92
|
+
流程同智能识别(给序号 -> `prepare` -> 用户确认 -> `apply`)。**只对识别成功的数据生效**,必须把服务端 `message` 原样转达,不要声称全部整理完成。
|
|
93
|
+
3. **上传新文件**:`archive.upload.prelib.*`,见 [`archive-upload.md`](archive-upload.md)。
|
|
94
|
+
4. 提示写清楚哪些能由 CLI 直接做、哪些需要用户去界面操作,再由用户决定。
|
|
95
|
+
|
|
96
|
+
## 智能识别流程
|
|
97
|
+
|
|
98
|
+
1. `archive.prelib.list` 取列表与行 `id`;
|
|
99
|
+
2. 用户**明确勾选**要识别的条目(行 `id`);
|
|
100
|
+
3. `archive.prelib.intelligent.prepare`(`checkIds`)→ 把待识别条数与 id 告知用户,**必须等用户确认**;
|
|
101
|
+
4. `archive.prelib.intelligent.apply`(`continuation` + `confirm: true`)→ 提交识别任务,返回 `taskId`。
|
|
102
|
+
|
|
103
|
+
## 注意
|
|
104
|
+
|
|
105
|
+
- `treeId` 不传时取预归档树第一个电子文件库节点;存在**多个**电子文件库节点时必须让用户明确选择,不要自行挑一个。
|
|
106
|
+
- 识别任务是**异步**的:返回 `taskId` 只表示提交成功,**不要声称「识别完成」**,识别结果需到系统中查看。
|
|
107
|
+
- `intelligentCate` 是写操作,禁止跳过 prepare 直接 apply,也不要重复提交(会重复起任务)。
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# 打开预归档档案链接
|
|
2
|
+
|
|
3
|
+
## 什么时候读取
|
|
4
|
+
|
|
5
|
+
用户要"打开某条档案 / 给我链接 / 在预归档里看这条数据 / 跳转到这条"时读取本文件。
|
|
6
|
+
|
|
7
|
+
## 链接模板
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
/sp/custom/archive/fileLibEdit?singleMetaId=${singleMetaId}&treeId=${system_id}_${metadata_id}
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
| 参数 | 来源 |
|
|
14
|
+
| --- | --- |
|
|
15
|
+
| `singleMetaId` | `archive.prelib.list` 返回的 `rows[n].id`(用户给序号就取 `rows[序号-1].id`,**不要让用户抄 id**) |
|
|
16
|
+
| `treeId` | 电子文件库节点 `treeId`(`archive.prelib.tree` 的 `id`,或 `archive.prelib.list` 返回的 `treeId`)。**它本身就是 `${systemId}_${metadataId}` 形式**,直接整段作为 `treeId` 参数即可,**不需要另取 metadataId** |
|
|
17
|
+
|
|
18
|
+
## Operation
|
|
19
|
+
|
|
20
|
+
`archive.prelib.open`(read,不写数据):入参 `checkIds`(行 id 列表)与可选 `treeId`,返回每条的 `url`(**已拼好当前环境域名,可直接点击打开**,与创建流程返回的链接一致)与 `path`(相对路径)。
|
|
21
|
+
|
|
22
|
+
Windows PowerShell:
|
|
23
|
+
|
|
24
|
+
```powershell
|
|
25
|
+
weaver-work-cli --json archive run archive.prelib.open --input-json '{"checkIds":["1313909785262178418"]}'
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
macOS/Linux(bash/zsh):
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
weaver-work-cli --json archive run archive.prelib.open --input-json '{"checkIds":["1313909785262178418"]}'
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
返回示例:
|
|
35
|
+
|
|
36
|
+
```json
|
|
37
|
+
{
|
|
38
|
+
"nodeName": "电子文件库",
|
|
39
|
+
"systemId": "1229705529974292495",
|
|
40
|
+
"metadataId": "1229705529974292495",
|
|
41
|
+
"count": 1,
|
|
42
|
+
"url": "https://10.12.105.187/sp/custom/archive/fileLibEdit?singleMetaId=1313909785262178418&treeId=1229705529974292495_1229705529974292495",
|
|
43
|
+
"links": [
|
|
44
|
+
{
|
|
45
|
+
"singleMetaId": "1313909785262178418",
|
|
46
|
+
"treeId": "1229705529974292495_1229705529974292495",
|
|
47
|
+
"path": "/sp/custom/archive/fileLibEdit?singleMetaId=1313909785262178418&treeId=1229705529974292495_1229705529974292495",
|
|
48
|
+
"url": "https://10.12.105.187/sp/custom/archive/fileLibEdit?singleMetaId=1313909785262178418&treeId=1229705529974292495_1229705529974292495"
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## 注意
|
|
55
|
+
|
|
56
|
+
- 返回的 `url` **已拼好当前环境域名,可直接点击打开**(与创建流程/借阅流程返回的链接一致,CLI 不自动打开浏览器);`path` 只是相对路径备用。能否打开取决于该账号对这条档案的查看权限。
|
|
57
|
+
- **不要用行数据里的 `metadata_id` 字段去拼**——列表里该字段常为空(187 实测为空),拼出来会得到 `treeId=..._None`。
|
|
58
|
+
- 链接只用于打开查看,**不替代**列表查询、智能识别、提交整理。
|
|
59
|
+
- 节点取不到(预归档树返回空)时按 [`archive-prelib-list.md`](archive-prelib-list.md) 的"获取不到节点"规则处理,不要猜测 `treeId`。
|
|
@@ -35,7 +35,10 @@ weaver-work-cli --json archive run archive.upload.prelib.apply --input-json '{"c
|
|
|
35
35
|
|
|
36
36
|
## 注意
|
|
37
37
|
|
|
38
|
-
- 涉及附件、图片、本地文件:执行前必须提醒用户,**文件内容会被上传到 E10
|
|
38
|
+
- 涉及附件、图片、本地文件:执行前必须提醒用户,**文件内容会被上传到 E10 文书定档案系统,并可能进入当前大模型上下文**用于理解和处理。
|
|
39
|
+
- **「已确认」的判据(满足即可直接上传,不再多问一轮)**:用户在同一次请求中给出「本地文件路径」+「明确的目标全宗」(全宗唯一,或用户已从 `archive.fonds.list` 列表里选定),且电子文件库节点明确(唯一,或用户已指定 `treeId`)。此时 `prepare` 预检通过后**直接调用 `.apply`**,不要再追问"是否执行上传"。
|
|
40
|
+
- **仍须停下来询问(不得自动上传)**:只给文件名/路径但没给全宗;全宗有歧义或用户未选定;电子文件库节点有多个且未指定;用户明确要求先看预检结果;文件不存在或超过 200MB。用户仅提供文件路径或文件名、**未指定全宗**,不等于同意上传。
|
|
39
41
|
- 目标全宗和电子文件库节点必须明确;`archive.prelib.tree` 返回多个电子文件库节点时,先让用户选择再上传,不要自行猜测。
|
|
42
|
+
- **获取不到全宗或电子文件库节点时不上传**:`archive.fonds.list` 返回空、或预归档树返回空(列表查询报 `prelib_node_missing`、上传预检报 `tree_id_required`)时,**先重新获取一次**;仍然为空或报错,通常是当前账号没有对应权限(或环境未配置预归档库),此时**停止上传**——不要猜测 `fondsId` / `treeId`,不要继续 `prepare` / `apply`,并向用户说明可能是权限问题。
|
|
40
43
|
- 上传链路为 `preUploadCheck` → `module/upload` → `saveFile`;任一步失败会直接报错,不要自动重放 `.apply`。
|
|
41
44
|
- 默认不覆盖、不删除本地文件;上传成功后返回 `fileId`、`docId`、`fileName`、`treeId`、`fondsId`。
|
|
@@ -320,11 +320,99 @@
|
|
|
320
320
|
"references": [
|
|
321
321
|
"references/archive-upload.md"
|
|
322
322
|
]
|
|
323
|
+
},
|
|
324
|
+
"archive.prelib.list": {
|
|
325
|
+
"requiresConfirmationChain": false,
|
|
326
|
+
"references": [
|
|
327
|
+
"references/archive-prelib-list.md"
|
|
328
|
+
]
|
|
329
|
+
},
|
|
330
|
+
"archive.prelib.intelligent.prepare": {
|
|
331
|
+
"requiresConfirmationChain": true,
|
|
332
|
+
"references": [
|
|
333
|
+
"references/archive-prelib-list.md"
|
|
334
|
+
]
|
|
335
|
+
},
|
|
336
|
+
"archive.prelib.intelligent.apply": {
|
|
337
|
+
"requiresConfirmationChain": true,
|
|
338
|
+
"references": [
|
|
339
|
+
"references/archive-prelib-list.md"
|
|
340
|
+
]
|
|
323
341
|
}
|
|
324
342
|
},
|
|
325
343
|
"artifactBaseline": {
|
|
326
344
|
"aggregateSha256": "83f35c2f01d10c90a94c9770d58ee0b110bca65651229360e3d58891d7a4c322",
|
|
327
345
|
"files": [
|
|
346
|
+
{
|
|
347
|
+
"path": "docs/wenshuding.md",
|
|
348
|
+
"size": 7662,
|
|
349
|
+
"sha256": "0a9a4e9916349dc73a3d93effb3385c403e5f1742e5cb6870a096fa8ccac1754"
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
"path": "skill-template/domains/wenshuding.md",
|
|
353
|
+
"size": 2636,
|
|
354
|
+
"sha256": "f366e953ff4ae93a0435fb5696d866cb54b6c366dd4d7f635174d357ac216463"
|
|
355
|
+
},
|
|
356
|
+
{
|
|
357
|
+
"path": "skills/weaver-e10-wenshuding/SKILL.md",
|
|
358
|
+
"size": 18435,
|
|
359
|
+
"sha256": "cd68c40a571d43b1f306a2e4c70613a5b854f62ac39c5e2c5b94dc780eb4fdb5"
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
"path": "skills/weaver-e10-wenshuding/references/archive-agent-entry.md",
|
|
363
|
+
"size": 3439,
|
|
364
|
+
"sha256": "b5361aafc48105c168e9f7bc853f28a385d612cf969700f8a1470f74266b286a"
|
|
365
|
+
},
|
|
366
|
+
{
|
|
367
|
+
"path": "skills/weaver-e10-wenshuding/references/archive-borrow-car.md",
|
|
368
|
+
"size": 2821,
|
|
369
|
+
"sha256": "0d60df49e92ae3765a58ba64287c972e1964de8185e295e848dc31bc03a0e7f4"
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
"path": "skills/weaver-e10-wenshuding/references/archive-borrow-list.md",
|
|
373
|
+
"size": 2486,
|
|
374
|
+
"sha256": "f3e3501389ddc0aabef6dccc3c88f395bfa033b5200188efb1dd714c4269152e"
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
"path": "skills/weaver-e10-wenshuding/references/archive-disabled-capabilities.md",
|
|
378
|
+
"size": 1393,
|
|
379
|
+
"sha256": "a0dd54ece54943c6ec7b1a476fbe10d0692c3a25e2c23ca9bfe34c8219bf3cae"
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
"path": "skills/weaver-e10-wenshuding/references/archive-download.md",
|
|
383
|
+
"size": 2533,
|
|
384
|
+
"sha256": "f48cae1a86ff81eb2594a5bb92aa6a1deef11a06ee8be9287ab0ade1b9af0f8f"
|
|
385
|
+
},
|
|
386
|
+
{
|
|
387
|
+
"path": "skills/weaver-e10-wenshuding/references/archive-flow.md",
|
|
388
|
+
"size": 2681,
|
|
389
|
+
"sha256": "a3143666778878ad87b4777ed58a9fa055deb90c88a0bb19abfb045ea495ecb1"
|
|
390
|
+
},
|
|
391
|
+
{
|
|
392
|
+
"path": "skills/weaver-e10-wenshuding/references/archive-fonds.md",
|
|
393
|
+
"size": 1512,
|
|
394
|
+
"sha256": "0312515f08f41a2d106c5de54e8a446bc2b5a6f21510ca699264b5ebbd6e6d63"
|
|
395
|
+
},
|
|
396
|
+
{
|
|
397
|
+
"path": "skills/weaver-e10-wenshuding/references/archive-info.md",
|
|
398
|
+
"size": 1375,
|
|
399
|
+
"sha256": "621d800d98af81c053c9d0901bfade14f4748884a0d51d6f10198903e3fdbccf"
|
|
400
|
+
},
|
|
401
|
+
{
|
|
402
|
+
"path": "skills/weaver-e10-wenshuding/references/archive-prelib-list.md",
|
|
403
|
+
"size": 3760,
|
|
404
|
+
"sha256": "37c2f086086e269463a3d96368f95737d690cbe9a9b4769d7a6c030a0a96aa48"
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
"path": "skills/weaver-e10-wenshuding/references/archive-search.md",
|
|
408
|
+
"size": 3013,
|
|
409
|
+
"sha256": "cbd01c93b0269bf5e7f428b1adc1376402ef5b7413877bc4f02c6f497d0a92b1"
|
|
410
|
+
},
|
|
411
|
+
{
|
|
412
|
+
"path": "skills/weaver-e10-wenshuding/references/archive-upload.md",
|
|
413
|
+
"size": 2199,
|
|
414
|
+
"sha256": "5255779205ecbe4062943d11cdbda870dc077ba977ba1d93275c39c813274648"
|
|
415
|
+
},
|
|
328
416
|
{
|
|
329
417
|
"path": "src/shortcuts/archive/continuation.ts",
|
|
330
418
|
"size": 3269,
|
|
@@ -380,25 +468,30 @@
|
|
|
380
468
|
"size": 12275,
|
|
381
469
|
"sha256": "abd23b790db3090bcf9748ba8e1b677b6e6cbc3ed1386316a544d6a23cf59e8e"
|
|
382
470
|
},
|
|
383
|
-
{
|
|
384
|
-
"path": "src/shortcuts/archive/operations/fonds.ts",
|
|
385
|
-
"size": 4373,
|
|
386
|
-
"sha256": "3d066cdb6ef06f942b21a8b6757af3b70568e4e9433c2d86faedeb1ce899b586"
|
|
387
|
-
},
|
|
388
471
|
{
|
|
389
472
|
"path": "src/shortcuts/archive/operations/flow-url.ts",
|
|
390
473
|
"size": 12425,
|
|
391
474
|
"sha256": "34a381817eb0c6fb117c03f64649e7d8c043cfcb205b5b80b86e2ed5040a1507"
|
|
392
475
|
},
|
|
476
|
+
{
|
|
477
|
+
"path": "src/shortcuts/archive/operations/fonds.ts",
|
|
478
|
+
"size": 4373,
|
|
479
|
+
"sha256": "3d066cdb6ef06f942b21a8b6757af3b70568e4e9433c2d86faedeb1ce899b586"
|
|
480
|
+
},
|
|
393
481
|
{
|
|
394
482
|
"path": "src/shortcuts/archive/operations/getPageUrl.ts",
|
|
395
483
|
"size": 6193,
|
|
396
484
|
"sha256": "433157d64a0376cef577938f08d4718b2a7acd42f035fea8294bacfbff94c034"
|
|
397
485
|
},
|
|
486
|
+
{
|
|
487
|
+
"path": "src/shortcuts/archive/operations/prelib.ts",
|
|
488
|
+
"size": 12120,
|
|
489
|
+
"sha256": "123526ac32982ba90dc61d82b10acc610a312ef4ad3cd55317cb9b824311c7f2"
|
|
490
|
+
},
|
|
398
491
|
{
|
|
399
492
|
"path": "src/shortcuts/archive/operations/registry.ts",
|
|
400
|
-
"size":
|
|
401
|
-
"sha256": "
|
|
493
|
+
"size": 1850,
|
|
494
|
+
"sha256": "d3a3f9d9d7d40e314b0fd1d7ce8e0fa8b74447ba458cdf58bb00cf6990cee885"
|
|
402
495
|
},
|
|
403
496
|
{
|
|
404
497
|
"path": "src/shortcuts/archive/operations/search.ts",
|
|
@@ -442,69 +535,19 @@
|
|
|
442
535
|
"sha256": "b5361aafc48105c168e9f7bc853f28a385d612cf969700f8a1470f74266b286a"
|
|
443
536
|
},
|
|
444
537
|
{
|
|
445
|
-
"path": "
|
|
446
|
-
"size":
|
|
447
|
-
"sha256": "
|
|
448
|
-
},
|
|
449
|
-
{
|
|
450
|
-
"path": "skills/weaver-e10-wenshuding/references/archive-borrow-list.md",
|
|
451
|
-
"size": 2486,
|
|
452
|
-
"sha256": "f3e3501389ddc0aabef6dccc3c88f395bfa033b5200188efb1dd714c4269152e"
|
|
453
|
-
},
|
|
454
|
-
{
|
|
455
|
-
"path": "skills/weaver-e10-wenshuding/references/archive-disabled-capabilities.md",
|
|
456
|
-
"size": 1393,
|
|
457
|
-
"sha256": "a0dd54ece54943c6ec7b1a476fbe10d0692c3a25e2c23ca9bfe34c8219bf3cae"
|
|
458
|
-
},
|
|
459
|
-
{
|
|
460
|
-
"path": "skills/weaver-e10-wenshuding/references/archive-download.md",
|
|
461
|
-
"size": 2533,
|
|
462
|
-
"sha256": "f48cae1a86ff81eb2594a5bb92aa6a1deef11a06ee8be9287ab0ade1b9af0f8f"
|
|
538
|
+
"path": "src/shortcuts/archive/render/search-view.ts",
|
|
539
|
+
"size": 5665,
|
|
540
|
+
"sha256": "63369932da5fa3dde3ec7857bdd4f1375ae6252c77141a7464ab4a0f49359973"
|
|
463
541
|
},
|
|
464
542
|
{
|
|
465
|
-
"path": "
|
|
466
|
-
"size":
|
|
467
|
-
"sha256": "
|
|
468
|
-
},
|
|
469
|
-
{
|
|
470
|
-
"path": "skills/weaver-e10-wenshuding/references/archive-fonds.md",
|
|
471
|
-
"size": 1512,
|
|
472
|
-
"sha256": "0312515f08f41a2d106c5de54e8a446bc2b5a6f21510ca699264b5ebbd6e6d63"
|
|
473
|
-
},
|
|
474
|
-
{
|
|
475
|
-
"path": "skills/weaver-e10-wenshuding/references/archive-info.md",
|
|
476
|
-
"size": 1375,
|
|
477
|
-
"sha256": "621d800d98af81c053c9d0901bfade14f4748884a0d51d6f10198903e3fdbccf"
|
|
478
|
-
},
|
|
479
|
-
{
|
|
480
|
-
"path": "skills/weaver-e10-wenshuding/references/archive-search.md",
|
|
481
|
-
"size": 3013,
|
|
482
|
-
"sha256": "cbd01c93b0269bf5e7f428b1adc1376402ef5b7413877bc4f02c6f497d0a92b1"
|
|
483
|
-
},
|
|
484
|
-
{
|
|
485
|
-
"path": "skills/weaver-e10-wenshuding/references/archive-upload.md",
|
|
486
|
-
"size": 2199,
|
|
487
|
-
"sha256": "5255779205ecbe4062943d11cdbda870dc077ba977ba1d93275c39c813274648"
|
|
543
|
+
"path": "src/shortcuts/index.ts",
|
|
544
|
+
"size": 1500,
|
|
545
|
+
"sha256": "fe10e9918df3c47bf9038298df7c7d590c74cc3de62fce173f6f610938ae9090"
|
|
488
546
|
},
|
|
489
547
|
{
|
|
490
548
|
"path": "test/business/archive-operations.test.ts",
|
|
491
|
-
"size":
|
|
492
|
-
"sha256": "
|
|
493
|
-
},
|
|
494
|
-
{
|
|
495
|
-
"path": "docs/wenshuding.md",
|
|
496
|
-
"size": 7662,
|
|
497
|
-
"sha256": "0a9a4e9916349dc73a3d93effb3385c403e5f1742e5cb6870a096fa8ccac1754"
|
|
498
|
-
},
|
|
499
|
-
{
|
|
500
|
-
"path": "skill-template/domains/wenshuding.md",
|
|
501
|
-
"size": 2141,
|
|
502
|
-
"sha256": "ae0a1e0923b958766ba76655be1a266d5fe6293ec0e7b11e8f50594a3819cc5f"
|
|
503
|
-
},
|
|
504
|
-
{
|
|
505
|
-
"path": "skill-template/business-info.json",
|
|
506
|
-
"size": 8216,
|
|
507
|
-
"sha256": "370a45e86c6b7e33869c5df1bf08d9f22bd98fa8b157b49716e13bca0e7b63c3"
|
|
549
|
+
"size": 16019,
|
|
550
|
+
"sha256": "8576b93cdf7f92e76536f4aad2783699ef5018a64d93a5093983a6f945e16ddb"
|
|
508
551
|
}
|
|
509
552
|
]
|
|
510
553
|
},
|
|
@@ -39,6 +39,7 @@ cliHelp: "weaver-work-cli workflow --help"
|
|
|
39
39
|
- Read `../weaver-e10-shared/SKILL.md`(若尚未读过);
|
|
40
40
|
- `weaver-work-cli [--is-connector true] --json workflow run workflow.memoryPrompt`——该命令**无入参**;**先按上方 `--is-connector` 判据确定前缀,再直接执行**(仅"非首次对话且距上次成功读取记忆不足 6 小时"时跳过);
|
|
41
41
|
- **查询类意图**只读 [`workflow-query.md`](references/workflow-query.md) 一份(已覆盖 `workflow.search` 与 `workflow.todoStat`,不要再读其他查询文档);**但该文件约 108 KB / 835 行——整读会超单次读取上限被明确拒绝**(Read 单次上限约 **20,000 tokens ≈ 100 KB / 800 行**):**首轮一次读完开头的契约段**(`offset 1 limit 244`,约 30 KB,已覆盖 Operation、全部输入参数含「大分类判定」、时间条件与「待办时间默认语义」、执行流程),其余章节(`planJson` 编排、汇报式分组骨架、渲染规则与示例)**只在需要的那一刻按它开头的「分段索引」给出的行区间补读**;查看/操作/共享/发起/修改等意图读对应那一份 reference 即可,不要顺手把查询文档也一起读;**唯一例外是批量操作**——用 `scopeCondition` 走范围驱动时要构造与 `workflow.search` 同形的查询条件,**这一轮可以同时读 [`workflow-query.md`](references/workflow-query.md) 与 [`workflow-batch.md`](references/workflow-batch.md)**(前者给条件写法,后者给 `scopeCondition`/`action` 的执行口径),其余意图仍只读对应那一份;
|
|
42
|
+
- **汇总类意图**(命中 `workflow.todoSmartConvert`)在选读 [`todo-smart-convert.md`](references/todo-smart-convert.md) 的**同一轮**加读 **`aigroup/default.json`**(skill 根目录下,很小)——它是**分组口径与摘要模板的唯一真源**:组名词表、`groupingPrompt`(分法)、`requestSummaryPrompt`(摘要模板)、`excludeOriginFormDataFields`(排除清单)都在里面;`prep` 输出会回显相关组的这些内容,reference 正文的分类型描述只是背景,**组名与摘要口径一律以 `default.json` 为准**(2026-11-01 定稿:不读它 = 组名自造与摘要漏要素的根因)。
|
|
42
43
|
- **泛化待办查询**(如"今天有哪些待办")——**先按下方「待办汇总 vs 待办统计分流」验词**:原话含「汇总待办」/「批量处理待办」/「摘要」→ `workflow.todoSmartConvert`;含「统计待办」→ `workflow.todoStat`;三类词都没有才按本条走:先看上一步 `memoryPrompt` 返回的 `oaContext.smartGrouping`:`false`(低版本)→ **直接** `workflow.search`(category=todo,**不要带 `planJson`/`subCategory`**),CLI 已自带分组统计与卡片,原样渲染即结束;`true`(智能分组)→ 才追加 `workflow.todoStat` 做统计规划,再带 `planJson` 取数。**不要在 `smartGrouping` 为 `true` 之前先调 `workflow.todoStat`**——低版本必然失败(报 `todo_stat_requires_smart_mode`)白费一次调用。
|
|
43
44
|
> 以上调用**互不依赖,必须并行**:串行拆轮会成倍拉长耗时。**实测**:一次泛化待办查询全程约 70s,其中**模型轮次占 ~95%**(每轮约 8~25s,主因是模型输出量),CLI 命令本身合计只有 1~2s。**能省一轮就省一轮**——尤其不要为"解析上一轮输出""取流程 ID"另起一轮。
|
|
44
45
|
- **[`workflow-memory.md`](references/workflow-memory.md) 本步不读**——记忆读取的命令形态见上一行(**含 `--is-connector` 判据**),**记忆保存的规则已在本文件「记忆保存」章节给全**;只有需要判断"放 `user.md` / `memory.md` / `workflow:{id}` 哪一类"或其它字段细节时,才在需要的那一刻去读它。
|
|
@@ -99,6 +100,8 @@ cliHelp: "weaver-work-cli workflow --help"
|
|
|
99
100
|
- 两类词**同时出现** → 按 `workflow.todoSmartConvert`(归拢优先;`todoStat` 只服务纯统计诉求)。
|
|
100
101
|
- 三类词**都没有**(只是"有哪些待办 / 列出来 / 多少条")→ `workflow.search`,不要调 `workflow.todoStat`。
|
|
101
102
|
- **例外**:「批量处理待办」后面跟了明确写动作(提交 / 置已读 / 催办 / 共享 / 转发 / 退回)时,仍走 `workflow.batch*`,不要因为出现"批量处理"就转成汇总。
|
|
103
|
+
- **汇总范围的小分类(2026-11-02)**:用户原话出现小分类词(待处理 / 待阅 / 超时 / 未读 / 被退回 / 草稿 / 抄送 / 转发…)时,`prep`/`run` 要传 `--sub-category <词>`(或 `--tabid <tabid>`,显式 tabid 优先;todo 词表:待处理=7、待阅=5、超时=6、被退回=8、草稿=14、全部=0),否则「汇总下我的待处理」会静默取回全部(tabid=0)。未表达小分类时不传。仅影响汇总取数,`workflow.search` 不受影响。
|
|
104
|
+
- **默认排除抄送类身份(2026-11-03,generalRules)**:汇总取数默认带 `--isremarks`(排除抄送类身份 30/31/33/70/71,见 default.json `generalRules.identityFilter`),取数 warning 会提示。**用户提示词显式提到抄送/包含抄送/只要抄送/指定身份时,必须显式传 `--isremarks` 覆盖默认值**(全量=全部 23 个身份码;只要抄送=`30,31,33,70,71`)。
|
|
102
105
|
- **不要**为了"先看一眼有哪些"去调 `workflow.todoStat` / `workflow.search` 再回头走汇总链路——那会多花一轮,且交付形态会被带偏。
|
|
103
106
|
|
|
104
107
|
|
|
@@ -135,7 +138,7 @@ weaver-work-cli --json workflow aigroup set --input-json '{"workflowName":["费
|
|
|
135
138
|
- 阶段顺序、`aiGroups`(仅在需要语义侧重点时生成)与回灌、摘要规则和最终输出均以该 reference 为准;若省略 `aiGroups`,按 reference 的确定性规则继续执行;AI 计划必须基于本轮 `collect` 结果。
|
|
136
139
|
- **`groupingBrief[].groupingPrompt` 是规则文件(`default.json`)给的分组口径**(只在 `focus=false` 组出现):生成该组 `aiGroups` 前必须先读它,组名只能取它列出的词表,不得自行新造;它与 `aiContext`(决定看什么素材)是两件不同的事。
|
|
137
140
|
- 本分支只读;提交、置已读、催办、共享、转发、退回等写操作仍走 `workflow.batch*`。
|
|
138
|
-
- 最终交付(**2026-
|
|
141
|
+
- 最终交付(**2026-11-01 定稿,全文以此为准**):载荷**只在 `params.data.dataSource` 放本地服务地址**(`finish` 自动发布快照,服务是**全局单例、单进程多快照**,端口恒定;快照各自空闲 30 分钟后淘汰),明细由组件 GET 取;**回复正文 = 只有一个完整 `<browsertool>` 块(约 900 B),不写总结/表格/耗时等任何其他文字**。`<用户名>_<时间戳>.json`(三键数据,用户名取认证系统 `username`)由脚本自动落盘**仅作备用,默认不 `present_files`、不提路径**——只有用户明确要求「需要输出 json」时才展示(详见 `references/todo-smart-convert.md` §6.1 顶部)。只有 `--no-serve` 回退时才内联完整明细数据。排错看 `<tmpdir>/weaver-work-cli-serve/current.json`、`GET /health` 与各输出目录的 `serve.json`。
|
|
139
142
|
|
|
140
143
|
## 选哪个命令
|
|
141
144
|
|
|
@@ -208,6 +211,8 @@ weaver-work-cli --json workflow aigroup set --input-json '{"workflowName":["费
|
|
|
208
211
|
### 5) 命令输出读取纪律(禁止截断、禁止重复取数)
|
|
209
212
|
|
|
210
213
|
- **禁止对命令输出做管道截断**:不要用 `| head`、`| tail`、`| more` 等处理 `weaver-work-cli --json ...` 的 stdout。截断会破坏 JSON,并且必然导致重复执行同一条命令(实测最常见的一条命令被执行 2 次,就是 `| head` 引起的)。
|
|
214
|
+
- **`tools/` 脚本(`todo-summary.cjs` 等)的输出同样禁止截断、禁止重跑**(2026-11-02 用户定稿,实测踩坑):这类输出是**纯文本素材**而不是 JSON——截断不会报错,只会让素材**悄悄缺条**。实测 `build` 的「待写摘要」一节共 17.6 KB / 9 条,用 `| head -c 9000` 只看得到前 5 条,且此时缓存已经写过、重跑 `build` 也补不回被跳过的那几条,最后只能把整套链路重跑一遍(同一任务 12 轮 → 1 轮,脚本耗时 71.9s → 3.0s)。因此:**脚本输出一律整段直读,不 `head` / `head -c` / `tail` / `grep` 过滤正文**;确需留存时用 `> <out>/xxx.log` 一次落盘、再用 Read **一次**读完(只允许这种"整段落盘",不许分段看、不许先截断看一眼再重跑)。`prep` / `build` / `finish` 的 stdout 已包含下一步所需的全部内容(组/行/序号、待写摘要素材、最终结构、自检、载荷),**不需要、也不允许**为了"确认一下"再去翻中间产物。
|
|
215
|
+
- **中间产物不要重复探查**:`<out>/` 下的 `items.json` / `state.json` / `smartgroup.json` / `build.log` / `finish.log` 是脚本自己的中间态;不要 `ls` 输出目录、不要读 `state.json` 核对、不要翻日志找已完成的信息——每次探查≈1 轮≈20s(实测一次任务这样白花 3 轮、约 25s)。只有 stdout 里确实缺、且下一步**必须**用的字段(如某条 `requestId`)才去读,读就一次读完。
|
|
211
216
|
- **一律直读 stdout(失败时读 stderr,见下条),不要落盘、不要写脚本回读**:`--json` 输出是**多行 pretty JSON**,且已按体积做过控制(`workflow.todoStat` 约 20 KB/400 余行;`workflow.search` 的条目已收窄到必要字段、泛化待办查询实测约 **14 KB**;`workflow.detail` 只有几 KB;`workflow.createForm` / `editLoad` 遇到大表单会落盘、stdout 只回提示)——都在宿主单次输出上限以内——**直接读即可**。注意 `workflow.createForm` 的 `fields` / `historyRequestData` / `systemFields` 三个键是**压成单行**输出的(只去缩进、内容一字不改),其中 `fields` 那一行字段多时可能上万字符——**这属正常,不是被截断**,照常按 JSON 解析。**禁止**把 stdout 重定向到文件(`> /tmp/xxx.json`)再写脚本解析回读:它不会带来任何新信息,只会白白多出一次工具往返(实测多一轮约 +7s,占整轮耗时可观)。
|
|
212
217
|
- **`workflow.search` 的体积纪律(别等被截断)**:泛化待办按要求走 `planJson` 分组(各组独立渲染、各 10 条,体积天然分散);要看更多用 `current` 分页续查;**不要靠加大 `pageSize` 一次拉全**。CLI 侧已按 **24 KB(美化口径)** 设体积守卫:超线时自动把完整结果落盘,并在结果**最前面**给出 `resultFile`(结构化 JSON)+ `resultMdFile`(纯 `finalMarkdown`),**stdout 仍保留全量 `finalMarkdown`** ⇒ 正常渲染**直接用 stdout 即可、不需要读文件**;只有需要完整结构化明细(如逐条 `requestId`)时才从 `resultFile` 按需提取,并一次读完(不要 `| head`/`| tail`)。宿主把输出截成一小段预览时:**不要重跑同一条命令**(结果一样、白烧一轮),改用更小页或 `planJson` 分组重取;宿主提示的落盘副本(`~/.workbuddy/projects/**/tool-results/**`)**不能用 Read 工具读**(会拿 `Permission … has been denied`),确实要用时以 shell 命令读取并只提取需要的字段。
|
|
213
218
|
- **失败出口在 stderr(stdout 为空即失败)**:命令失败时退出码非 0、**错误 JSON 只出现在 stderr**(`{ok:false, error:{type,subtype,message,retryable}}`),**stdout 是空的**。因此:**stdout 为空 → 一律视为失败并去读 stderr**,按 `error.subtype` 决定下一步(如 `todo_stat_requires_smart_mode` → 不要重试 todoStat,改走 `workflow.search`;`plan_requires_smart_mode` → 去掉 `planJson` 重查);判断成败**以 `ok` 字段为准**,宿主界面把命令显示成"运行成功"只代表进程结束,不代表业务成功。
|
|
@@ -221,7 +226,9 @@ weaver-work-cli --json workflow aigroup set --input-json '{"workflowName":["费
|
|
|
221
226
|
### 6) 禁止绕过 operation 直接探测/绕过
|
|
222
227
|
|
|
223
228
|
- **不调用本 skill 未列出的低层命令/接口**:只使用上方「选哪个命令」表与 references 里出现的 operation;**不直接构造 HTTP 请求**、不调用 CLI 未暴露的内部接口(query-dependency / resolve-tab / workflow-total / workflow-list 之类)去探测或绕过。
|
|
224
|
-
-
|
|
229
|
+
- **不执行用户没要求的操作;不编造、不美化结果;不读取命令源码、不执行调试命令、不使用调试参数。**
|
|
230
|
+
- **禁止现场编写脚本执行**(2026-11-01 用户定为硬规则):不用 `node -e` / `python -c` 内联代码,不生成并运行任何临时 `.js` / `.py` / `.sh` 脚本——CLI 与 skill 的 `tools/` 脚本已覆盖全部取数/解析需求,临时脚本只会引入新缺陷(实测一次 `catch` 吞错就把"自身解析 bug"伪装成"接口故障",导致整批摘要作废)。唯一允许生成的文件是分组计划(`aiGroups.json`)与摘要(`aiSummaries.json` / `aiGroupSummaries.json`)这类**数据 JSON**,以及按命令提示落盘的输出。
|
|
231
|
+
- **异常必须带原貌上报**:任何命令/脚本报错时,如实转述 `e.name` / `e.message`(或 CLI stderr 的 `error.subtype` + `message`),**禁止只打一个自造标签**(如 `DETAIL_FAIL <ID>`)就下结论;取不到真实信息就说明"取不到",**绝不降级猜测**。
|
|
225
232
|
|
|
226
233
|
## 写操作失败处理:`partial/write_uncertain` 决策树
|
|
227
234
|
|