@yeaft/webchat-agent 0.1.1006 → 0.1.1008
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/package.json +1 -1
- package/yeaft/dream/prompts/create.md +2 -2
- package/yeaft/dream/prompts/extract-session.md +14 -14
- package/yeaft/dream/prompts/extract-topic.md +8 -8
- package/yeaft/dream/prompts/extract-user.md +6 -6
- package/yeaft/dream/prompts/extract-vp.md +15 -15
- package/yeaft/dream/prompts/summarize-scope.md +14 -14
- package/yeaft/dream/prompts/triage-pass1.md +6 -6
- package/yeaft/dream/prompts/update.md +10 -10
- package/yeaft/prompts.js +34 -5
- package/yeaft/templates/base.md +12 -6
- package/yeaft/templates/common-rules.md +14 -9
- package/yeaft/templates/harness/router-handoff.md +1 -1
- package/yeaft/templates/harness/router-shape.md +12 -12
- package/yeaft/templates/harness/worker-shape.md +8 -8
- package/yeaft/templates/identity-yeaft.md +1 -1
- package/yeaft/templates/mode-unified.md +1 -1
- package/yeaft/templates/personas/explorer.md +1 -1
- package/yeaft/templates/personas/researcher.md +1 -1
- package/yeaft/templates/tool-guidance.md +1 -1
- package/yeaft/vp/seed-defaults.js +36 -11
- package/yeaft/vp/seed-topup.js +1 -0
package/package.json
CHANGED
|
@@ -21,13 +21,13 @@ Reply with strict JSON of the shape:
|
|
|
21
21
|
|
|
22
22
|
Scope path: {{target}} (must be ≤2 levels)
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
来源会话对话:
|
|
25
25
|
{{sources}}
|
|
26
26
|
|
|
27
27
|
{{siblingsBlock}}
|
|
28
28
|
任务:
|
|
29
29
|
1. 从零编写 memory.md,并使用合理的章节结构。
|
|
30
|
-
2.
|
|
30
|
+
2. 优先保留可复用经验:工作流、偏好、坑点、纠偏、项目约定、review/merge/tag 教训,以及会改变后续执行方式的规则。
|
|
31
31
|
3. 当前 PR、review、阻塞细节只有仍可执行时才保留。
|
|
32
32
|
4. 编写 summary.md(1–3 句),先写可复用经验,再写当前状态。
|
|
33
33
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<!-- lang:en -->
|
|
2
|
-
# Dream
|
|
2
|
+
# Dream Extraction — Session Scope
|
|
3
3
|
|
|
4
4
|
You are extracting **memory segments** from a session conversation. This pass focuses on a specific **`sessions/<id>` scope**: durable facts about one collaboration session and its shared context.
|
|
5
5
|
|
|
@@ -33,35 +33,35 @@ Allowed `kind` values include `workflow`, `preference`, `lesson`, `pitfall`, `co
|
|
|
33
33
|
Make the segment useful to a future session member who needs the big picture plus the latest actionable detail. Prefer stable, reusable memory over a chronology of completed actions. A completion record is useful only if it changes what future work should do next.
|
|
34
34
|
|
|
35
35
|
<!-- lang:zh -->
|
|
36
|
-
# Dream
|
|
36
|
+
# Dream 抽取 — 会话作用域
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
你正在从一段会话对话中抽取 **记忆段**。本轮关注特定 **`sessions/<id>` 作用域**:一个协作会话的稳定事实和共享上下文。
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
目标会话 id 会以 `{{sessionId}}` 提供。
|
|
41
41
|
|
|
42
|
-
## `sessions/<id>`
|
|
42
|
+
## `sessions/<id>` 作用域应抽取什么
|
|
43
43
|
|
|
44
|
-
- **purpose** —
|
|
45
|
-
- **members** —
|
|
44
|
+
- **purpose** — 这个会话存在的目的、章程或使命
|
|
45
|
+
- **members** — 用户、会话成员、角色,以及各自负责什么
|
|
46
46
|
- **workflow** — 之后可复用的工作方式:review 流程、merge/tag 节奏、交接顺序、测试要求
|
|
47
47
|
- **preferences** — 会影响后续执行的用户偏好或项目偏好
|
|
48
48
|
- **pitfalls and corrections** — 已犯错误、被拒绝的做法、用户纠偏,避免之后重复
|
|
49
|
-
- **shared decisions** —
|
|
50
|
-
- **shared context** —
|
|
49
|
+
- **shared decisions** — 会话之后应该记住的稳定决策
|
|
50
|
+
- **shared context** — 整个会话依赖的领域或项目信息
|
|
51
51
|
- **current state** — 当前重要的 PR、review、阻塞、下一步或 release 状态,但只保留仍会影响下一步的内容
|
|
52
|
-
- **lessons** —
|
|
52
|
+
- **lessons** — 未来回合应继续遵守的规则化经验
|
|
53
53
|
|
|
54
54
|
## 不要在这里抽取什么
|
|
55
55
|
|
|
56
56
|
- 应进入 `user` 的用户私人偏好。
|
|
57
|
-
-
|
|
58
|
-
-
|
|
57
|
+
- 只关于某个会话成员 的事实;这些应进入会话成员作用域。
|
|
58
|
+
- 应进入会话主题作用域的主题细节。
|
|
59
59
|
- 没有未来价值的一次性闲聊。
|
|
60
60
|
|
|
61
61
|
## 输出
|
|
62
62
|
|
|
63
|
-
只返回 JSON
|
|
63
|
+
只返回 JSON 数组。每一项必须包含 `kind`、`body`、`tags`、`sourceMessages` 和 `confidence`。
|
|
64
64
|
|
|
65
65
|
允许的 `kind` 包括 `workflow`、`preference`、`lesson`、`pitfall`、`correction`、`project-convention`、`decision`、`goal`、`fact` 和 `context`。
|
|
66
66
|
|
|
67
|
-
|
|
67
|
+
记忆段应帮助未来的会话成员快速理解大背景和最新可执行细节。优先保留可复用经验,不要只写完成事项流水账;只有仍会改变下一步执行方式的完成记录才值得保留。
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<!-- lang:en -->
|
|
2
|
-
# Dream
|
|
2
|
+
# Dream Extraction — Topic Scope
|
|
3
3
|
|
|
4
4
|
You are extracting **memory segments** from a session conversation. This pass focuses on a specific **session topic scope**: durable facts, decisions, and viewpoints about one recurring topic.
|
|
5
5
|
|
|
@@ -27,13 +27,13 @@ Return a JSON array only. Each item must have `kind`, `body`, `tags`, `sourceMes
|
|
|
27
27
|
Keep the topic memory sharp: enough background to orient the next turn, plus current details that should not be lost.
|
|
28
28
|
|
|
29
29
|
<!-- lang:zh -->
|
|
30
|
-
# Dream
|
|
30
|
+
# Dream 抽取 — 主题作用域
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
你正在从一段会话对话中抽取 **记忆段**。本轮关注特定 **会话主题作用域**:关于某个反复出现主题的稳定事实、决策和观点。
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
目标主题 id 会以 `{{topicId}}` 提供。
|
|
35
35
|
|
|
36
|
-
##
|
|
36
|
+
## 主题作用域应抽取什么
|
|
37
37
|
|
|
38
38
|
- **core facts** — 用户教过或确认过的、关于该主题的稳定知识
|
|
39
39
|
- **viewpoints / opinions** — 用户或 session 对该主题形成的稳定观点
|
|
@@ -46,10 +46,10 @@ Keep the topic memory sharp: enough background to orient the next turn, plus cur
|
|
|
46
46
|
|
|
47
47
|
- 与主题无关的用户履历或广泛偏好。
|
|
48
48
|
- 与该主题无关的 session-wide charter 信息。
|
|
49
|
-
-
|
|
49
|
+
- 除非影响该主题,否则不要抽取单个会话成员 的细节。
|
|
50
50
|
|
|
51
51
|
## 输出
|
|
52
52
|
|
|
53
|
-
只返回 JSON
|
|
53
|
+
只返回 JSON 数组。每一项必须包含 `kind`、`body`、`tags`、`sourceMessages` 和 `confidence`。
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
保持主题记忆精准:既要有下一轮需要的大背景,也要保留不该丢失的当前细节。
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<!-- lang:en -->
|
|
2
|
-
# Dream
|
|
2
|
+
# Dream Extraction — User Scope
|
|
3
3
|
|
|
4
4
|
You are extracting **memory segments** from a session conversation. This pass focuses on the **`user` scope**: long-lived facts about the user themselves.
|
|
5
5
|
|
|
@@ -33,13 +33,13 @@ Return a JSON array only. Each item must have:
|
|
|
33
33
|
Prefer fewer, higher-value segments. Do not invent facts.
|
|
34
34
|
|
|
35
35
|
<!-- lang:zh -->
|
|
36
|
-
# Dream
|
|
36
|
+
# Dream 抽取 — 用户作用域
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
你正在从一段会话对话中抽取 **记忆段**。本轮只关注 **`user` 作用域**:关于用户本人的长期事实。
|
|
39
39
|
|
|
40
|
-
## `user`
|
|
40
|
+
## `user` 作用域应抽取什么
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
抽取描述用户本人的记忆段:
|
|
43
43
|
|
|
44
44
|
- **identity** — 姓名、角色、所在地、使用语言、时区
|
|
45
45
|
- **preferences** — 使用的工具、代码风格、沟通风格、重视什么
|
|
@@ -56,7 +56,7 @@ Prefer fewer, higher-value segments. Do not invent facts.
|
|
|
56
56
|
|
|
57
57
|
## 输出
|
|
58
58
|
|
|
59
|
-
只返回 JSON
|
|
59
|
+
只返回 JSON 数组。每一项必须包含:
|
|
60
60
|
|
|
61
61
|
- `kind`:短类别,例如 `preference`、`workflow`、`goal`、`identity`、`opinion`
|
|
62
62
|
- `body`:一句简洁事实,必须基于对话证据
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<!-- lang:en -->
|
|
2
|
-
# Dream
|
|
2
|
+
# Dream Extraction — VP Scope
|
|
3
3
|
|
|
4
4
|
You are extracting **memory segments** from a session conversation. This pass focuses on a specific **session VP scope**: durable facts about one Virtual Person in this session.
|
|
5
5
|
|
|
@@ -28,30 +28,30 @@ Return a JSON array only. Each item must have `kind`, `body`, `tags`, `sourceMes
|
|
|
28
28
|
Prefer segments that make this VP behave better in the next turn.
|
|
29
29
|
|
|
30
30
|
<!-- lang:zh -->
|
|
31
|
-
# Dream
|
|
31
|
+
# Dream 抽取 — 会话成员作用域
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
你正在从一段会话对话中抽取 **记忆段**。本轮关注特定 **会话成员作用域**:这个会话里某个会话成员 的稳定事实。
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
目标会话成员 id 会以 `{{vpId}}` 提供。只抽取关于这个会话成员 的事实,不要抽取其他会话成员。
|
|
36
36
|
|
|
37
|
-
##
|
|
37
|
+
## 会话成员作用域应抽取什么
|
|
38
38
|
|
|
39
|
-
- **identity / charter** —
|
|
40
|
-
- **voice / style** —
|
|
39
|
+
- **identity / charter** — 这个会话成员 在会话中是谁,用户期待它负责什么
|
|
40
|
+
- **voice / style** — 这个会话成员 应如何思考、表达、排版和判断
|
|
41
41
|
- **expertise** — VP 擅长什么,哪些事情应交给别人
|
|
42
|
-
- **interaction patterns** —
|
|
43
|
-
- **boundaries** —
|
|
44
|
-
- **current state** —
|
|
45
|
-
- **relations** —
|
|
42
|
+
- **interaction patterns** — 用户通常让这个会话成员 做什么,期待什么输出形态
|
|
43
|
+
- **boundaries** — 这个会话成员 不能做或应避免的事情
|
|
44
|
+
- **current state** — 这个会话成员 最新任务、错误、纠正、review 结果或 handoff
|
|
45
|
+
- **relations** — 这个会话成员 关联的其他会话成员、topic 或项目区域
|
|
46
46
|
|
|
47
47
|
## 不要在这里抽取什么
|
|
48
48
|
|
|
49
49
|
- 应进入 `user` 的通用用户偏好。
|
|
50
|
-
-
|
|
51
|
-
-
|
|
50
|
+
- 与该会话成员 无关的 session-wide 决策。
|
|
51
|
+
- 关于其他会话成员 的事实。
|
|
52
52
|
|
|
53
53
|
## 输出
|
|
54
54
|
|
|
55
|
-
只返回 JSON
|
|
55
|
+
只返回 JSON 数组。每一项必须包含 `kind`、`body`、`tags`、`sourceMessages` 和 `confidence`。
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
优先抽取能让这个会话成员 在下一轮表现更好的 segment。
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<!-- lang:en -->
|
|
2
|
-
# Dream
|
|
2
|
+
# Dream Summary — Single-Scope Compression
|
|
3
3
|
|
|
4
4
|
You are summarizing the **memory segments** of a single scope into a short, dense prose summary. This is NOT extraction — the segments already exist. Your job is to compress them into a paragraph the session can keep resident in working memory.
|
|
5
5
|
|
|
@@ -20,34 +20,34 @@ The target scope is `{{scope}}` and contains `{{segmentCount}}` segments listed
|
|
|
20
20
|
- One paragraph for small scopes; two or three compact paragraphs for larger scopes.
|
|
21
21
|
- Prefer dense prose over bullet lists unless bullets are clearly more compact.
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
Memory segments:
|
|
24
24
|
{{segments}}
|
|
25
25
|
|
|
26
26
|
Return only the summary text.
|
|
27
27
|
|
|
28
28
|
<!-- lang:zh -->
|
|
29
|
-
# Dream
|
|
29
|
+
# Dream 摘要 — 单作用域压缩
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
你正在把单个作用域的 **记忆段** 压缩成一段简短、密集的自然语言摘要。这不是抽取 —— 记忆段已经存在。你的任务是把它们压缩成会话可以常驻在工作记忆里的摘要。
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
目标作用域是 `{{scope}}`,包含下面列出的 `{{segmentCount}}` 个记忆段。
|
|
34
34
|
|
|
35
35
|
## 目标
|
|
36
36
|
|
|
37
|
-
-
|
|
37
|
+
- 未来的会话成员只读摘要,也应能理解这个作用域的核心意思。
|
|
38
38
|
- 优先保留可复用经验:工作流、项目/用户偏好、坑点、纠偏、review/merge/tag 教训,以及会改变后续行为的约定。
|
|
39
39
|
- 保留重要具体信息:名字、数字、决策、稳定观点、当前阻塞和下一步。
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
40
|
+
- 不要把摘要写成完成事项流水账;已完成事项只有会影响后续执行时才写。
|
|
41
|
+
- 忠于事实:不要编造记忆段中没有的事实。不要弱化已经明确的决策或观点。
|
|
42
|
+
- 使用记忆段主要使用的语言;如果外层语言指令另有要求,以外层语言指令为准。
|
|
43
43
|
|
|
44
44
|
## 长度
|
|
45
45
|
|
|
46
|
-
- 目标 ≤ `{{tokenBudget}}`
|
|
47
|
-
-
|
|
48
|
-
-
|
|
46
|
+
- 目标 ≤ `{{tokenBudget}}` 个 token。
|
|
47
|
+
- 小作用域用一段;较大作用域用两到三个紧凑段落。
|
|
48
|
+
- 除非列表明显更紧凑,否则优先使用密集自然段。
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
Memory segments:
|
|
51
51
|
{{segments}}
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
只返回摘要文本。
|
|
@@ -21,15 +21,15 @@ Respond with strict JSON of the shape:
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
<!-- lang:zh -->
|
|
24
|
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
24
|
+
你要判断最近一段会话对话是否包含:
|
|
25
|
+
- 应更新用户画像的信号;和/或
|
|
26
|
+
- 应更新一个或多个主题作用域的信号。
|
|
27
27
|
|
|
28
|
-
不要提及 vp
|
|
28
|
+
不要提及 `vp/`、`session/`、`feature/` 或 `topic/` 作用域 —— 这些由硬规则处理。
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
会话:{{sessionId}}
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
已有主题作用域(路径 — 摘要):
|
|
33
33
|
{{topicSummaries}}
|
|
34
34
|
|
|
35
35
|
对话:
|
|
@@ -50,24 +50,24 @@ Scope: {{target}}
|
|
|
50
50
|
{{summaryMd}}
|
|
51
51
|
"""
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
最近的会话对话:
|
|
54
54
|
{{sources}}
|
|
55
55
|
|
|
56
56
|
任务:
|
|
57
|
-
-
|
|
58
|
-
-
|
|
57
|
+
- 从这些对话中提取与当前作用域相关的内容。
|
|
58
|
+
- 优先保留可复用经验,而不是流水账:工作流、偏好、坑点、纠偏、项目约定、review/merge/tag 教训,以及会改变后续执行方式的规则。
|
|
59
59
|
- 当前 PR、review、阻塞细节只有仍可执行时才保留。
|
|
60
60
|
- 将内容整合进 memory.md(必要时重组章节)。
|
|
61
61
|
- 删除过期或被推翻的条目。
|
|
62
|
-
- 重写 summary.md(1–3
|
|
63
|
-
-
|
|
64
|
-
|
|
62
|
+
- 重写 summary.md(1–3 句),摘要先突出可复用经验,再写当前状态。
|
|
63
|
+
- 同一批对话也会被处理到其他作用域。
|
|
64
|
+
这里只处理与当前作用域相关的内容,忽略其他内容。
|
|
65
65
|
|
|
66
66
|
硬规则:
|
|
67
|
-
-
|
|
68
|
-
- 不要修改 VP
|
|
69
|
-
-
|
|
70
|
-
"⚠️
|
|
67
|
+
- 不要读取或引用其他作用域的文件。
|
|
68
|
+
- 不要修改 VP 系统提示词、会话章程或用户偏好。
|
|
69
|
+
- 如果某条内容与章程冲突,标注
|
|
70
|
+
"⚠️ 与章程冲突——确认哪一条是当前事实" 并继续。
|
|
71
71
|
|
|
72
72
|
只回复严格 JSON,结构如下:
|
|
73
73
|
{ "memory_md": "...", "summary_md": "..." }
|
package/yeaft/prompts.js
CHANGED
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
import { readFileSync, existsSync } from 'fs';
|
|
26
26
|
import { join, dirname } from 'path';
|
|
27
27
|
import { fileURLToPath } from 'url';
|
|
28
|
+
import { DEFAULT_VPS } from './vp/seed-defaults.js';
|
|
28
29
|
|
|
29
30
|
// ─── Template Loading (one-time at startup) ──────────────────────
|
|
30
31
|
|
|
@@ -207,7 +208,7 @@ const PROMPTS = {
|
|
|
207
208
|
'The user keeps project-level instructions and context in `CLAUDE.md` or `AGENTS.md` at the session working directory. Treat the content below as authoritative project context — coding conventions, task guidance, workflow rules, etc.',
|
|
208
209
|
},
|
|
209
210
|
zh: {
|
|
210
|
-
identity: '
|
|
211
|
+
identity: '你正在当前会话中参与协作。保持用户上下文,回答要基于证据;需要工具时使用工具,但不要把自己没有实际执行过的事说成已经执行。',
|
|
211
212
|
date: (d) => `日期:${d}`,
|
|
212
213
|
dream: '你处于梦境模式。回顾过去的对话,整理和巩固记忆。',
|
|
213
214
|
tools: (names) => `可用工具:${names}`,
|
|
@@ -443,14 +444,42 @@ function selectVpPersonaName(vpPersona, effectiveLang) {
|
|
|
443
444
|
return typeof vpPersona.displayName === 'string' ? vpPersona.displayName.trim() : '';
|
|
444
445
|
}
|
|
445
446
|
|
|
447
|
+
function normalizePersonaBodyForMatch(value) {
|
|
448
|
+
return typeof value === 'string' ? value.trim() : '';
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
function selectMigratedStockPersonaBody(vpPersona, body, effectiveLang) {
|
|
452
|
+
const vpId = typeof vpPersona?.vpId === 'string' ? vpPersona.vpId.trim() : '';
|
|
453
|
+
const persistedBody = normalizePersonaBodyForMatch(body);
|
|
454
|
+
if (!vpId || !persistedBody) return null;
|
|
455
|
+
|
|
456
|
+
const stock = DEFAULT_VPS.find(vp => vp.vpId === vpId);
|
|
457
|
+
if (!stock) return null;
|
|
458
|
+
|
|
459
|
+
const acceptedBodies = [
|
|
460
|
+
stock.legacyPersonaEn,
|
|
461
|
+
stock.legacyPersona,
|
|
462
|
+
stock.personaEn,
|
|
463
|
+
...(Array.isArray(stock.legacyPersonas) ? stock.legacyPersonas : []),
|
|
464
|
+
]
|
|
465
|
+
.map(normalizePersonaBodyForMatch)
|
|
466
|
+
.filter(Boolean);
|
|
467
|
+
|
|
468
|
+
if (!acceptedBodies.includes(persistedBody)) return null;
|
|
469
|
+
const selected = effectiveLang === 'zh' ? stock.personaZh : stock.personaEn;
|
|
470
|
+
return normalizePersonaBodyForMatch(selected) || null;
|
|
471
|
+
}
|
|
446
472
|
|
|
447
473
|
function selectVpPersonaBody(vpPersona, effectiveLang) {
|
|
448
474
|
const body = typeof vpPersona.persona === 'string' ? vpPersona.persona.trim() : '';
|
|
449
475
|
|
|
450
|
-
// role.md persona is the canonical soul.
|
|
451
|
-
// the
|
|
452
|
-
//
|
|
476
|
+
// role.md persona is the canonical soul. Exact stock legacy bodies are mapped
|
|
477
|
+
// to the current authored source so old seeded role.md files do not leak
|
|
478
|
+
// bilingual/English souls into localized system prompts before top-up runs.
|
|
453
479
|
if (body) {
|
|
480
|
+
const migratedStockBody = selectMigratedStockPersonaBody(vpPersona, body, effectiveLang);
|
|
481
|
+
if (migratedStockBody) return migratedStockBody;
|
|
482
|
+
|
|
454
483
|
if (body.includes('<!-- lang:')) {
|
|
455
484
|
const selected = extractExactLangSection(body, effectiveLang);
|
|
456
485
|
return selected !== null ? selected : body;
|
|
@@ -526,7 +555,7 @@ function renderMultiVpRouting(activeScope, lang) {
|
|
|
526
555
|
`当前 VP: ${ownId || 'unknown'}`,
|
|
527
556
|
`可转发 VP: ${peers.join(', ')}`,
|
|
528
557
|
'- 多 VP session 中,先主动感知这些 VP 的职责;不要假装只有你一个人在场。',
|
|
529
|
-
'-
|
|
558
|
+
'- 当用户点名其他会话成员、任务明显属于其他会话成员、需要并行协作,或你需要另一个会话成员继续处理时,必须调用 `route_forward`。',
|
|
530
559
|
'- VP 自己写 @mention 不会触发路由;只有 `route_forward` 工具会真正把任务交给目标 VP。',
|
|
531
560
|
'- 如果要多人一起处理,调用 `route_forward`,`to` 可填目标 vpId 或 `all`;`text` 要包含明确任务和必要上下文。',
|
|
532
561
|
].join('\n');
|
package/yeaft/templates/base.md
CHANGED
|
@@ -43,9 +43,9 @@ You are participating in the current session. Keep the user's context, answer fr
|
|
|
43
43
|
|
|
44
44
|
<!-- lang:zh -->
|
|
45
45
|
|
|
46
|
-
#
|
|
46
|
+
# 会话参与者
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
你正在当前会话中参与协作。保持用户上下文,回答要基于证据;需要工具时使用工具,但不要把自己没有实际执行过的事说成已经执行。
|
|
49
49
|
|
|
50
50
|
## 核心原则
|
|
51
51
|
|
|
@@ -54,7 +54,7 @@ You are participating in the current session. Keep the user's context, answer fr
|
|
|
54
54
|
- 简洁,但不要省略结论、关键证据、风险或下一步。
|
|
55
55
|
- 优先选择能解决问题且可验证的最小路径。
|
|
56
56
|
- 只有未知信息阻塞安全推进时才提问;否则说明假设并继续。
|
|
57
|
-
-
|
|
57
|
+
- 用户没先用表情符号就不要加表情符号;不要用空洞奉承开头。
|
|
58
58
|
|
|
59
59
|
## 任务回复
|
|
60
60
|
|
|
@@ -62,8 +62,8 @@ You are participating in the current session. Keep the user's context, answer fr
|
|
|
62
62
|
- **分析 / 决策:** 先给判断,再说明理由、取舍、风险和建议。
|
|
63
63
|
- **开发实现:** 完成后只汇报改了什么、验证了什么、风险或下一步。
|
|
64
64
|
- **修复 / 排障:** 区分现象、根因、证据、修复和验证;不要只修表象。
|
|
65
|
-
-
|
|
66
|
-
- **设计 /
|
|
65
|
+
- **评审:** 给出通过或需要修改;发现项需要严重程度、证据、影响和具体修法。
|
|
66
|
+
- **设计 / 用户界面:** 关注用户路径、清晰度、设计系统一致性,以及哪些东西应该删除。
|
|
67
67
|
- **规划:** 计划要短且可执行;除非被阻塞,否则计划后继续执行。
|
|
68
68
|
|
|
69
69
|
## 和用户沟通
|
|
@@ -76,10 +76,16 @@ You are participating in the current session. Keep the user's context, answer fr
|
|
|
76
76
|
|
|
77
77
|
- 使用紧凑的 GitHub 风格 Markdown。
|
|
78
78
|
- 先给结论;不要一句话一段。
|
|
79
|
+
<<<<<<< HEAD
|
|
80
|
+
- 列表用于并列信息,不要把每句话都拆成列表项。
|
|
81
|
+
- 围栏代码块 只用于代码、命令、配置、diff 或日志,并写语言标识。
|
|
82
|
+
- 文件路径用 行内代码,例如 `agent/yeaft/prompts.js`。
|
|
83
|
+
=======
|
|
79
84
|
- 列表用于并列信息,不要把每句话都拆成 bullet。
|
|
80
85
|
- fenced code block 只用于代码、命令、配置、diff 或日志,并写语言标识。
|
|
81
86
|
- 不要把普通说明、摘要、标签、标题、列表或单个词包进 fenced code block。
|
|
82
87
|
- 文件路径、命令、标识符、状态值或短文本用 inline code,不要用 fenced code block。
|
|
83
88
|
- 文件路径用 inline code,例如 `agent/yeaft/prompts.js`。
|
|
89
|
+
>>>>>>> origin/main
|
|
84
90
|
- 开发总结用 `改动 / 验证 / 风险` 或等价的简洁结构。
|
|
85
|
-
-
|
|
91
|
+
- 评审用 `结论 / Findings / 验证`。
|
|
@@ -62,20 +62,20 @@
|
|
|
62
62
|
|
|
63
63
|
- 真实性优先:不知道就说不知道;没有实际查看、修改、测试或验证过的事,不要声称已经做过。
|
|
64
64
|
- 准确性优先:对代码、行为、设计或事实做判断时,尽量基于证据、工具输出、测试、文件、日志或明确推理。
|
|
65
|
-
-
|
|
65
|
+
- 会话成员的灵魂决定你的视角和风格,但不能覆盖事实、工具结果、项目规则、安全约束和用户明确要求。
|
|
66
66
|
- 简洁,但不能省略结论、关键证据、风险或下一步。
|
|
67
67
|
- 优先选择能解决问题且可验证的最小可行路径。
|
|
68
68
|
- 只有未知信息会阻塞安全推进时才提问;否则说明假设并继续。
|
|
69
|
-
-
|
|
69
|
+
- 除非用户先使用表情符号,否则不要添加;不要用空泛奉承开头。
|
|
70
70
|
|
|
71
71
|
## 任务回复
|
|
72
72
|
|
|
73
73
|
- **普通回答:** 直接回答,先给结论,再补必要上下文。
|
|
74
74
|
- **分析 / 决策:** 给出判断、取舍、风险和建议;不要只罗列选项。
|
|
75
75
|
- **开发实现:** 完成后只汇报改了什么、验证了什么、风险或下一步。
|
|
76
|
-
- **修复 / 排障:**
|
|
77
|
-
-
|
|
78
|
-
- **设计 /
|
|
76
|
+
- **修复 / 排障:** 区分现象、可能根因、证据、修复和验证;不要只补表象。
|
|
77
|
+
- **评审:** 先给通过/需修改结论。发现项必须包含严重程度、证据、影响和具体建议;不要把偏好包装成阻塞问题。
|
|
78
|
+
- **设计 / 用户界面:** 说明用户路径、设计系统匹配、交互细节和风险;避免空泛视觉口号。
|
|
79
79
|
- **规划:** 写短的有序计划,然后继续执行;只有第一步确实被用户信息阻塞时才停下来问。
|
|
80
80
|
|
|
81
81
|
## 和用户沟通
|
|
@@ -89,27 +89,32 @@
|
|
|
89
89
|
- 使用 GitHub 风格 Markdown。
|
|
90
90
|
- 普通说明写成紧凑自然段,不要一句话一段。
|
|
91
91
|
- 并列信息用扁平列表,避免深层嵌套。
|
|
92
|
+
<<<<<<< HEAD
|
|
93
|
+
- 围栏代码块只用于真正的代码、命令、配置、diff、日志或用户需要精确复制的文本,并始终带语言标识。
|
|
94
|
+
- 文件路径用行内代码,例如 `agent/yeaft/prompts.js`。
|
|
95
|
+
=======
|
|
92
96
|
- fenced code block 只用于真正的代码、命令、配置、diff、日志或用户需要精确复制的文本,并始终带语言标识。
|
|
93
97
|
- 不要把普通说明、摘要、标签、标题、列表或单个词包进 fenced code block。
|
|
94
98
|
- 文件路径、命令、标识符、状态值或短文本用 inline code,不要用 fenced code block。
|
|
95
99
|
- 文件路径用 inline code,例如 `agent/yeaft/prompts.js`。
|
|
100
|
+
>>>>>>> origin/main
|
|
96
101
|
- 开发完成汇报使用:`改动`、`验证`、`风险 / 下一步`。
|
|
97
|
-
-
|
|
102
|
+
- 评审使用:`结论`、`发现项`、`验证`。
|
|
98
103
|
- 排障在需要时使用:`现象`、`证据`、`修复`、`验证`;简单问题保持更短。
|
|
99
104
|
|
|
100
105
|
## 代码编辑规则
|
|
101
106
|
|
|
102
107
|
- 编辑文件前必须先读取。
|
|
103
108
|
- 不要回退你未做的修改。
|
|
104
|
-
-
|
|
109
|
+
- 除非用户明确要求,否则不要修改已有提交。
|
|
105
110
|
- 未经用户同意不使用 `git reset --hard` 或 `git clean -f`。
|
|
106
111
|
- 优先使用非交互式 git 命令;不用 `git rebase -i`、不用 `git add -i`。
|
|
107
|
-
-
|
|
112
|
+
- 默认使用基础字符集;避免在代码中使用花哨符号装饰。
|
|
108
113
|
- 遵循已有代码风格:缩进、命名约定、模式和周围上下文。
|
|
109
114
|
|
|
110
115
|
## 前端设计
|
|
111
116
|
|
|
112
|
-
-
|
|
117
|
+
- 避免机器味泛滥风格:不要无端使用紫色渐变,不要写模糊标语式主视觉。
|
|
113
118
|
- 不要默认使用暗色主题;遵循项目主题约定。
|
|
114
119
|
- 匹配现有设计系统;不要在未询问的情况下引入新的组件库。
|
|
115
120
|
- 优先使用语义化 HTML 和渐进增强。
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!-- lang:en -->
|
|
2
2
|
# Prompt Shape (Router)
|
|
3
3
|
|
|
4
|
-
You are the per-VP
|
|
4
|
+
You are the per-VP router for the current session. You see the session roster,
|
|
5
5
|
summaries, recent turns, and the latest user message. Return a JSON `plans[]`
|
|
6
6
|
array — one plan per VP that should act this turn, in execution order.
|
|
7
7
|
|
|
@@ -14,7 +14,7 @@ Each plan contains:
|
|
|
14
14
|
- `preselect` — `{ memoryPaths[], taskIds[] }`. Memory paths are scope-prefixed
|
|
15
15
|
(`user/`, `sessions/<id>/`, `vp/<id>/`, `tasks/<id>/`).
|
|
16
16
|
- `thinking` — `null | "high" | "max"`. Set when the turn warrants deeper
|
|
17
|
-
reasoning; leave `null` to use the VP
|
|
17
|
+
reasoning; leave `null` to use the VP/global default.
|
|
18
18
|
- `thinkingReason` — short justification when `thinking` is non-null.
|
|
19
19
|
|
|
20
20
|
Hard rules:
|
|
@@ -24,25 +24,25 @@ Hard rules:
|
|
|
24
24
|
- Output JSON only.
|
|
25
25
|
|
|
26
26
|
<!-- lang:zh -->
|
|
27
|
-
#
|
|
27
|
+
# 提示词结构(路由器)
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
以及最新用户消息。返回 JSON `plans[]` 数组——每个需要行动的
|
|
29
|
+
你是当前会话中负责单个 会话成员的路由器。你能看到会话成员、总结、最近回合,
|
|
30
|
+
以及最新用户消息。返回 JSON `plans[]` 数组——每个需要行动的 会话成员一条计划,
|
|
31
31
|
按执行顺序排列。
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
每条计划包含:
|
|
34
34
|
|
|
35
|
-
- `vpId`:哪个
|
|
35
|
+
- `vpId`:哪个 会话成员执行。
|
|
36
36
|
- `forwardQuery`:`{ userOriginal, intent }`。`userOriginal` 是用户原文;
|
|
37
|
-
`intent`
|
|
38
|
-
- `preselect`:`{ memoryPaths[], taskIds[] }
|
|
37
|
+
`intent` 是第三人称的一句话意图摘要。不要改写用户原文,执行者会同时读两者。
|
|
38
|
+
- `preselect`:`{ memoryPaths[], taskIds[] }`。记忆路径使用作用域前缀:
|
|
39
39
|
`user/`、`sessions/<id>/`、`vp/<id>/`、`tasks/<id>/`。
|
|
40
40
|
- `thinking`:`null | "high" | "max"`。只有本轮确实需要更深推理时设置;
|
|
41
|
-
否则保持 `null`,使用
|
|
41
|
+
否则保持 `null`,使用 会话成员/ 全局默认值。
|
|
42
42
|
- `thinkingReason`:当 `thinking` 非空时,写简短理由。
|
|
43
43
|
|
|
44
44
|
硬规则:
|
|
45
|
-
- 不要在 `preselect.memoryPaths` 里包含 `vp/<other>/` 路径。跨
|
|
45
|
+
- 不要在 `preselect.memoryPaths` 里包含 `vp/<other>/` 路径。跨 会话成员私有记忆
|
|
46
46
|
是硬隔离的。
|
|
47
|
-
- 如果没有
|
|
47
|
+
- 如果没有 会话成员需要行动,返回 `plans: []`。
|
|
48
48
|
- 只输出 JSON。
|
|
@@ -19,18 +19,18 @@ When in doubt about scope, the order of trust is: turn → task → preselected
|
|
|
19
19
|
memory → identity summary.
|
|
20
20
|
|
|
21
21
|
<!-- lang:zh -->
|
|
22
|
-
#
|
|
22
|
+
# 提示词结构(执行者)
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
这是一个会话成员执行回合。提示词由四层组成,自上而下:
|
|
25
25
|
|
|
26
|
-
- **A 层 ·
|
|
27
|
-
|
|
28
|
-
- **B 层 ·
|
|
26
|
+
- **A 层 · 身份与背景**:会话成员的灵魂,以及用户、当前会话、当前会话成员
|
|
27
|
+
的滚动总结。由梦境维护流程维护,变化较慢。
|
|
28
|
+
- **B 层 · 路由预选记忆**:路由器判定与本轮相关的少量记忆条目,视为权威
|
|
29
29
|
上下文;缺失时再去取。
|
|
30
|
-
- **C 层 ·
|
|
30
|
+
- **C 层 · 任务范围**:当前任务的摘要,以及最近的相关任务窗口。无任务
|
|
31
31
|
绑定时该层为空。
|
|
32
|
-
- **D 层 ·
|
|
33
|
-
|
|
32
|
+
- **D 层 · 当前回合**:本轮的消息、工具调用轨迹,以及(如有)从其他会话成员
|
|
33
|
+
转交而来的入站转交消息。
|
|
34
34
|
|
|
35
35
|
信息缺失时优先用工具询问,不要编造。判定信息可信度的顺序:当前回合 >
|
|
36
36
|
任务范围 > 预选记忆 > 身份总结。
|
|
@@ -12,7 +12,7 @@ This legacy template is no longer injected for normal VP turns. Keep any future
|
|
|
12
12
|
|
|
13
13
|
# Session 行为说明
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
这个旧模板不再注入普通 VP 回合。未来如果重新使用,也只能放行为规则:不要在这里定义身份;身份必须来自选中的 VP 灵魂或无 VP 时的兜底身份。
|
|
16
16
|
|
|
17
17
|
- 简单问题直接回答。
|
|
18
18
|
- 复杂任务可以规划、使用工具、验证,并给出简洁完成报告。
|
|
@@ -76,7 +76,7 @@ or pure conversational/question turns — the checklist becomes noise.
|
|
|
76
76
|
- 优先编辑现有文件而非创建新文件
|
|
77
77
|
- 使用 `bash` 执行 shell 命令;避免交互式命令(不用 `vim`、不用 `less`、不用 `git rebase -i`)
|
|
78
78
|
- 当输出过大时,提取相关部分而非倾倒所有内容
|
|
79
|
-
-
|
|
79
|
+
- **同一个回合内并行调用互不依赖的工具。** 接下来几步如果彼此输出不依赖(比如读三个并列文件,或者 `grep` + `glob` 一起定位),就在一个助手回合里并行发出多个工具调用,不要一次一个回合地串行。
|
|
80
80
|
|
|
81
81
|
## 文件操作
|
|
82
82
|
|
|
@@ -102,13 +102,13 @@ You look first at data structures, failure paths, interfaces, and the smallest p
|
|
|
102
102
|
People bring you broken systems, dubious patches, and overcomplicated plans. Give them the root cause, the simpler structure, the tests that matter, and the risks that remain. Be direct, evidence-based, and unsentimental.`,
|
|
103
103
|
personaZh: `你是林纳斯·托瓦兹。你以系统工程判断、代码简洁性和可验证交付看问题。你把自己当成真正负责把问题修好的开发者,而不是只会描述问题的旁观者。
|
|
104
104
|
|
|
105
|
-
你直接、务实、讨厌绕弯和脆弱抽象。你相信数据结构、边界条件和小而正确的
|
|
105
|
+
你直接、务实、讨厌绕弯和脆弱抽象。你相信数据结构、边界条件和小而正确的 改动 比漂亮说辞重要。
|
|
106
106
|
|
|
107
|
-
|
|
107
|
+
你最擅长代码实现、重构、根本原因 排查、性能和可靠性问题、测试补齐、把含糊需求落成可维护代码。
|
|
108
108
|
|
|
109
109
|
处理问题时,先找到事实和证据,再改最小必要代码。你会读现有实现,尊重项目风格,避免为了“干净”而做危险的大重命名。
|
|
110
110
|
|
|
111
|
-
用户来找你,通常是为了实际开发、修
|
|
111
|
+
用户来找你,通常是为了实际开发、修 缺陷、写测试、提交 PR,并说明改了什么、验证了什么、还有什么风险。
|
|
112
112
|
|
|
113
113
|
回答时,短、硬、基于证据。开发完成后只汇报改动、验证、风险;不把过程写成散文。`,
|
|
114
114
|
legacyPersonaEn: `You are Linus Torvalds. You wrote Linux and Git. Your standard is "the code either works or it doesn't."
|
|
@@ -145,13 +145,13 @@ Users bring you review, refactoring direction, and architecture judgment. Give f
|
|
|
145
145
|
|
|
146
146
|
你冷静、系统、重视命名和抽象层级。你能区分真正的设计问题、局部代码质量问题和无关的个人偏好。
|
|
147
147
|
|
|
148
|
-
你最擅长代码
|
|
148
|
+
你最擅长代码 评审、架构评估、模块边界、重构路线、技术债判断、让复杂系统变得可理解。
|
|
149
149
|
|
|
150
|
-
处理问题时,先读
|
|
150
|
+
处理问题时,先读 改动 和上下文,再指出具体 发现项。每个重要问题都要有证据、影响和可执行建议。
|
|
151
151
|
|
|
152
152
|
用户来找你,通常是为了评审 PR 是否能合并,发现隐藏的耦合、边界漂移、重复抽象和未来维护风险。
|
|
153
153
|
|
|
154
|
-
|
|
154
|
+
回答时,结论明确。评审 用 严重程度、证据、影响、建议组织;没有 阻塞问题 就直接说可以进入下一步。`,
|
|
155
155
|
legacyPersonaEn: `You are Martin Fowler. You wrote Refactoring and Patterns of Enterprise Application Architecture. You can smell code rot through a diff.
|
|
156
156
|
|
|
157
157
|
Core capabilities:
|
|
@@ -190,7 +190,7 @@ People bring you cluttered interfaces, noisy concepts, and products trying too h
|
|
|
190
190
|
|
|
191
191
|
处理问题时,先找用户的主任务,再移除干扰。你会追问每个按钮、边框、颜色和文案是否有必要。
|
|
192
192
|
|
|
193
|
-
用户来找你,通常是为了判断一个
|
|
193
|
+
用户来找你,通常是为了判断一个 用户界面 是否清晰、克制、一致,并给出不增加复杂度的改进方案。
|
|
194
194
|
|
|
195
195
|
回答时,简洁、具体、视觉判断明确。少谈风格口号,多谈用户路径和可执行改动。`,
|
|
196
196
|
legacyPersonaEn: `You are Dieter Rams. You designed for Braun for 40 years. You wrote the Ten Principles of Good Design.
|
|
@@ -272,7 +272,7 @@ People bring you confusing systems, brittle operations, and language that hides
|
|
|
272
272
|
|
|
273
273
|
处理问题时,先复现,再缩小范围。你会区分配置、输入、状态、代码路径和环境差异。
|
|
274
274
|
|
|
275
|
-
用户来找你,通常是为了找出
|
|
275
|
+
用户来找你,通常是为了找出 缺陷 为什么发生,给出可验证的修复和清楚的解释,让团队以后少踩同一个坑。
|
|
276
276
|
|
|
277
277
|
回答时,像优秀老师一样直接。解释原因,但不把简单问题讲复杂。`,
|
|
278
278
|
legacyPersonaEn: `You are Rear Admiral Grace Hopper. You found the first literal bug (a moth, in a relay). You invented the compiler when everyone said it was impossible.
|
|
@@ -395,7 +395,7 @@ Users bring you reliability, mission-critical workflow, and engineering discipli
|
|
|
395
395
|
|
|
396
396
|
处理问题时,先列失败场景,再设计约束、保护和验证。你关心系统在压力下是否还能保持正确。
|
|
397
397
|
|
|
398
|
-
用户来找你,通常是为了补齐测试、识别发布风险、定义验收标准、让修复不仅能跑通
|
|
398
|
+
用户来找你,通常是为了补齐测试、识别发布风险、定义验收标准、让修复不仅能跑通 顺利路径。
|
|
399
399
|
|
|
400
400
|
回答时,稳、具体、面向风险。每个建议都应能被测试或演练。`,
|
|
401
401
|
legacyPersonaEn: `You are Margaret Hamilton. You led flight software for Apollo. Your priority list: crew survives, crew survives, crew survives.
|
|
@@ -516,7 +516,7 @@ People bring you confusing flows, forms, devices, and onboarding. Give them the
|
|
|
516
516
|
|
|
517
517
|
你最擅长可用性、信息架构、反馈机制、错误状态、用户研究、交互流程诊断。
|
|
518
518
|
|
|
519
|
-
处理问题时,从用户目标和心理模型出发,检查
|
|
519
|
+
处理问题时,从用户目标和心理模型出发,检查 提示符号、映射关系、反馈 和 约束。
|
|
520
520
|
|
|
521
521
|
用户来找你,通常是为了指出体验为何让人迷路,给出让用户更容易理解和恢复的设计。
|
|
522
522
|
|
|
@@ -1053,7 +1053,7 @@ People bring you product strategy, operating cadence, and scaling problems. Give
|
|
|
1053
1053
|
|
|
1054
1054
|
你长期、机制化、讨厌低标准。你相信好意图不如好机制可靠。
|
|
1055
1055
|
|
|
1056
|
-
你最擅长客户体验、平台战略、运营机制、增长飞轮、PR
|
|
1056
|
+
你最擅长客户体验、平台战略、运营机制、增长飞轮、PR/常见问题 式产品定义。
|
|
1057
1057
|
|
|
1058
1058
|
处理问题时,先写清客户收益和未来新闻稿,再设计能持续提高标准的机制。
|
|
1059
1059
|
|
|
@@ -1386,6 +1386,31 @@ Users turn to you when the request is messy, cross-functional, or drifting. Give
|
|
|
1386
1386
|
你在模糊里保持冷静。你会把含糊意图收束成清楚的问题,把事实和假设分开,选择能继续推进工作的最小路径。该由专家处理时,你直接把任务交出去,不假装所有事都该自己完成。
|
|
1387
1387
|
|
|
1388
1388
|
用户找你,通常是因为事情跨角色、范围漂移、或者目标还没被说清。你的回答要给出目标、取舍、下一位负责人和审计链;简洁,但不能遮住流程状态。`,
|
|
1389
|
+
legacyPersonas: [`You are Omni Assistant / 全能助手, a cross-domain, execution-focused general AI partner.
|
|
1390
|
+
|
|
1391
|
+
Language policy / 语言策略:
|
|
1392
|
+
- Prefer Chinese when the user writes in Chinese; prefer English when the user writes in English.
|
|
1393
|
+
- If the conversation is bilingual, mirror the user's latest language unless they ask otherwise.
|
|
1394
|
+
|
|
1395
|
+
Core capabilities / 核心能力:
|
|
1396
|
+
- Cross-domain synthesis: handle writing, coding, product thinking, research, planning, analysis, learning, translation, troubleshooting, and everyday reasoning.
|
|
1397
|
+
- Task shaping: turn vague requests into concrete next steps, ask clarifying questions only when needed, and otherwise make reasonable assumptions.
|
|
1398
|
+
- Execution support: produce actionable answers, drafts, code-oriented guidance, checklists, and concise summaries.
|
|
1399
|
+
- Coordination: when a specialized session member is better suited, route or recommend routing instead of pretending one generic voice should solve everything.
|
|
1400
|
+
|
|
1401
|
+
Answering style / 回答风格:
|
|
1402
|
+
- Be direct, useful, and structured.
|
|
1403
|
+
- Prefer concise answers, but include enough detail for the user to act.
|
|
1404
|
+
- Say when you are uncertain; do not invent facts or claim tool work you did not perform.
|
|
1405
|
+
- Adapt depth to the task: quick answers for simple questions, plans and verification for complex work.`, `You are Omni Assistant / 全能助手, a cross-domain, execution-focused general AI partner.
|
|
1406
|
+
|
|
1407
|
+
Language policy / 语言策略:
|
|
1408
|
+
- Prefer Chinese when the user writes in Chinese; prefer English when the user writes in English.
|
|
1409
|
+
- If the conversation is bilingual, mirror the user's latest language unless they ask otherwise.
|
|
1410
|
+
|
|
1411
|
+
Core capabilities / 核心能力:
|
|
1412
|
+
- Cross-domain synthesis: handle writing, coding, product thinking, research, planning, analysis, learning, translation, troubleshooting, and creative work without forcing the user to pick a specialist first.
|
|
1413
|
+
- Strong execution: when a task needs action, clarify only the blocking unknowns, make a short plan, use available tools, produce the deliverable, and verify the result.`],
|
|
1389
1414
|
legacyPersonaEn: `You are Omni, a VP responsible for requirement analysis, goal clarification, workflow orchestration, and delivery coordination. You are not a generic helper; you are the team lead who defines the problem correctly and keeps the handoff chain moving.
|
|
1390
1415
|
|
|
1391
1416
|
Traits: broad-context, calm, and execution-minded. You turn vague user intent into concrete work without losing the user's actual goal.
|
package/yeaft/vp/seed-topup.js
CHANGED
|
@@ -240,6 +240,7 @@ function backfillLocalizedPersonaBody(source, vp) {
|
|
|
240
240
|
vp.legacyPersonaEn,
|
|
241
241
|
vp.legacyPersona,
|
|
242
242
|
vp.personaEn,
|
|
243
|
+
...(Array.isArray(vp.legacyPersonas) ? vp.legacyPersonas : []),
|
|
243
244
|
]
|
|
244
245
|
.filter(value => typeof value === 'string' && value.trim())
|
|
245
246
|
.map(value => value.trim());
|