@shgroup/dsh-serenity-hooks 1.74.0 → 1.76.0

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.
@@ -0,0 +1,82 @@
1
+ /**
2
+ * trajectory/user-carrier.ts — **造一条与"用户人工创建"基本一致的 dsh 会话载体**(判决 D171,owner 2026-10-20 裁 B)
3
+ *
4
+ * ## 这个文件解决什么(白话)
5
+ *
6
+ * `send-now` 在目标没有活跃会话时会**就地建一条**。它一直能建、也能挂工作区,
7
+ * 但建出来的东西与用户在 UI 里新建的那条**在宿主眼里不是同一种东西**:
8
+ *
9
+ * | 宿主投影 | 用户建 | 我们自建(修前实测) |
10
+ * |---|---|---|
11
+ * | `title` | 自动生成 | **永远 `null`** |
12
+ * | `titleInput.count` | ≥1 | **0** |
13
+ * | 假首轮(对齐声明 + EAP) | 注入 | **被自家递归守卫挡掉** |
14
+ *
15
+ * ## 🔴 根因(读宿主源码,不是推断)
16
+ *
17
+ * `dsh-session-title` 的 `sessionTitleUserMessageOf()` **第一行**就是:
18
+ *
19
+ * ```js
20
+ * if (event.type !== "user/message" || event.data.source.kind !== "user") return void 0
21
+ * ```
22
+ *
23
+ * 而 ACC 投递的消息一律是 `{ kind: 'plugin:dsh-serenity-hooks' }`(`kernel/message-source.ts`)
24
+ * ⇒ **宿主从头到尾不把它当"有真人说过话"的会话** ⇒ 自动命名不触发、`titleInput` 恒 0。
25
+ *
26
+ * ## owner 的裁决 = B:**模拟一个用户开场白**
27
+ *
28
+ * `MessageSourceMap` 里 `user: { kind: 'user' }`,而 `UserMessage.source` 是**任意**
29
+ * `MessageSource` ⇒ `createUserMessage({ content, source: { kind: 'user' } })` **类型合法、
30
+ * 零改 DSH**(D4 仍成立)。
31
+ *
32
+ * ## 🔴 这是一次**明知故犯的伪造**,代价写在这里,不许悄悄付
33
+ *
34
+ * 1. **伪造用户身份**:与 D160「不再造历史」方向相反。范围**仅限**"载体开场白"这一条消息,
35
+ * 且正文**逐字自证**是模拟的({@link CARRIER_OPENING_MARK})⇒ 将来翻日志的人一眼能看出。
36
+ * 2. **污染所有者语料**:`session-corpus` 的"所有者发言"判据**必须**排除这条
37
+ * (判据 = 正文含 {@link CARRIER_OPENING_MARK})⇒ 否则统计"owner 说过什么"会算进一句
38
+ * 机器写的开场白。**这一条是同批改动,不是待办。**
39
+ * 3. **与假首轮的先后**:开场白必须让假首轮先注入(同一次 `agent/inbox/inserted` 里
40
+ * prepend 天然排在真实消息之前),否则 `hasUserMessageHistory` 会把假首轮挡掉。
41
+ * ⇒ 单测钉死顺序,不靠"应该会"。
42
+ *
43
+ * ## 归属(D23)
44
+ * 机制在 ACC(怎么建、建什么形状);**内容归 CCC**(开场白正文由调用方给)。
45
+ *
46
+ * ## 与 `trajectory/carrier.ts` 的关系
47
+ * 🔴 **两个文件、两件事**,名字刻意区分:`carrier.ts` 回答"**这条载体跑完没有**"(等待空闲/销毁竞速);
48
+ * 本文件回答"**怎么造一条载体**"。合在一起会让两条互不相关的依赖链卷成一团。
49
+ */
50
+ /**
51
+ * 模拟开场白的**自证标记**(逐字)。
52
+ *
53
+ * 🔴 三个用途,缺一不可:
54
+ * ① 人类翻日志时能一眼看出"这不是真主说的";
55
+ * ② `session-corpus` 用它**排除**语料(不污染"所有者发言");
56
+ * ③ 单测反向钉住:真实用户发言里**不会**出现这串 ⇒ 断言"语料里 0 条含它"才有意义。
57
+ */
58
+ export declare const CARRIER_OPENING_MARK = "[ACC \u4EE3\u7528\u6237\u5F00\u573A]";
59
+ /**
60
+ * 构造模拟开场白的正文。
61
+ *
62
+ * ⚠️ **不含版本号/日期/模型名**(D159:任务书里不得写死版本号 ⇒ 写与版本无关的判据)。
63
+ * 正文只描述"这是谁、要接着做什么",不描述"哪一版干的"。
64
+ *
65
+ * @param code 轨迹编码(`S###` 或自定义)
66
+ * @param desc 轨迹目录名里那段可读描述(**人起的**,不另造第二真相源)
67
+ * @returns 一条自证是模拟的开场白正文
68
+ */
69
+ export declare function buildCarrierOpening(code: string, desc: string): string;
70
+ /**
71
+ * 投一条"用户形态"的消息进目标 agent(**B 的核心动作**)。
72
+ *
73
+ * 🔴 为什么单独成函数而不是就地写:这是**全仓唯一**允许 `kind:'user'` 的地方。
74
+ * 集中在一处,将来若要收紧(或 owner 改主意回 A),只有一个点要改。
75
+ *
76
+ * @param agent 目标 agent(须有 `followup`)
77
+ * @param text 开场白正文(**必须**由 {@link buildCarrierOpening} 产出,以带上自证标记)
78
+ * @returns 投递是否成功(失败返回 false,由调用方决定降级 —— 不抛)
79
+ */
80
+ export declare function deliverCarrierOpening(agent: {
81
+ followup?: (msg: unknown) => void;
82
+ }, text: string): boolean;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@shgroup/dsh-serenity-hooks",
3
- "version": "1.74.0",
4
- "description": "宁静号 ACC harness(Native Cordis 插件)——给 DeepSeek Harness 装一个「AI 工作区」:14 个工具(container_fs/cognitive_trajectory/dashboard/container_git/msm/praxis/ontology/serenity-skill-creator/cheap-worker/localstore/container_admin;另三个 im-bridge/acc-diag/diagram 按配置条件出现)+ 机械约束(安全模式/工作区围墙/密钥守卫/对外输出守卫)+ 认知轨迹日志与原地重建 + 网页登录入口/IM 桥/认知轨迹唤醒注册表。轨迹约束 = 目录下有 trajectory-constraint.json 的认知轨迹(约束面住在轨迹里);轨迹提示词 = 轨迹目录下的 PROMPT.md(一条轨迹「是谁、按什么章程工作」,所有轨迹通用,追加在容器层与质量层之后,不替换它们)。适配 DSH 0.1.7-rc.1 / 0.2.0-rc.1 / 0.2.1-rc.1(三档)。",
3
+ "version": "1.76.0",
4
+ "description": "宁静号 ACC harness(Native Cordis 插件)——给 DeepSeek Harness 装一个「AI 工作区」:14 个工具(container_fs/cognitive_trajectory/dashboard/container_git/msm/praxis/ontology/serenity-skill-creator/cheap-worker/localstore/container_admin;另三个 im-bridge/acc-diag/diagram 按配置条件出现)+ 机械约束(安全模式/工作区围墙/密钥守卫/对外输出守卫)+ 认知轨迹日志与原地重建 + 网页登录入口/IM 桥/认知轨迹唤醒注册表。轨迹声明 = 轨迹目录下的 trajectory.json(约束面 + 旧标识 uid + CRO 机器绑定 cro.host;旧名 trajectory-constraint.json / skiff.json 仍在读取族里);轨迹提示词 = 轨迹目录下的 PROMPT.md(一条轨迹「是谁、按什么章程工作」,所有轨迹通用,追加在容器层与质量层之后,不替换它们)。适配 DSH 0.1.7-rc.1 / 0.2.0-rc.1 / 0.2.1-rc.1(三档)。",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",