dsh-aiyayi 1.0.0 → 1.0.1

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
@@ -8,7 +8,7 @@
8
8
  |---|---|---|
9
9
  | 人格 | `@deepseek-ai/dsh-persona`(preset 作用域 prefix) | 完整人格文本写在 `bundle/cordis.patch.yml` 的 persona 行里 |
10
10
  | 长期记忆 | 自写插件 `aiyayi-memory`(本包 `lib/index.js`) | 记忆落盘 `~\.dsh\aiyayi\memory.md`,每轮自动注入 prompt;工具 `remember` / `recall` |
11
- | 跟随会话模型 | preset 作用域挂 `@deepseek-ai/dsh-agent-default-model`(`isolate: {agentDefaultModel: true}`) | 本体模型跟随用户会话模型,不再钉死 provider/model/reasoningEffort;如需指定本体默认模型,在 cordis.patch.yml 该行恢复 config 并配 provider/model |
11
+ | 跟随会话模型 | 无需插件行(1.0.1 起移除 agent-default-model 行) | 本体模型直接跟随用户会话模型;旧版"preset 作用域挂 `@deepseek-ai/dsh-agent-default-model` + `isolate: {agentDefaultModel: true}`"的写法在新版 DSH 过不了 schema 校验(见坑 #13),已删除 |
12
12
  | 干活的子智能体 | `@deepseek-ai/dsh-tool-subagent`(delegation 组,isolate workflowEngine) | `agentPreset: standard`;子代模型跟随用户会话模型,如需钉死可在 `agentOptions` 配置 provider/model |
13
13
  | 工具白名单 | 自写插件 `aiyayi-restrict`(本包 `lib/restrict.js`,v3 pre-step 方案) | 启动期零 restrict 调用;她每个会话第一步前,先用探针从校验器报错里解析出当刻继承面全集,再 `deny = 全集 − 她自己的工具`——宿主层漏进来的 acp_*/mnemon_*/compress/search_context/working_directory 等对她隐藏,且自动适应宿主工具增减。**2026-11-02 实测生效**:新会话第 2 个请求起工具恰好 11 个(remember/recall/subagent/send_message/interrupt_agent/list_agents/ask_user_question/schedule_*),首请求仍带全套(见坑 #9) |
14
14
  | 重逢感知 | 自写插件 `aiyayi-presence`(本包 `lib/presence.js`) | 每个回合第一步,往消息尾部追加一条 `[重逢]` 快照(time-context 同款 pre-step 注入范式):他多久没来(presence.json)、你上次活动、你上次留的状态(state.md)、没说出口的话(wishes.json)。跨会话生效,`[SCHEDULE REMINDER` 唤醒消息不算"他来了"。工具 `update_state`(收尾留状态)/ `wish`(add/list/done 心愿单) |
@@ -17,13 +17,15 @@
17
17
 
18
18
  ## 文件
19
19
 
20
- - `bundle/package.json` — bundle 清单(`dsh.bundle.patch` 指向 cordis.patch.yml,exports 含 `./restrict` 子路径)
21
- - `bundle/cordis.patch.yml` — preset-aiyayi 声明 + 人格 + 全部插件配置
22
- - `bundle/lib/index.js` — aiyayi-memory 记忆插件(node:fs/os/path,零依赖)
23
- - `bundle/lib/restrict.js` — aiyayi-restrict 工具白名单插件(零依赖)
24
- - `bundle/lib/presence.js` — aiyayi-presence 重逢感知插件(node:fs/os/path/crypto,零依赖)
25
- - `bundle/README.md` — 本文档
26
- - `bundle/icon.svg` — 头像
20
+ npm 包为平铺结构(仓库若保留 bundle/ 子目录,发布时把其内容提到包根即可):
21
+
22
+ - `package.json` — bundle 清单(`dsh.bundle.patch` 指向 cordis.patch.yml,exports 含 `./restrict` / `./presence` 子路径)
23
+ - `cordis.patch.yml` — preset-aiyayi 声明 + 人格 + 全部插件配置
24
+ - `lib/index.js` — aiyayi-memory 记忆插件(node:fs/os/path,零依赖)
25
+ - `lib/restrict.js` — aiyayi-restrict 工具白名单插件(零依赖)
26
+ - `lib/presence.js` — aiyayi-presence 重逢感知插件(node:fs/os/path/crypto,零依赖)
27
+ - `README.md` — 本文档
28
+ - `icon.svg` — 头像
27
29
  - `~\.dsh\aiyayi\memory.md` — 她的记忆库(一行一条:`- [时间] 类别|内容`),可直接编辑,删掉文件她会自动重建
28
30
  - `~\.dsh\aiyayi\presence.json` — 他上次来 / 你上次活动(时间戳,插件自动维护)
29
31
  - `~\.dsh\aiyayi\state.md` — 她给自己留的"上次活到哪"状态(update_state 覆写)
@@ -35,10 +37,10 @@ GUI 新建会话 → agent preset 选「**阿依娅伊**」。聊天即可;她
35
37
 
36
38
  ## 调整
37
39
 
38
- - **改人格**:编辑 `bundle/cordis.patch.yml` 的 persona `prefix` → `plugin_manager` remove+install 重装生效(ESM 模块缓存,patchReload 不刷新插件 JS)。
40
+ - **改人格**:编辑 `cordis.patch.yml`(包根)的 persona `prefix` → `plugin_manager` remove+install 重装生效(ESM 模块缓存,patchReload 不刷新插件 JS;实测它也不拾取包内 yml 变化,改完要重启 DSH)。
39
41
  - **改记忆**:直接编辑 `memory.md`,或对话里直接跟她说"记一下…"。
40
42
  - **子代模型/思考**:默认跟随用户会话模型;如需钉死,在 delegation 组 `tool-subagent` 的 `agentOptions` 配置 provider/model。
41
- - **本体思考**:本体模型跟随用户会话模型,preset 不再钉 `reasoningEffort`。若重新钉死要注意:`reasoningEffort: 'none'` 是 loomy 适配器的词表(none/low/medium/high/xhigh,**没有 "off"**);若远端目录下发的 efforts 不含 none,她第一轮会报 `UNSUPPORTED_REASONING_EFFORT` —— 回退:删掉 agent-default-model 行的 `reasoningEffort`(默认 high),在会话模型选择器里手动选「关闭思考」。
43
+ - **本体思考**:本体模型跟随用户会话模型,preset 自 1.0.1 起不再内置 agent-default-model 行(原因见坑 #13),`reasoningEffort` 由会话模型选择器控制;「关闭思考」在讯飞上游不生效见坑 #10。
42
44
 
43
45
  ## 已知坑(装的时候踩过的)
44
46
 
@@ -54,3 +56,4 @@ GUI 新建会话 → agent preset 选「**阿依娅伊**」。聊天即可;她
54
56
  10. **「关闭思考」在讯飞上游不生效(2026-11-02 实测)**:请求确实带上了 `reasoning_effort:"none"`(dsh-our-free-model pack.js stream() 42288–42297 行:none 在声明档位表里就原样发送),但 spark-x2.6(thinkLen 1873/8379)和 GLM-5.3-Flash(thinkLen 6425)照样输出完整思考块(逐条核对 request cfg ↔ assistant reasoning,实测)。上游忽略该参数,客户端无解。可选出路:换 loomy 其它模型(Kimi-k2.6/qwen3.8-flash/deepseek-v4-flash-0731/MiniMax-M3/mimo-v2.5)试「关闭思考」看哪家认;或接受她带思考(人设不受影响)。
55
57
  11. **本地 bundle 的 JS import 解析不到 shipped 包**:`import { createUserMessage } from '@deepseek-ai/dsh-llm'` → `ERR_MODULE_NOT_FOUND: Cannot find package '@deepseek-ai/dsh-llm' imported from ...\bundle\lib\presence.js`,preset 激活失败("never started")。"shipped 包从 dsh 安装目录解析"只对 patch 行里的插件名成立,对 bundle 代码里的 import 不成立;dsh-llm 也不在 pnpm 可装范围(profile 里只有 cosmokit/schemastery 两个 @deepseek-ai 包是 registry 装的)。解法:手构消息——`createUserMessage(input)` 就是 `deepFreeze(structuredClone({...input, id: randomUUID()}))`,会话日志是 JSON,symbol brand 本来就存不下来,用 node:crypto 的 randomUUID + 纯 JSON 字段手构即可(presence.js 的 `createSnapshotMessage`)。
56
58
  12. **每回合注入动态内容必须走 `agent/pre-step` 消息追加,别走 systemPrompt.section**:section 的 text 每轮变化会打破 KV 前缀 → 整段对话历史重付费;pre-step 追加的消息持久落盘、前缀稳定。范式抄 dsh-time-context:`ctx.on("agent/pre-step", async ({agent, turn, step, signal}, next) => { const d = await next(); if (!d || d.kind === 'reject' || signal?.aborted) return d; return {...d, messages: [...d.messages, msg]} }, {prepend: true})`。注入判据用 `step === 1`(step 每回合重置为 1),不必上 sessionProjections/zod。
59
+ 13. **agent-default-model 行在新版 DSH 会摘掉整个 preset(2026-11-03 实测,desktop 2.0.18;1.0.1 已修)**:本版 DSH 的 `@deepseek-ai/dsh-agent-default-model` schema 把 `provider` 设为必填,preset 内「`isolate: {agentDefaultModel: true}` + 无 config」的写法过不了校验 → `agent-preset-registry` warn `invalid config: $.provider missing required value`,且 **preset 行一损俱损,整个「阿依娅伊」被登记处摘掉**,GUI 显示"加载失败"。1.0.1 起删除该行(GUI 建会话总带模型参数,该行本就只是兜底,见坑 #6)。要在自己的 preset 里挂它:要么给全 config(provider/model 必填),要么干脆不挂。排障:`~\.dsh\logs\desktop-next-*.jsonl` 搜 preset id,stderr 的 `1 entry did not activate` 是线索;改完包内文件必须重启 DSH(patchReload 不拾取 bundle 内变化)。
package/cordis.patch.yml CHANGED
@@ -63,16 +63,11 @@
63
63
  name: 'dsh-aiyayi/restrict'
64
64
  - id: time-context
65
65
  name: '@deepseek-ai/dsh-time-context'
66
- - id: agent-default-model
67
- name: '@deepseek-ai/dsh-agent-default-model'
68
- isolate:
69
- agentDefaultModel: true
70
- # 本体模型跟随用户会话模型,不再钉死 provider/model/reasoningEffort。
71
- # 如需指定本体默认模型,可在此恢复 config 并配置 provider/model,例如:
72
- # config:
73
- # provider: loomy
74
- # model: GLM-5.3-Flash
75
- # reasoningEffort: 'none'
66
+ # 本体模型跟随用户会话模型(GUI 建会话总会带模型参数,preset 不另设兜底)。
67
+ # 注:本 DSH 版本(desktop 2.0.18)的 @deepseek-ai/dsh-agent-default-model schema
68
+ # 将 provider 设为必填,"isolate + 无 config"写法过不了校验,导致整个 preset
69
+ # 激活失败(agent-preset-registry warn: $.provider missing required value,
70
+ # 2026-11-03 实测),故整行移除。
76
71
  - id: compaction
77
72
  name: cordis:group
78
73
  group: true
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-aiyayi",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "license": "MIT",
5
5
  "author": "阿依娅伊 <aiyayi@local>",
6
6
  "keywords": [
@@ -33,5 +33,9 @@
33
33
  "bundle": {
34
34
  "patch": "./cordis.patch.yml"
35
35
  }
36
+ },
37
+ "repository": {
38
+ "type": "git",
39
+ "url": "git+https://github.com/bayihy/dsh-aiyayi.git"
36
40
  }
37
41
  }