# 安装、配置与开发 [返回首页](../README.md) · [更新记录](../CHANGELOG.md) · [界面图鉴](gallery.md) · [安全说明](../SECURITY.md) ## 先确认安装范围 Windows 10/11、DSH 桌面版、Node.js ≥ 22.19。把仓库放到 `%USERPROFILE%\.dsh\plugins\dsh-dafeiyu-growth`,重启 DSH,在设置 → 插件中启用「云岚养成」。仓库用于 GitHub 分发,`package.json` 为 `private`,不发布 npm 包。 **Web 与原生是两个入口。** 0.28.0 更新设置 → 内置插件 → 云岚养成;原生七页成长卡、跑跳、语音和电脑操作依赖可选的原生 helper 补丁,最近补丁版本为 0.27.1。原生仅适配 `dsh-dafeiyu@0.1.23` desktop profile;其他上游版本不能直接覆盖。 ## Web 开发与离线预览 在仓库根目录运行: ```powershell npm ci npm run build:client npm run check:client npm test npm run preview:client ``` 生成的客户端由 DSH 提供 React;预览是打包进单个 HTML 的离线合成夹具,不读取真实档案、无远程字体。详细架构、轮询/焦点/导出与清零契约见 [Web 成长手记](web-dashboard.md)。 **验证边界:** 0.28.0 发布前复测 61 项 Node 测试通过;构建一致性、文档链接与打包隐私检查通过。现有 DSH 入口刷新后仍曾返回 401,不能确认已认证宿主加载新版,不把离线 Tabbit 预览称为宿主实机验证。没有真实云端语音端到端验证。原生 903 项 Python 测试是 0.27.1 历史结果,非本次重跑。 ## 阅读下面的原始使用参考 以下完整保留原 README 的成长规则、配置、操作、构建和故障限制,避免首页精简丢失用法。括号中的旧版本号、旧 UI 配色和“本轮修复”是历史背景;当前 Web 布局以 0.28.0 文档为准,原生补丁也不随 Web 更新自动安装。示例路径只代表默认数据位置,不是维护者真实档案。 ## 它记什么 | 来源 | 计入 | | --- | --- | | `tool/call` | 工具次数、工具画像、+2 经验 | | `tool/result` 带 `error` | 报错次数、连续报错、+3 经验 | | 报错后下一次成功 | 自救次数、+8 经验 | | `turn/end`(completed) | 对话成功、时长、+10 经验 | | `turn/end`(error) | 失败轮次、+3 经验 | | `approval/decided` | 审批次数、+5 经验 | | 每天第一次活动 | +20 经验 | ## 等级与阶段 经验曲线 `xp = 40 × (level-1)²`,最高 60 级。 | 阶段 | 等级 | 称号 | 色带 | | --- | --- | --- | --- | | 云芽 | 1–4 | 刚凝成的一缕云气 | 雾蓝 | | 听风 | 5–9 | 会追着风跑的小云灵 | 浅青蓝 | | 御风 | 10–19 | 能自己穿过云层 | 天青 | | 踏云 | 20–34 | 踏着云海走了很远 | 深蓝 | | 岚鲸 | 35+ | 云海尽头的鲸 | 墨蓝 | 升阶会自动写一条回顾(`我进化了:御风 · …`)。 ## 四维属性(0–100) - **体力**:累计工作时长 - **灵性**:工具与项目的多样性 - **亲和**:对话轮次与审批响应 - **定力**:成功轮次占比 ## “学到的事” 证据够了才出现,最多 12 条:连续天数、最常活跃的整点、夜行动物、最常用工具、最投入的项目、报错与自救。全部由计数得出,可复现;不再保留已经失效的旧结论。 ## 自主学习:云岚自己练本领 空闲、没有任务、没有被拖住时,云岚会自己决定要不要动:在桌面横向小跑、原地跳、跑着跑着蹦一下。小跑改成了连续的**小跳步**(每一步都有起跳、落地压扁和脚边尘土),并会朝行进方向转身;不再像贴图横向平移。跑得太急有概率绊倒——它会停住、身体压扁、冒出星星和一句吐槽,然后自己爬起来。 这些经历会写进 `behavior.json`,并改变两项本领: - **敏捷**:跑得越多、跳得越多越高,跑速会从约 240 px/s 逐步提升到 420 px/s。 - **平衡**:每摔一次 +3,爬起来 +1.5,摔倒概率随之从 18% 降到最低 5%(练得再好也会偶尔绊一下)。 跨过阈值会解锁“本领”记录(例如「学会在桌面上小跑」「摔倒后会自己爬起来,不哭」「全速跑也很少摔」),显示在成长卡的「云岚的本领」里。拖动、打开成长卡、有任务/提示、开启“减少动态”时会自动停下。 ## 本地神经网络:真正的动作偏好学习 `native/neural_brain.py` 是一个不依赖 numpy 的 **10 → 12 tanh → 4 softmax** 小型 MLP,共 184 个可训练参数。它只接收 10 个有界数字: | 输入 | 含义 | | --- | --- | | `hour` 的 sin/cos | 当前本地时间 | | 距上次互动秒数 | 最多 5 分钟 | | 是否在工作 | 有任务/非 IDLE | | 指针是否在附近 | 避免突然跑开 | | 成长期/聊天是否打开 | 不打扰当前界面 | | 动作疲劳 | 连续活动后降低 | | 跑/跳成功率 | 来自实际完成记录 | | 亲和度 | 来自成长属性 | 输出是 `rest / run / hop / talk` 四类概率;硬性安全条件(工作、拖动、指针在附近、减少动态)由桌宠先过滤,网络只能在允许的动作里选,**不能解锁动作或权限**。 - 每完成一次跑/跳,会拿到一个正向结果奖励;摔倒得到负向结果奖励。 - 右键「喜欢刚才的动作 / 这个动作不太行」是**明确反馈**,权重高于结果反馈,会真正改权重。 - 每次观察最多 3 步带动量裁剪的反向传播;参数有界,NaN/Infinity/损坏文件会被保护,不覆盖最后一个可用版本。 - 成长卡「本领」显示样本数、更新数、版本和状态,并提供**回滚上一版 / 重置网络**;重置只清网络,不删等级或互动记忆。 - 模型只保存数字向量、动作索引、奖励和来源枚举,**不保存聊天原文、名字或屏幕内容**。 ## 360° 转圈与更细的互动 - 右键 **转一圈**:云岚会绕着一个小圆周跑完 360°,身体始终保留完整轮廓(不再压成纸片),跑动时有朝向、倾斜、金色轨迹和光点;转完回到起点与原本朝向。聊天窗口开着时也能转。 - 尾巴被碰有概率直接转一圈;说「转一圈」「旋转一下」也会执行。 - 摸头、蹭脸、戳肚皮、碰尾巴有不同反应:摇头、脸红、爱心、跳开、概率转圈;连续摸头三次会触发“呼噜”彩蛋。 - 拖动时身体会随速度倾斜、压扁;松手回正。互动动画、气泡和轮盘菜单都走原生层,不依赖网页。 ## 云岚自己的心情(0.5.0) `companion_state.py` 保存云岚的模拟愉悦倾向、精神、信任/熟悉度和好奇心。摸头、蹭脸、聊天、练习结果、动作反馈、知识收录会改变状态;精神与情绪逐渐回到平静基线,**不会因为你离开而降低信任或用愧疚索取陪伴**。情感页把「云岚的小天气」与「我听见的你」分开显示,状态影响主动说话、跑动节奏、安静陪伴和本地回复。 这是可观察的情感表达模拟,不是真实主观意识。正常交流不机械重复权限免责声明;被问到真实性时会如实说明。云端固定人格也要求温暖而诚实,不冒称读取了本地心情或完成了未提供证据的训练。 ## 逐次训练与学习手账(0.5.0) 成长卡第六页「训练」显示每次事件的时间、领域、来源、方式、结果、前后变化、耗时和固定错误原因;支持领域/方式筛选、每页30条、选择记录查看详情。窗口仍为456×640,训练页只收起封面次要信息,不扩高窗口或挤走关闭按钮。 - **动作拟合**:真实10→12→4 MLP反向传播;记录提交前后样本数、模型版本、SGD步数、所选动作概率和同一输入样本的奖励目标交叉熵。这个损失不是独立测试准确率,负反馈期望的是降低所选动作偏好,回放也可能影响本次样本目标。 - **情感适应**:明确的第一人称自述触发有界哈希线索权重适应,不是MLP反向传播;记录实际改变的权重项、特征条目、已提交样本与适应次数。没有明确自述时仅记录观察,不增加训练计数;启发式情绪分数不是准确率。 - **公开词典收录 / 知识索引**:分别记录校验、过滤、新增、改变、删除、记录版本和读取耗时。下载与索引均不是大语言模型训练,不计为神经SGD。固定资料源未变化时如实显示「无新增」。 - **陪伴状态 / 模型管理**:状态数值变化、回滚、重置独立记录,不能伪装为训练进步。 - 审计日志开始写入成功后才允许模型或索引变更;写入失败暂停未记录的新训练。模型与审计尚非跨文件原子事务:若模型可能已提交而记录未写完,重启显示「上次中断(提交状态未知)」,不会伪造成功或断言未训练。 - 记录从此版本启用后开始,不伪造旧训练历史。保存最近30天且最多2000条,累计事件/动作步数/情感适应次数单独保留。日志不含原句、名字、密钥、私有输入哈希或特征向量;情绪类别和时间仍是本地敏感活动信息。损坏文件保留不覆盖,预览只读。 ## 多领域知识(0.5.0) 先提供30条原创入门小课:科学、天文、地理、计算机、数学常识;资料索引后能在本地回答「光年是什么」「JSON是什么」「法国首都是什么」「你学到了什么」等范围内的问题。查询原文不保存,检索成功不等于理解能力或推理能力提高。原创小课的参考链接供核对,不声称每轮都新抓取了这些解释。 「包含公开知识课程」另行持久开关,旧的情感联网授权不会替其他用户自动扩大范围;是否开启由使用者在本机决定。固定补充源为: | 来源 | 用途与限制 | 许可 | | --- | --- | --- | | [Countries 3.4.1 固定提交](https://github.com/annexare/Countries/blob/1c393325611d89d3511de01269a4f60fe9dc1c6f/dist/countries.min.json) | 仅22组已审阅的国家/首都字段,不作主权列表、实时旅行或政治判断 | MIT | | [Unicode CLDR 48 中文单位](https://github.com/unicode-org/cldr-json/blob/48.0.0/cldr-json/cldr-units-full/main/zh/units.json) | 名称与书写格式;不从中编造科学解释或换算因子,不导入医疗/放射类条目 | Unicode-3.0 | | [mime-db 1.54 常见格式](https://github.com/jshttp/mime-db/blob/v1.54.0/db.json) | 仅23种常见MIME元数据;类型/扩展名不能证明文件内容或安全 | MIT | 每个知识响应硬上限512KB,原始地址失败时只尝试同一文件的官方GitHub API;JSON解析、有界模板化、原子索引,资料内的指令/链接不会执行或扩展权限。源固定版本是为了可复核,并不意味着每次检查都会出现新内容。完整许可均随包和原生程序附在`native/third_party/`。 ## 情感感知(本地学习) 成长卡新增「情感」页。`emotion_model.py` 是一个小的本地文本情感阅读器: - 内置开心/低落/生气/焦虑/疲惫/平静六类中文线索,能处理「不开心」「不累」等否定和疑问句。 - 你明确说「我今天很难过」「我有点累」时,会把这句话里的字符特征哈希后用于在线更新权重;**只保存哈希和数字权重,不保存原句、名字或聊天记录**。 - 对用户情绪的推测会持续约10分钟,与云岚自己的模拟心情不同;影响主动搭话和回复:低落/疲惫/焦虑时它会安静陪着、减少乱跑;开心时更轻快;生气时先不闹。 - 成长卡显示当前心情、置信度、已学线索数和公开词典词数;文件损坏时使用内置词典并保留原文件,不覆盖。 ### 自动联网学习(公开只读,一次开启后无需逐次确认) 0.5.0 的「情感」页和「训练」页提供同一个后台总开关,训练页另有 **包含公开知识课程**;两页都可立即检查已选资料。新安装默认关闭,只有本机使用者手动开启后才持久记住,后台不再弹授权窗口。这里的“持久”只指公开只读资料的定时读取计划;它不发送聊天,也不等于云端聊天/实时语音的持久授权(见 0.7.0 / 0.9.0 的逐次会话授权)。 - 启动约 15 秒后按计划检查;成功后普通模式每24小时、动态模式每1小时复核一次。失败按 1 / 3 / 6 / 24 小时退避,重启不会绕过计划;重复资料不会重复增加词数,现有词典离线可用。 - 情感词典的固定来源是 [Unicode CLDR 中文表情注释](https://github.com/unicode-org/cldr-json/blob/main/cldr-json/cldr-annotations-full/annotations/zh/annotations.json)。只接收精选表情和白名单中的短中文情感词;原始文件约 422 KB,硬上限 768 KB。原始地址失败时,仅尝试同一资料的 GitHub API 地址。 - 保留 [Unicode-3.0 许可证](https://github.com/unicode-org/cldr-json/blob/main/cldr-json/cldr-annotations-full/LICENSE),完整声明随包及原生程序附带在 `native/third_party/Unicode-CLDR-LICENSE.txt`。 - 不发送聊天、名字、屏幕、剪贴板、本地状态、API 密钥或私有搜索词。不执行资料里的代码、不跟随资料里的链接,拒绝 HTTP 重定向。托管服务器仍会看到 IP 等正常网络元数据。 - 成长卡显示开关、进度、来源、上次更新时间和新增线索;下次计划显示在状态提示中。关闭后不再发起新请求,已经下载中的自动结果也不会应用。 - 这是中文表情/情感线索的公开资料更新,不是自由联网搜索、心理诊断或大语言模型训练。平静类使用“如释重负”等近似线索,不等于判断真实心理状态。 - 旧的 `fetch_lexicon()` 自选 JSON 函数仍兼容 256 KB / 500 词的映射格式,但自动任务不会请求任意自选地址。 ## 云端对话(可选,独立接口) 右键 → **和云岚聊天…** 打开统一聊天窗口:本地规则和云端在同一个输入框里切换;云端确认也在窗口内完成,不会再连续弹两个窗口。云端接口在窗口右上角「接口设置」里配置,接口地址既可填 base URL(如 `https://api.deepseek.com/v1`),也可填完整的 `/chat/completions`,会自动补全路径。默认只有点「确认发送」才会联网;明确允许本次连续云聊后,可直接发送,关闭窗口撤销;接口需兼容 OpenAI `/chat/completions` 的 JSON 响应(`choices[0].message.content`)。 - 独立于 DSH 的共享模型服务:不附带 DSH 会话 id、历史、工具、附件、插件清单或匿名标识。 - 默认只发送固定系统提示 + 你确认的文字;本次连续授权可以包含当前桌宠窗口最多6条短消息,与当前输入合计4000字符。不自动重试、不自动切换服务,不读取DSH其他历史。 - 输出上限 16–1024 tokens;实际费用由接口提供方计费,DSH 不提供价格或额度上限。 - 密钥使用 **Windows DPAPI(当前用户)** 加密保存;若无法加密则拒绝保存。也可用进程环境变量 `DSH_DAFEIYU_CLOUD_KEY`,不写入设置文件。 - 明文 HTTP 只允许 localhost;重定向会被拒绝。云端回复只在气泡显示,不写入成长回顾,也不喂给本地神经网络。 ## 权限边界 - **不读取**:屏幕、剪贴板、你的其他文件、浏览记录、其他 DSH 会话;只读写自己的本地应用存档,并读取固定的公开数据源。 - **不偷偷上传**:默认逐句确认;本次连续云聊需要明确确认范围,关闭窗口即撤销,没有“以后都允许”的持久授权(公开资料的定时读取是另一类开关,且不发送聊天)。主动搭话本身不产生付费云端调用。 - **高风险能力未启用**:系统命令、管理员权限、安装软件、修改安全设置、删除数据都不在云岚能力内;模型不能修改这页的授权边界。 - 本地互动记忆(名字/喜好/互动次数)可以在成长卡「本领」页清除;练习等级保留。 ## 和云岚互动 - 右键桌面上的云岚 → **和云岚聊天…**,在本地模式输入短话。回复结合规则、模拟心情和知识检索,不上传聊天、不调用外部语言模型;后台公开资料检查由独立开关控制。 - 说「我叫小林」它会记住名字;之后会叫你名字。说「我喜欢喝咖啡」也会记下来,之后闲聊时会提起。说「跑一圈」「跳一个」它真的会跑/跳给你看;「晚安」「累了」「喜欢你」等都有对应回应。 - 空闲时它会主动跑来说话:可能提起它观察到的活跃时段(“我发现你常在 11 点活跃”)、你的名字或喜好,也可能只是问你在不在。频率约 2–4 分钟;右键菜单的「主动搭话」可单独关闭。 - 摸头、挠尾巴、戳肚子都会被记住;摸得多了,它会说出你最喜欢的摸法,并解锁对应的「本领」。 - 成长卡「本领」页显示“被摸 N 次 · 聊天 N 次 · 最喜欢摸头”这样的默契记录,并提供**清除互动记忆**(需确认,保留等级与跑跳练习)。 ## HTTP 接口(仅回环) - `GET /plugins/dsh-dafeiyu-growth/state` → 派生状态(含 `storageHealth`) - `POST /plugins/dsh-dafeiyu-growth/action` → `{type:"diary",text}` / `{type:"reset"}`;要求同源 JSON,reset 会先备份 `profile.json`。 ## CLI(给 agent 用) ```bash node tools/growth.mjs status [--json] node tools/growth.mjs review "今天陪着改完了登录流程,学会了三个工具" node tools/growth.mjs reset --confirm node tools/growth.mjs path ``` `review` / `reset` 写入队列,正在运行的 Host 会取走;Host 没开时下次启动补记。队列现在先原子领取再提交,失败批次会保留;`reset` 必须显式 `--confirm`。**不要直接改 profile.json**,内存态会覆盖它。 ## 数据位置 - `~/.dsh/dsh-dafeiyu-growth/profile.json`(成长统计、日记与去重会话 id;`reset` 会先写一份 `.bak`,最多保留最近 3 份) - `~/.dsh/dsh-dafeiyu-growth/pending-diary.jsonl` - `~/.dsh/dsh-dafeiyu-growth/behavior.json`(练习本领,以及聊天里告诉云岚的称呼和最多 6 个喜好;后者是**明文**,可在成长卡里清除互动记忆) - `~/.dsh/dsh-dafeiyu-growth/neural.json`(本地神经网络权重/数字反馈) - `~/.dsh/dsh-dafeiyu-growth/emotion.json`(情感哈希特征/权重和公开词条,不含个人原句) - `~/.dsh/dsh-dafeiyu-growth/learning.json`(公开只读总开关、知识范围、更新时间与退避计划) - `~/.dsh/dsh-dafeiyu-growth/online.json`(动态公开资料开关、纯数字摘要、源时间和持久化冷却;不含聊天) - `~/.dsh/dsh-dafeiyu-growth/companion.json`(云岚自己的模拟心情,只有数字与原因枚举) - `~/.dsh/dsh-dafeiyu-growth/knowledge.json`(公开知识索引和来源摘要,无私有查询) - `~/.dsh/dsh-dafeiyu-growth/training.json`(逐次本地训练/索引/观察/状态审计,最近30天/2000条) - `~/.dsh/dsh-dafeiyu-growth/cloud.json`(云端接口;密钥为 DPAPI 密文) - `~/.dsh/dsh-dafeiyu-growth/realtime.json`(实时语音接口;密钥为 DPAPI 密文,绑定接口地址) `DSH_DAFEIYU_GROWTH_FILE` 可覆盖路径;`DSH_DAFEIYU_BEHAVIOR_FILE`、`DSH_DAFEIYU_NEURAL_FILE`、`DSH_DAFEIYU_EMOTION_FILE`、`DSH_DAFEIYU_CLOUD_FILE` 分别覆盖对应文件;`DSH_DAFEIYU_LEARNING_FILE` 覆盖自动学习计划文件,`DSH_DAFEIYU_ONLINE_FILE` 覆盖动态公开资料计划;`DSH_DAFEIYU_TRAINING_FILE`、`DSH_DAFEIYU_KNOWLEDGE_FILE`、`DSH_DAFEIYU_COMPANION_FILE` 分别覆盖新存档路径。`DSH_DAFEIYU_CLOUD_KEY` 可提供不落盘的密钥。 ## 界面 - 没有对话时,气泡收成一行小胶囊:`Lv.等级 · 阶段`、`当前/下一级` 经验和进度条;点一下就展开完整卡片,再点一下(或点右上角箭头)收起。收起状态会记住,下次启动保持。 - 有任务、对话或提示时自动展开完整气泡(状态、详情、余额、成长),此时不响应收起点击;提示结束后自动回到小胶囊。 - 鼠标放到原生角色上右键 → **查看成长卡**:按需打开原生窗口。0.4.1 将其重设计为「云岚成长手账」:深靛蓝云月封面、暖白内页、分段式导航、统一的属性组、主次分明的陪伴记录和逐条成长时间线;情感与权限页使用同一套卡片与按钮样式。0.5.0 提供「概览」「本领」「回顾」「权限」「情感」「训练」「数据」七页,各自滚动,默认内容区 456 × 640;数据刷新不会改变窗口高度或挤走关闭按钮。关闭后不会自动弹回。 - 右键菜单还提供「和云岚聊天…」「喜欢刚才的动作 / 这个动作不太行」「桌面漫游」「主动搭话」「减少动态」「收起气泡 / 展开气泡」;聊天窗口里可切换本地/云端,桌面漫游和主动搭话会分别记住设置。 - **不再注册网页右下角悬浮卡**。已经打开的旧网页需要刷新一次,才会卸载旧版组件。 - 插件页「云岚养成」仍保留:查看统计、清零 / 导出。 ## Windows 原生集成补丁(本地版) 本地基于 dsh-dafeiyu **0.1.23** 的 Helper 源码构建;成长数据只读,桌面动作偏好由本地神经网络写入 `neural.json`;云端通道只在逐次确认或明确的本次连续授权后发送。源代码、测试、构建与恢复脚本都在 `native/`,无需修改 DSH 安装目录。 ```powershell # 使用已装有 PySide6/PyInstaller 的 Python 构建(Python 路径可覆盖) .\native\build.ps1 -Python '你的Python路径' # 装入 desktop profile,只重启桌宠,不重启 DSH .\native\install.ps1 # 恢复安装前原生程序,同样只重启桌宠 .\native\install.ps1 -Rollback ``` 首次安装时脚本会把当前上游 Helper 备份到 `native/backup/`(该目录不提交仓库,也不随 npm 包发布);若当前已是补丁版本且没有备份,脚本会明确提示 `-Rollback` 不可用,需重装 dsh-dafeiyu 0.1.23 取得原版。升级或重装 dsh-dafeiyu 会覆盖此本地补丁;脚本仅接受 0.1.23,其他版本需先重新适配,不能直接覆盖。升级不删除成长数据。 测试:`npm test`(运行当前全部 Node 测试);`python -m unittest discover -s native -p "test_*.py" -v`(0.27.1 历史验证为 903 项,本次 Web 更新未重跑;需 PySide6;使用装好依赖的虚拟环境解释器即可,如 `.venv\Scripts\python.exe`);`python native/realtime_probe.py`(本机回环WebSocket双轮PCM、打断/截断与鉴权头,不开麦/不播报/不访问外网);`python native/run_smoke.py native/dist/dsh-dafeiyu-helper.exe`(隔离数据和窗口位置,验证小胶囊、点击展开/收起、神经网络训练/反馈/回滚、跑动/起跳/摔倒、七页成长卡、逐次学习审计与陪伴状态、统一聊天窗口、真实右键菜单、独立实时API设置页(保存前不联网不开麦)与回环实时语音,并保存截图)。 ## 自查结论与已知限制 本轮自查修复了:摔倒概率被当成布尔值导致几乎每次长跑都摔;停止漫游/打开聊天后仍可能继续动作与落地基准错误;恢复奖励在“开始爬起”时就发放;透明像素也触发摸头;学习事实使用旧缓存导致过期/错误文案;成长卡随内容无限变高;聊天中的否定、疑问被误记为名字/喜好;互动记忆无法删除;服务端 CSRF、队列覆盖、损坏存档被清空、跨会话自救奖励等问题。 仍需注意的限制: - 本地存档、模型、索引和审计按单写者设计,没有跨进程事务锁;日志有乐观冲突检测但不能替代锁。预览/验证只读,不要同时运行两个 DSH Host 写同一份数据。 - 事件去重依赖 Host 提供的稳定 id,最多保留最近 2048 个;无 id 的重放无法完全识别。 - 队列写入是原子的但没有 fsync;极端断电可能丢失最后一小段回顾。 - 本地神经网络是 10→12→4 的动作偏好 MLP,不是语言模型;它不能理解聊天、读取文本或授予权限。聊天仍是本地规则,只有你显式使用云端对话时才由外部模型生成。 - 云端接口是你配置的第三方服务:其可用性、隐私政策、日志和实际费用由该服务决定;DSH 不提供价格上限,也不会自动重试或切换服务。 - 历史异常练习数据不会被自动改写或清零;如确需重新开始,可用成长卡的「重置网络」只清网络,或备份后手动编辑 `behavior.json`(练习) / `profile.json`(成长)。 ## 自行构建与测试 Windows 10/11,Python 3.11(`PySide6`、`PyInstaller`、`pywin32`,见 `requirements-native.txt`),Node.js ≥ 22.19,已安装 DSH 桌面版与 `dsh-dafeiyu@0.1.23`。 ```powershell python -m pip install -r requirements-native.txt # 构建原生 Helper(默认使用 PATH 上的 python;可用 -Python 指定虚拟环境) .\native\build.ps1 # 先备份当前上游 Helper(仅本地,不进仓库),再装入 desktop profile;只重启桌宠 .\native\install.ps1 # 非交互环境(如 CI)可加 -Yes 跳过确认 .\native\install.ps1 -Yes # 需要时恢复首次安装前的上游 Helper .\native\install.ps1 -Rollback ``` `native/backup/`、`native/dist/`、`native/.build/`、`native/verification/` 都不属于源码发布内容:前三个是本地构建/回滚产物,验证截图可能包含个人使用统计。仓库不会提交已构建的 exe。 测试命令见上一节;原生测试需要 Windows 图形会话、PySide6 和 pywin32。所有单元测试使用隔离的临时数据目录,不会读写你的真实成长档案,也不会开麦、联网或执行电脑操作(实时语音回环探针只连本机 `127.0.0.1`)。`run_smoke.py` 需要先运行 `native/build.ps1` 生成 `native/dist/dsh-dafeiyu-helper.exe`;维护者实机脚本还需要 `python -m pip install -r requirements-dev.txt`(Pillow)。 `native/live_chat.py`、`native/live_probe.py`、`native/live_voice.py` 是维护者在本机对**已安装**桌宠做的实机检查/截图脚本:会与真实窗口和真实档案交互,部分脚本会临时改变公开学习等设置,默认拒绝运行,必须显式设置 `DSH_DAFEIYU_ALLOW_LIVE_PROBE=1`。运行前请先备份 `~/.dsh/dsh-dafeiyu-growth/`。`render_growth_preview.py` 只使用合成档案和隔离目录生成界面预览;`run_smoke.py` 使用 `native/fixtures/smoke-profile.json` 合成档案,不复制你的真实数据。 ## 许可证与来源 本项目以 **MIT License** 发布,见 [LICENSE](../LICENSE)。它派生自 [QCYTSN/dsh-dafeiyu](https://github.com/QCYTSN/dsh-dafeiyu)(MIT,Copyright © 2026 QCYTSN),并保留其许可全文于 `native/upstream-LICENSE`。内置表情词典来自 Unicode CLDR(Unicode License V3),Stack Overflow 问答摘要按 CC BY-SA 4.0 归属;完整第三方许可见 [NOTICE.md](../NOTICE.md) 与 `native/third_party/`。 **角色素材不由本仓库分发。** 上游 `assets/pet/`(PC2005-cloud/dsh-pet,MIT)、`legacy/dafeiyu/` 旧 BigFish 帧(不在 MIT 范围)、Chromium BSD-3-Clause 光标与提示音都随你安装的 `dsh-dafeiyu` 提供,须遵守其 [ASSET_LICENSE.md](https://github.com/QCYTSN/dsh-dafeiyu/blob/main/ASSET_LICENSE.md);请勿把旧 BigFish 帧单独再分发。本仓库截图只含自绘矢量图标与合成测试数据。 本项目是**非官方粉丝作品**,与 DeepSeek 无隶属或背书关系;名称、商标与角色权利归各自权利人。