siluzan-cso-cli 1.1.29-beta.2 → 1.1.29-beta.4
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.4),供内部测试使用。正式发布后安装命令将改为 `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.4",
|
|
4
|
+
"publishedAt": 1781257003327,
|
|
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.4'
|
|
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.4"
|
|
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,31 +35,34 @@
|
|
|
35
35
|
|
|
36
36
|
---
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
## 执行步骤
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
> AI行为规范:以下步骤没有标记按需/可跳过的步骤必须执行,不能省略
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
### 第 1 步 读取必读文件
|
|
43
|
+
|
|
44
|
+
1. `collaboration.md`
|
|
45
|
+
2. `sop.md`
|
|
46
|
+
|
|
47
|
+
### 第 2 步:加载人设
|
|
48
|
+
|
|
49
|
+
所有腔调、句式、共鸣切入点都依赖人设卡。按以下优先级判断:
|
|
43
50
|
|
|
44
51
|
> 确定人设名后,统一用 `siluzan-cso persona list --name <人设名> --json` 读 `styleGuide` 字段作为人设卡;不存在或异常则请用户核对名称。
|
|
45
52
|
|
|
46
53
|
1. **本次提供了人设卡**(文件 / 文本 / 截图)→ 按 `persona-schema.md` 校验 → 缺字段补问 → A1 确认 → `siluzan-cso persona create` 保存 → 进入主流程
|
|
47
54
|
2. **已指定人设名** → 直接按上方命令拉取
|
|
48
55
|
3. **均无** → 先 `siluzan-cso persona list`(不加 `--json`,或加 `--no-style-guide`,避免输出过长被截断)查平台是否已有人设,**不要在查询前假设有无**:
|
|
49
|
-
- 非空 → Markdown
|
|
56
|
+
- 非空 → Markdown 格式清晰展示全部已有人设,**要求用户从中自主选择**(即使存在准确匹配项也不默认),用户确认后再按照上述命令进行拉取
|
|
50
57
|
- 为空 → 进入 `persona-onboarding.md` 引导(反推 / 描述 / 已有卡三选一;都不填走临时人设兜底)
|
|
51
58
|
|
|
52
|
-
> 关键约束:**没有可用人设卡之前,不要进入后续步骤**。所有腔调、句式、共鸣切入点都依赖人设卡。
|
|
53
|
-
|
|
54
|
-
加载完成后,向用户明确告知:"本次使用人设:`<name>`,platform_focus = `<值>`"。
|
|
55
|
-
|
|
56
59
|
人设字段标准见 `persona-schema.md`;反推见 `persona-reverse-sop.md`;平台命令细节见 `references/persona.md`。
|
|
57
60
|
|
|
58
61
|
---
|
|
59
62
|
|
|
60
|
-
## 第
|
|
63
|
+
## 第 3 步:确定本次三库内容
|
|
61
64
|
|
|
62
|
-
|
|
65
|
+
按下列优先级确认并**完整读取**本次三库文件:
|
|
63
66
|
|
|
64
67
|
**优先级 1 — 用户本次提供的文件**:若用户在对话中直接提供了三库文件(流量因子库 / 产品资产库 / 烹调方法库),则:
|
|
65
68
|
|
|
@@ -97,33 +100,29 @@
|
|
|
97
100
|
|
|
98
101
|
---
|
|
99
102
|
|
|
100
|
-
## 第
|
|
101
|
-
|
|
102
|
-
读人设卡的 `platform_focus` 字段:
|
|
103
|
+
## 第 4 步:按文案类型额外阅读
|
|
103
104
|
|
|
104
|
-
-
|
|
105
|
-
-
|
|
106
|
-
-
|
|
107
|
-
- **为空** → 询问用户本次写哪个平台,再决定挂哪个 pack。
|
|
108
|
-
- **多选** → 写稿前询问"本次主要发到哪个平台",按该平台 pack 优先。
|
|
105
|
+
- 公众号文章:`packs/公众号爆款/overview.md`
|
|
106
|
+
- 口播稿:`packs/短视频口播/overview.md`、`packs/短视频口播/口播-sop.md.md`(取代默认的`sop.md`)
|
|
107
|
+
- 其他: 无
|
|
109
108
|
|
|
110
109
|
---
|
|
111
110
|
|
|
112
|
-
## 第
|
|
111
|
+
## 第 5 步:RAG(按需 · 可跳过)
|
|
112
|
+
|
|
113
|
+
> 本步是全工作流**唯一**带「按需」标记、允许跳过的步骤。
|
|
113
114
|
|
|
114
115
|
如需从平台知识库检索品牌/产品内部素材,调用 `siluzan-cso rag query`(`-q` 内多个短词用**空格**分隔时,CLI 会分检再合并排序;详见 `references/rag.md`),结果归入主 SOP 第 4 步"拆素材"。不用于与文案无关的场景。
|
|
115
116
|
|
|
116
|
-
|
|
117
|
+
## 第 6 步 检查步骤是否已全部完成
|
|
117
118
|
|
|
118
|
-
|
|
119
|
+
逐条自检,全部通过才进入「输出」。任一项不通过,回到对应步骤补全,**不得**带着缺口直接交付。
|
|
119
120
|
|
|
120
|
-
-
|
|
121
|
-
-
|
|
122
|
-
-
|
|
123
|
-
-
|
|
124
|
-
-
|
|
125
|
-
- 公众号赛道包:`packs/公众号爆款/overview.md`
|
|
126
|
-
- 短视频口播赛道包:`packs/短视频口播/overview.md`
|
|
121
|
+
- [ ] 第 1 步:`collaboration.md`、`sop.md` 已读
|
|
122
|
+
- [ ] 第 2 步:人设已确定并加载(`styleGuide` 已拉取;临时人设也已明确)
|
|
123
|
+
- [ ] 第 3 步:本次三库对应的三个文件已按优先级确认并**完整读取**(远端来源整文件落盘,无 `head`/`tail`/截断)
|
|
124
|
+
- [ ] 第 4 步:已按文案类型读完对应 pack(公众号 / 口播 / 其他)
|
|
125
|
+
- [ ] 第 5 步:RAG 已执行或已明确判定跳过(涉及品牌/产品事实时不得跳过)
|
|
127
126
|
|
|
128
127
|
---
|
|
129
128
|
|
package/package.json
CHANGED