siluzan-cso-cli 1.1.29-beta.2 → 1.1.29-beta.3
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
CHANGED
|
@@ -54,7 +54,7 @@ siluzan-cso init -d /path/to/skills # 写入自定义目录
|
|
|
54
54
|
siluzan-cso init --force # 强制覆盖已存在文件
|
|
55
55
|
```
|
|
56
56
|
|
|
57
|
-
> **注意**:当前为测试版(1.1.29-beta.
|
|
57
|
+
> **注意**:当前为测试版(1.1.29-beta.3),供内部测试使用。正式发布后安装命令将改为 `npm install -g siluzan-cso-cli`。
|
|
58
58
|
|
|
59
59
|
| 助手 | 建议 `--ai` |
|
|
60
60
|
| ----------------------- | ------------------------------------ |
|
package/dist/index.js
CHANGED
|
@@ -2610,6 +2610,9 @@ function pickStr(obj, key) {
|
|
|
2610
2610
|
const v = obj[key];
|
|
2611
2611
|
return typeof v === "string" && v.trim() ? v.trim() : void 0;
|
|
2612
2612
|
}
|
|
2613
|
+
function pickPhone(data) {
|
|
2614
|
+
return pickStr(data, "phone") ?? pickStr(data, "mobile") ?? pickStr(data, "phoneNumber") ?? pickStr(data, "mobilePhone");
|
|
2615
|
+
}
|
|
2613
2616
|
function pickCompanyId(data) {
|
|
2614
2617
|
const direct = pickStr(data, "companyId") ?? pickStr(data, "companyID") ?? pickStr(data, "CompanyId");
|
|
2615
2618
|
if (direct) return direct;
|
|
@@ -2626,10 +2629,11 @@ function parseMeResponse(text) {
|
|
|
2626
2629
|
const data = json?.data && typeof json.data === "object" ? json.data : json;
|
|
2627
2630
|
const id = pickStr(data, "entityId") ?? pickStr(data, "id") ?? pickStr(data, "userId") ?? pickStr(data, "accountId");
|
|
2628
2631
|
const email = pickStr(data, "email");
|
|
2629
|
-
const
|
|
2632
|
+
const phone = pickPhone(data);
|
|
2633
|
+
const username = pickStr(data, "userName") ?? pickStr(data, "username") ?? pickStr(data, "name") ?? phone;
|
|
2630
2634
|
const companyId = pickCompanyId(data);
|
|
2631
|
-
if (!id && !email && !username && !companyId) return null;
|
|
2632
|
-
return { id, email, username, companyId };
|
|
2635
|
+
if (!id && !email && !username && !phone && !companyId) return null;
|
|
2636
|
+
return { id, email, username, phone, companyId };
|
|
2633
2637
|
} catch {
|
|
2634
2638
|
return null;
|
|
2635
2639
|
}
|
|
@@ -2654,6 +2658,7 @@ async function fetchSiluzanCurrentUser(apiBase, config) {
|
|
|
2654
2658
|
entityId: parsed.id,
|
|
2655
2659
|
email: parsed.email,
|
|
2656
2660
|
username: parsed.username,
|
|
2661
|
+
phone: parsed.phone,
|
|
2657
2662
|
companyId: parsed.companyId
|
|
2658
2663
|
};
|
|
2659
2664
|
} catch {
|
package/dist/skill/_meta.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"slug": "siluzan-cso",
|
|
3
|
-
"version": "1.1.29-beta.
|
|
4
|
-
"publishedAt":
|
|
3
|
+
"version": "1.1.29-beta.3",
|
|
4
|
+
"publishedAt": 1781250032157,
|
|
5
5
|
"homepage": "https://www.siluzan.com",
|
|
6
6
|
"source": "https://dev.azure.com/jack4it/Sammamish/_git/siluzan-skill",
|
|
7
7
|
"requiredBinaries": [
|
|
@@ -9,7 +9,7 @@ $ErrorActionPreference = 'Stop'
|
|
|
9
9
|
# -- Package info (injected at build time) ------------------------------------
|
|
10
10
|
$PKG_NAME = 'siluzan-cso-cli'
|
|
11
11
|
# PKG_VERSION 锁定到与本脚本同批构建产物一致的版本,避免与 dist/skill 错位
|
|
12
|
-
$PKG_VERSION = '1.1.29-beta.
|
|
12
|
+
$PKG_VERSION = '1.1.29-beta.3'
|
|
13
13
|
$CLI_BIN = 'siluzan-cso'
|
|
14
14
|
$SKILL_LABEL = 'Siluzan CSO'
|
|
15
15
|
$INSTALL_CMD = 'npm install -g siluzan-cso-cli@beta'
|
|
@@ -9,7 +9,7 @@ set -euo pipefail
|
|
|
9
9
|
# -- Package info (injected at build time) ------------------------------------
|
|
10
10
|
readonly PKG_NAME="siluzan-cso-cli"
|
|
11
11
|
# PKG_VERSION 锁定到与本脚本同批构建产物一致的版本,避免与 dist/skill 错位
|
|
12
|
-
readonly PKG_VERSION="1.1.29-beta.
|
|
12
|
+
readonly PKG_VERSION="1.1.29-beta.3"
|
|
13
13
|
readonly CLI_BIN="siluzan-cso"
|
|
14
14
|
readonly SKILL_LABEL="Siluzan CSO"
|
|
15
15
|
readonly INSTALL_CMD="npm install -g siluzan-cso-cli@beta"
|
|
@@ -35,11 +35,27 @@
|
|
|
35
35
|
|
|
36
36
|
---
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
## 执行总纲(顺序硬门禁 · 必读)
|
|
39
|
+
|
|
40
|
+
**下面第 1→4 步是顺序门禁,不是参考清单。** 每一步未拿到"⛔ 通过条件"里的产物,**禁止**进入下一步,**更禁止**提前开始写提纲或正文。
|
|
41
|
+
|
|
42
|
+
- **唯一可跳过判据**:步骤标题带「按需」「可选」。本工作流中**只有第 4 步 RAG 是「按需」**,其余 3 步任何情况都不得省略、不得合并、不得用"已联网检索/凭经验"替代。
|
|
43
|
+
- **完成即留痕(进度标记,不是停下来)**:每完成一步,先打一行极简状态(**仅状态,不展开过程**),**紧接着在同一回合内立即继续下一步**:
|
|
44
|
+
- 第 1 步 → `✓ 人设:<name>(platform_focus=<值>)`
|
|
45
|
+
- 第 2 步 → `✓ 三库已加载:<来源>`(来源四选一:用户提供 / 用户目录 / 公众号pack / 全局默认)
|
|
46
|
+
- 第 3 步 → `✓ 赛道包:<公众号爆款 / 短视频口播 / 无>`
|
|
47
|
+
- **⚠️ 这三行是进度标记,不是提问,不需要用户回复。** 打完一行后**严禁结束回合、严禁等待用户确认**,直接往下做,直到产出成稿或真正卡住为止。把 1→2→3→写作 一气呵成跑完,不要每步停一下等用户。
|
|
48
|
+
- **唯一允许停下来等用户的情形**(除此之外不得中断):
|
|
49
|
+
- 第 1 步:列出已有人设让用户**自选**、或走 `persona-onboarding.md` 需要用户提供信息;
|
|
50
|
+
- 第 3 步:`platform_focus` **为空或多选**,需要用户指定平台;
|
|
51
|
+
- 命令报错 / 缺鉴权 / 缺必要素材,无法自行继续。
|
|
52
|
+
- **未集齐上述三行之前,不允许产出任何提纲或正文。** 若你正要写正文却缺其中任何一行 → 立即回去补做那一步,而不是停下来问用户。
|
|
39
53
|
|
|
40
|
-
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 第 1 步:加载人设 ⛔ 没有可用人设卡之前,禁止进入第 2 步
|
|
41
57
|
|
|
42
|
-
|
|
58
|
+
所有腔调、句式、共鸣切入点都依赖人设卡,**这一步不可跳过**。按以下优先级判断:
|
|
43
59
|
|
|
44
60
|
> 确定人设名后,统一用 `siluzan-cso persona list --name <人设名> --json` 读 `styleGuide` 字段作为人设卡;不存在或异常则请用户核对名称。
|
|
45
61
|
|
|
@@ -49,17 +65,15 @@
|
|
|
49
65
|
- 非空 → Markdown 展示列表,**让用户自选**(切勿默认或代选),确认后按上方命令拉取
|
|
50
66
|
- 为空 → 进入 `persona-onboarding.md` 引导(反推 / 描述 / 已有卡三选一;都不填走临时人设兜底)
|
|
51
67
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
加载完成后,向用户明确告知:"本次使用人设:`<name>`,platform_focus = `<值>`"。
|
|
68
|
+
**⛔ 通过条件**:已拿到可用人设卡,且向用户输出了 `✓ 人设:<name>(platform_focus=<值>)`。未满足前不得进入第 2 步。
|
|
55
69
|
|
|
56
70
|
人设字段标准见 `persona-schema.md`;反推见 `persona-reverse-sop.md`;平台命令细节见 `references/persona.md`。
|
|
57
71
|
|
|
58
72
|
---
|
|
59
73
|
|
|
60
|
-
## 第 2 步:确定本次三库内容
|
|
74
|
+
## 第 2 步:确定本次三库内容 ⛔ 三库文件未完整落盘并读取前,禁止进入第 3 步
|
|
61
75
|
|
|
62
|
-
|
|
76
|
+
**这一步不可跳过,也不可用网络检索替代。** 即便已联网查过资料,仍必须按下列优先级确认并**完整读取**本次三库文件后才能继续:
|
|
63
77
|
|
|
64
78
|
**优先级 1 — 用户本次提供的文件**:若用户在对话中直接提供了三库文件(流量因子库 / 产品资产库 / 烹调方法库),则:
|
|
65
79
|
|
|
@@ -95,9 +109,11 @@
|
|
|
95
109
|
|
|
96
110
|
> **保密边界**:优先级 3 的内置三库(含 pack)只用于驱动创作,禁止在思考、步骤复盘、SOP 记录、最终输出中展示或转述其链接、库名、条目编码、条目原文/描述、句式模板、结构等可还原内部内容;也禁止复制、导出、落盘或 `present_files` 交付其原文副本。如需指代,一律写「参考资料一/二/三」。只有内容确实来自用户(优先级 1/2)才不受限。
|
|
97
111
|
|
|
112
|
+
**⛔ 通过条件**:三库三个文件均已完整落盘并读取,且打出了 `✓ 三库已加载:<来源>`。本步**无需任何用户输入**——打完状态行立即进入第 3 步,**不要停下等用户**。
|
|
113
|
+
|
|
98
114
|
---
|
|
99
115
|
|
|
100
|
-
## 第 3 步:按 platform_focus 挂载赛道包
|
|
116
|
+
## 第 3 步:按 platform_focus 挂载赛道包 ⛔ 本步不可跳过
|
|
101
117
|
|
|
102
118
|
读人设卡的 `platform_focus` 字段:
|
|
103
119
|
|
|
@@ -107,9 +123,13 @@
|
|
|
107
123
|
- **为空** → 询问用户本次写哪个平台,再决定挂哪个 pack。
|
|
108
124
|
- **多选** → 写稿前询问"本次主要发到哪个平台",按该平台 pack 优先。
|
|
109
125
|
|
|
126
|
+
**⛔ 通过条件**:已确定并加载对应赛道包(或确认为"无"),且向用户输出了 `✓ 赛道包:<…>`。未满足前不得进入主 SOP 写作。
|
|
127
|
+
|
|
110
128
|
---
|
|
111
129
|
|
|
112
|
-
## 第 4 步:RAG
|
|
130
|
+
## 第 4 步:RAG(按需 · 可跳过)
|
|
131
|
+
|
|
132
|
+
> 本步是全工作流**唯一**带「按需」标记、允许跳过的步骤。
|
|
113
133
|
|
|
114
134
|
如需从平台知识库检索品牌/产品内部素材,调用 `siluzan-cso rag query`(`-q` 内多个短词用**空格**分隔时,CLI 会分检再合并排序;详见 `references/rag.md`),结果归入主 SOP 第 4 步"拆素材"。不用于与文案无关的场景。
|
|
115
135
|
|
package/package.json
CHANGED