# pasm-qclaw **Repository Path**: arronzheng/pasm-qclaw ## Basic Information - **Project Name**: pasm-qclaw - **Description**: PASM Studio:养一只会成长的 AI(Windows 桌面版)——双击打开→选性格→领养→看它探索→陪它长大→和它聊天。开源引擎教学版见 PASM-Lite - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-09-02 - **Last Updated**: 2026-10-14 ## Categories & Tags **Categories**: ai **Tags**: None ## README # PASM Studio · 会思考、会干活、会记住你的 AI 伙伴(Windows 桌面版) **简体中文**(正文) · [🇬🇧 English(完整英文版见下方)](#english--英文完整版) 📚 **文档导航**:[**全部功能总览**](docs/FEATURES.md) · [**PASM 核心知识总览**](docs/CORE.md) · [更新日志](CHANGELOG.md) --- ## 〇、PASM 生态索引(十一仓同频,2026-09-30 校准) | 仓 | 角色 | 可见性 | 版本 | |---|---|---|---| | `pasm2` | V2.0 独立认知底座(阶段 0-11:预测/记忆图/符号/双系统/量子/小脑/DMN/性格/LLM 桥,Alpha) | 公开 | 2.0.0a11 | | `pasm-skills` | 基座:`BaseAgent` + 认知能力层 + `create_backend()` 探测工厂 | 公开 | 0.6.3 | | `pasm-framework` | 应用框架:HTTP 服务 / 路由 / 插件 + `CognitiveAssembler.v1()/v2()` | 公开 | 0.5.4 | | `pasm-agents` | 成品智能体集(NPC / 陪伴 / 教学 / 客服 / 验证) | 公开 | 0.5.0 | | `pasm-mcp-server` | MCP 接入层:给任意 AI 客户端装长期记忆(`PASM2=1` 切 V2) | 公开 | 0.2.1 | | `pasm-domain-advisor` · `pasm-medical` · `pasm-customer-service` | 领域智能体:领域顾问引擎 / 医疗辅助 / 专业客服 | 公开 | 0.1.1 · 0.1.0 · 0.2.0 | | `PASM-Lite` | 教学版 + 认知引擎接口(不接 V2,保持纯净) | 公开 | — | | `PASM` | 核心引擎(七层仿生 / 世界模型,含 `pasm2/`;桌面源码 0.31.28) | 私有 | 0.7.2 | | **`pasm-qclaw`(本仓)** | **桌面应用发行通道(安装包 + `latest.json` 升级源)** | **公开** | **0.31.28(已发行)** | 本仓**现在包含 PASM Studio 桌面端的开源源码**([`desktop/`](desktop/README.md) 目录,基于 PySide6 的 Windows 桌面应用 UI/外壳层), 同时仍是安装包与更新清单 `latest.json` 的**发行通道**。 > **开源边界(务必先读)**:`desktop/` 是**应用外壳 / UI 层**,它依赖私有的 **PASM 认知核心引擎** > (`pasm.cognitive`、`pasm.agent`、`pasm.engine_api` 等,位于私有仓 `PASM/`,不开源)。 > 因此本仓可独立阅读与学习桌面端结构,但**单独无法编译运行**—— > 编译需要把私有核心引擎以依赖形式接入(见 [`desktop/README.md`](desktop/README.md) 的「依赖与构建」)。 > 核心引擎的算法、记忆/世界模型/规划器等仍在闭源仓迭代; > **PASM V2.0 认知底座已落地为独立包 `pasm2`(Alpha,已上 PyPI)**, > 经基座/框架的探测式工厂(`PASM_BACKEND=v2`)可选切换,默认仍走 V1、零侵入。 > > **许可证范围**:本仓开源代码(含 `desktop/` 外壳与文档)以根目录 [`LICENSE`](LICENSE)(MIT)授权; > 私有核心引擎 `PASM/` 与已发行的安装包二进制**不在此 MIT 覆盖范围内**。 地址:[Gitee](https://gitee.com/arronzheng/pasm-qclaw) · [GitHub](https://github.com/arronJack/pasm-qclaw) · [GitCode](https://gitcode.com/arronzheng/pasm-qclaw) --- > **记忆与预演**:关键事实记得住、改口会留痕,聊天也不再莫名变慢 —— 打开就能聊:它能思考、 > 学过的本事(笑话/知识/技能)被点名时能真用出来;回复像 DeepSeek 一样思考灰度实时显示、随后正文流出; > 桌面小人的动作由性格自我设计、随你的反馈自我优化,工作提示变成头顶冒泡气泡, > 四川/河南/东北/山东/北京方言与粤语、台湾腔一样能听会说。每一次相处都会沉淀成它的记忆与性格—— > 你聊得越多,它越"懂你",越像"只属于你的那个 AI"。 **无需任何 API Key 也能用**:自动接入你本机已装的 Ollama(qwen/llama 等模型), 本机就是你的服务器;填一个 DeepSeek Key 则更强(见下文「设置语言脑」)。 ## 最新:v0.31.28(2026-10-13)· 修「明明给过图却说没有图」+ 详情图可按屏切成 N 张 - **① 说「上述的图」,现在认得(重点)**:以前你喂过产品图,过一会儿(或**重启软件**后)说 「**上述的图中**项链,帮我出五张主图」→ 它回你「没有可用的产品实拍图」,可图明明给过。 根因是「刚喂过的图」只存在**内存**里,关掉/重启就没了,而且程序不会去理解"上述的图"这种说法。 现在:喂过的图会**留存**(关掉软件再开还在),说「上述的图 / 刚才那张图 / 这个图」会自动**找回**, 并**明确告诉你用了哪一张**。真找不到时也不只说"没有图"——会把图片目录里现成的图**列出来**, 你说一句「就用 XX」即可。 - **② 产品名与关键词不再抽错**:以前说「上述的图中项链…还有帮我出10张详情图」, 产品名被抽成「**还有帮我出10张详情图**」(目录名/标题/参数表全跟着错),关键词抽成 「上述的图中项 / 我需要你帮我」这类**半句话碎片**。现在产品名从**品类词**认 (认得出「项链」就用「项链」);关键词**交给模型写**(买家真会打的搜索词), 拿不到模型才用类目词表兜底 —— **绝不会再拿你的句子当关键词**。 - **③ 新增「饰品」类目**:以前项链落「通用」,参数表给的是"型号/产地"、资质也是通用模板。 现在有饰品专表(材质 / 链长 / 吊坠尺寸 / 重量 / 是否含证书 / 包装方式), 资质给的是「S925 标注 / 检测证书 / 过敏与佩戴注意 / 保养清洗」。 - **④ 详情图可按屏切成 N 张**:详情区可以多图上传,现在**两种都给** —— 整张 750 宽的 **详情长图**,外加一套**按屏切好的独立详情图**(一屏一张)。你说「要 10 张详情图」 就给你**正好 10 张**。 > **验收**:`ecom` 自检 83/83 · 渲染层自检 43/43 · 新增端到端 `verify_v0328_ecom_fix` **31/0** · > 真实项链实拍图重跑:12 件产物 4.70MB(含 13.3s 主图视频)· 桌面自检全套详见下方。 ### v0.31.27(2026-10-13)· 新增「🛒 电商」—— 喂图即出整套淘宝/京东物料 - **① 新工种「🛒 电商」**:把产品实拍图拖进对话框(或点「+」选图片),再补一句产品信息 (例:`加厚保暖外套,防水面料,品牌:XX,价格:199;要京东的`),一整套上架物料直接落盘。 - **② 一套出 12 件**:主图 **5 张**(白底 / 场景 / 卖点 / 细节 / 参数,800×800)· 局部图与细节图 **3 张**(800×800)· **750 宽详情长图** · **主图视频**(1:1,带字幕与配音)· 详情文案(标题 / 关键词 / 5 条卖点 / 短·长文案 / 直播话术)· 方案文档。 - **③ 主图去底做到专业级**:渐变底也能抠干净,边缘**不残留白边**,还会**保留产品的落地投影**; 浅色产品自动加极细描边,不会在白底上"消失"。 - **④ 主图视频**:白底推近 → 场景横移 → 卖点 → 细节快切 → 参数收尾,带转场与字幕 + 讲解配音。电脑上没装视频工具的会先给**零依赖预览播放器**(运镜与字幕与成片一致), 不会"说做了视频却什么都没有"。 - **⑤ 详情页从 7 屏扩到 12 屏**:补上专业详情页真正有的结构(利益点 / 使用步骤 / 常见问题 / 物流 / 资质),另给 **SEO 三层关键词**、**3 版标题可 A/B**、**直播话术四段**; 标题会**自动做进平台字数控**(1 汉字 = 2 字符)。 - **⑥ 违禁词体检**:极限词 / 虚假承诺 / 医疗功效 / 金融收益四类,命中逐条给改稿建议。 > **一条纪律**:产品画面**绝不用 AI 重画**(会被平台判「图文不符」)—— > 主图 / 局部图 / 细节图一律用你的实拍图**真实合成**,AI 只用于可选的场景底图; > **没有实拍图就只交方案与文案,不凭空造图**。 ### v0.31.26(2026-10-10)· 修「问天气查错城市」 - **① 说「广东省佛山市」不再报北京**:以前城市名解析失败就**默默兜底成北京**, 看起来像在瞎报。现在提了地名却查不到会如实说「没找到城市」,只有**完全没提地名** 才用默认城市。 - **② 各种写法都认得**:逗号分隔(广东,佛山)、省市后缀(广东省,佛山市)、 「哦对,我这是…」这类补充说法,都能正确解析。 - **③ 不再抓到同名小地方**:实测地图库里「佛山」会命中**云南**的同名小镇、 「上海市」首位是**美国**同名小镇 —— 现在按「省份 + 行政级别 + 名称」综合挑对。 - **④ 网络抖动自动重试**:天气接口偶发 SSL 抖动,以前一抖就报「查天气失败」。 > **验收**:新增天气专项自检(候选生成 11 项离线断言 + 2 项真查询)· > 8 条真机说法全部正确 · 桌面自检全套 1514+ 项 · 镜像守卫 20/0 · 静态守门 0 未定义名。 ### v0.31.25(2026-10-10)· 修「说打开网易云音乐,结果播放了一个 mp3」 - **① 打开应用不再被误判(重点)**:以前说「帮我打开网易云音乐,我想听歌了」, 会因为句子里有「音乐」二字被当成「找个音乐文件」—— 结果打开了一个 mp3 (`E:\AI\...\music\HedwigsTheme.mp3`,某个源码仓库里的示例音频)。 现在**应用名优先识别**,说打开什么应用就打开什么应用; 「腾讯视频 / 图片浏览器」这类**类型词撞应用名**的情况一并修好。 (这是 v0.31.4 引入的退化 —— 旧版没有"含糊文件"那条分支,所以你会觉得"以前是对的"。) - **② 找文件更靠谱**:说「打开E盘的音乐」不会再翻出代码仓库里的示例音频; 说「打开D盘那个word」也不会再打开**程序自己的**模板文件。 - **③ 小人的动画更稳**:上一版引入的「按需帧率」在个别情况下会让动画停住,本版已修正, **观感速度保持不变**。 - **④ 顺手修了一个只在真跑时才炸的 bug**(`agent_tools` 里一个从未被 import 的 `sys`)。 > **验收**:桌面自检全套 **1514 项通过**(本轮修复的 3 个动画专项 94/0 全绿)· > 意图回归 26 条指令全部合理 · 权限自检 19/19 · 镜像守卫 20/0 · 静态守门 0 未定义名 · > 冻结版真启动冒烟 PASS。 ### v0.31.24(2026-10-10)· 打开软件不再被拦 + 界面更轻快 - **① 打开软件不再需要确认(重点)**:以前说一句「打开网易云音乐 / 打开浏览器」, 会被当成「高风险操作」拦下,有时还回你一句「没有可用的确认通道」。 现在**打开应用 / 文件 / 文件夹 / 浏览器都是直接执行** —— 只有删除这类不可逆操作才会问你。 (风险定级判据统一为「能不能造成不可逆后果」:打开程序随手可关、零副作用。) - **② 确认弹窗更靠谱**:以前小U 被压在别的窗口后面时,确认框你看不见、等到超时 就自动按"拒绝"处理。现在弹窗会主动**跳到最前面**,等待时间 60 → 90 秒; 超时与"你点了否"也分开记录,不再混为一谈。 - **③ 界面更省资源**:桌面小人的动画原来固定每秒重绘 20 次,**每帧都要做一次 3D 渲染**, 空闲时就占掉约一个 CPU 核心的一成(聊天页 + 桌面浮窗两个小人同时显示时翻倍)。 现在改为**按需帧率**:说话 / 走路 / 飞行 / 互动时 20fps,静止待机 10fps, 窗口不可见或最小化时**完全停画**。所有动画改按真实时间推进,**观感速度丝毫不变**。 > **验收**:权限自检 19/19;安全档实测打开类全部放行、`run_script`/`delete` 才弹窗; > 宠物降帧 15.8fps → 9.0fps 且动画速度守恒(漂移 0.6%);静态守门 0 未定义名。 ### v0.31.23(2026-10-08)· 修「装好 0.31.22 后云端模型全废」等关键缺陷 - **① 云端模型修复(最重要)**:0.31.22 安装包漏打了 openai 云端 SDK——装好后所有 **云端模型(DeepSeek / OpenAI 网关)全部不可用**,只能退回本地 Ollama。本版已补进包, 填 Key 即用。**强烈建议 0.31.22 用户立即升级。** - **② 实验性 V2 引擎修复**:三角校验安全层读错键名,导致 V2 引擎的工具提案**恒被拒绝** (开了 V2 也没法真正干活);连同 V2 版本轴升至 `2.0.0a12`。 - **③ 代码生成更靠谱**:「开发」工种漏判 spring-boot 项目类型 + 分步生成预算过紧 (长项目中途被饿死)都已修复。 - **④ 防复发**:新增**冻结版依赖完整性守卫**——打包后自动核对关键依赖真在包里, 防「漏装依赖」这类问题再次溜出去(本轮 ①就是它事后复盘抓出来的)。 > **验收**:静态守门 26 文件 0 未定义名;冻结降级链路 8 项断言全过;PYZ 收录核验通过。 ### v0.31.20(2026-09-30)· 修「继续却没干活」+「小人已经在运行一直弹」,定时关机真能用 - **①「继续」不再白干**:日志显示续改路由**命中了** `D://geo`,但那个目录是**空的**, 旧逻辑仍按"改旧版"处理 → 没有旧代码可改 → **一个文件都没产出**。 现在:**空目录 = 从零建**,且保证落盘目录就是你说的那个。 - **②「小人已经在运行」不再弹个没完**:18:26–18:29 日志里 **11 行「日志启动」** —— 旧版重复启动只弹提示就退出、**不唤醒已有窗口**。现在改为**通知已有实例把窗口弹到最前面**; 另加**陈旧锁自愈**(崩溃残留的锁以前只能靠重启电脑)。 - **③「关机」不再被做成项目**:你说「晚上七点半帮我关机」,旧版因含"帮我"被判成"开工", **真建了一个名叫这句话的项目目录**(app.py / index.html / scheduler.py…)。 现在:关机/重启 → **真执行**;提醒/闹钟 → 直通已有提醒功能; 「打开文件夹 / 查天气 / 整理文件」也不再被当成开工;而「帮我做一个关机软件」仍照常开工。 - **④「定时关机」真能用**:说「晚上七点半帮我关机」或「半小时后关机」,确认一次后设定 **系统级倒计时**(程序关掉也照样到点执行);取消说「取消关机」。 若本机安全策略禁止执行电源命令,会**如实告诉你**并给出可自己执行的命令,**绝不假装已设好**。 - **⑤** 「帮我关掉微信 / 企业微信 / 钉钉 / 飞书」现在能识别(写死白名单,认不出就说不认识—— 结束进程不可逆,宁可不杀错)。 > **验收**:8 套守卫 **304 项全绿**。守卫保留**反例**:真开发需求必须仍开工、 > 有文件的目录必须仍走"改旧版"、认不出的进程名必须不猜。 > **下载**:Windows 见本页 Releases(Gitee 上是**分卷版**:把 `-gitee.exe` 与同目录 `.bin` > 全部下到**同一个文件夹**再运行 exe,**不需要手动合并**)。macOS / Linux 在 GitHub / GitCode 同一 tag。 同时包含 **0.31.19 / 0.31.18 / 0.31.16 / 0.31.15** 的全部修复。 ### v0.31.19(2026-09-30)· 修「生成的文件不能用」:不再另建"这个项目",文件里不再混围栏 **你 17:09 反馈的两条,是同一个病根**:模型输出**没经净化**就被拿去当路径名 / 直写磁盘。 - **①「生成的 geo 文件并没有在指定的文件夹」** —— `chat_last.json` 里你当时的原话是 「继续做这个项目」,而旧版只把「请继续」这类**纯指代**当成"继续做上一件事"。 你说的多了个宾语,被判成"新需求" → 走新建 → 项目名抽取把**代词「这个项目」当成了项目名**, 于是在 `PASM工作\project\` 下**另建了一个叫「这个项目」的目录**(57 个文件)。 **现在**:「继续做 / 接着改 / 继续完善 + 这个项目 / 这个应用」**都认**; 但「继续做记事本App」这种**带具体名字的仍然正常当新需求**(不会被误当成"继续"); **代词永远不能当项目名**,抽不出名字就回退到你**当前的项目目录**; 真的一句可续的都没有 → **明确告诉你**并给出两条出路,**绝不凭一个代词乱建目录**。 - **②「JAVA 文件里有 ```java、注释是 python 的、结尾也有 ```」** —— 你机器上 26 个 .java 里 **24 个首行是 ```java、末行是 ```**(模型把整份文件又包了一层 markdown 代码块), 而旧版落盘是**原样写入**;还有把 `.java` 注释写成 `# 注释`(Python 风格)的,Java 里 `#` 非法,编译必失败。 **现在**:落盘前统一净化 —— 剥掉**成对的首尾围栏**(**README 里正常的代码块示例不受影响**)、 `.java/.kt/.cs/.go` 的行首 `# 注释` → `// 注释`(**JS 私有字段 `#count` 不会被动**), 并**如实告诉你改了什么**,不静默改你的文件。净化装在**三个出口**:解析、**唯一写盘出口**(纵深防御)、工具调用循环。 - 顺带修:「做个叫「蜂巢」的预约系统」旧版抽不出"蜂巢",会把**整句**当项目名。 > **验收(可复跑)**:7 套守卫 **236 项全绿**。最硬的两条 —— ①**绕过解析层**把带围栏的内容直接喂给 > 写盘出口,**读磁盘字节**确认干净(不看返回值);②把你**原话**「请继续做这个项目」等 4 句逐句喂进去, > 断言被续改接住、用的是**真实需求**、执行后 `project/` 下**没有多出目录**。 > **下载**:Windows 见本页 Releases(Gitee 上是**分卷版**:把 `-gitee.exe` 与同目录 `.bin` > 全部下到**同一个文件夹**再运行 exe,**不需要手动合并**)。macOS / Linux 的包在 > **GitHub / GitCode** 的同一 tag 下(dmg / tar.gz / deb)。 同时包含 **0.31.18 / 0.31.16 / 0.31.15** 的全部修复。 ### v0.31.18(2026-09-30)· 小U「真会干活」:补齐执行内核 + 重活自动交给云端 **这一版正面回应你上次的反馈**:「让它继续开发 geo 平台,结果什么都没做」。 我们把根因逐条钉死(有完整诊断报告 `docs/qa/2026-09-30-开发栏目零动作根因诊断.md`), 并把「干活」这条链路从"喊一句、听天由命"改成**有循环、有验证、有重试、有台账**: - **①「请继续」不再石沉大海**:四处真凶一次修完 —— 续改路由只认工作根下的同名目录(而项目其实在 `PASM工作/project/` 里)、需求被「请继续」三个字顶掉、「隔 8 分钟以上再说」被当成闲聊、 空产出(0 个文件)也记成"产出轮次"。 - **② 不再让你照着不存在的功能做**:0.31.16 曾回你「跟我说『分步生成』」,而那个功能当时**并不存在** —— 现在真的实现了,而且**不需要你说**:产出不足时自动转分步。 - **③ 开发改成分步干活(本版核心)**:先落**确定性骨架**(Spring Boot 的 pom / 主类 / `application.yml`、 Vue 的 Vite 全套含 `/api` 代理、Python / Node 骨架 + 按栈给对的启动命令), 再**逐文件**让模型补内容,**每一步**都做语法 / 构建校验,失败带错误重试; 补不动的文件**保留可运行骨架并如实标注**,绝不假报「搭好了」。 - **④ 写→跑→读错→改 闭环**:真跑构建命令,把报错**原样回灌**给模型只修错处,再跑 (只在工具链与依赖缓存就绪时才跑,避免首次构建拉全网依赖把界面卡死)。 - **⑤ 重活自动升级云端**:开发 / 长文这类重活,即使你在设置里选了本地小模型也会**自动走云端** 并在日志里说明原因(设置里可关 `auto_escalate_heavy`);没有云端 Key 时自动改为分步。 - **⑥ 模型现在看得见项目**:云端系统提示预算 1800 → **48000 字**,并带上 **项目文件地图(含符号摘要)+ 相关文件片段** —— 改已有项目不再"整包重写"。 - **⑦ 权限门下沉到工具层**:写盘 / 执行脚本 / 删除按风险分级;安全档下高危操作**弹窗问你要不要做** (你拒绝它就不做),每次判定都留审计记录。 - **⑧ 会「长记性」**:失败自动归因(模型空转 / 格式 / 路径 / 权限 / 工具链 / 语法 / 构建 / 超时…) 并记成「已知坑」,下次同类任务提示里自动带上规避建议。 - **⑨ 一键诊断包**:轮次级 trace + 日志 + 操作台账 + 失败册 + **脱敏配置**打包成 zip (密钥不会外泄),排障不用再手工翻文件。 - **⑩ 长任务可续可停**:进度落盘,崩溃 / 重启后说「继续」能**从下一步接着做**;支持取消。 - **⑪ 办公文件就地改**:表格改一个单元格(**保住原有样式**)、文档 / 演示按文字替换,改一个字不必重生成整份。 - **⑫ 能力基准**:8 项固定任务一键跑(当前 **8/8**),发版可以对比"这版比上版更会干活吗"。 > **下载**:Windows 见本页 Releases(Gitee 上是**分卷版**:把 `-gitee.exe` 与同目录 `.bin` > 全部下到**同一个文件夹**再运行 exe,**不需要手动合并**)。macOS / Linux 的包在 > **GitHub / GitCode** 的同一 tag 下(dmg / tar.gz / deb)。 同时包含 **0.31.16 / 0.31.15** 的全部修复(GEO 复测整批修复:D 盘解析、开发免收口、如实报失败、路径归一化、多栈启动命令)。 ### v0.31.16(2026-09-30)· GEO 平台复测整批修复:落盘混乱 / 开发被限流 / 虚报成功 **这一版是你拿「在D盘建一个geo文件夹…用 springboot-vue 做前后端分离的 GEO 优化平台」实测后 反馈的问题整批修复。** 上一版(0.31.15)把「开发」从崩溃里救回来了,但真机复测暴露了新的一层: 路径散乱、项目没按你说的做、还回你「搭好了」。这次把**五条新根因一次修完**: - **① 「D 盘」听懂了**:你说「在**D盘**建一个geo文件夹」,旧版识别不了这种说法 → 目标为空 → 项目名兜底取了「geo文件夹」三个字、落回默认工作目录。 现在会解析成 `D:\geo`(字面路径仍然优先),项目名取 `geo`。 - **② 开发不再被限流掐断(本版最关键)**:旧版把开发任务当聊天处理, 按"60 秒出结果"把单轮长度从 3000 收到 **720 token** —— 一个前后端分离项目刚写完 `pom.xml` 就被截断,于是"没按要求开发"。现在开发走**独立额度**:单轮 8000 token、目标 10 分钟、 三段续写,后端+前端+配置一次写全。 - **③ 不再虚报成功**:旧版只生成 1 个文件也回你「🏗 项目搭好了!共 1 个文件」。 现在"前后端分离"这类需求产出 <3 个文件就**如实告诉你没做成**,并给你两条出路: 到「设置 → 模型」填云端 Key 后重发,或说一句「分步生成」让我按 后端→前端→数据库 一块块拼。 - **④ 路径不再乱跑**:模型偶尔会写出带盘符的路径(`D:/geo/pom.xml`), 旧版拼路径时会把项目目录前缀整个丢掉、直接把文件写到盘根(注册目录与实际落盘"精神分裂", 也是个路径逃逸口子)。现在一律**收敛回项目目录内**,含 `..` 的越界路径直接拒绝。 - **⑤ 启动命令按技术栈给对了**:Spring Boot 项目给 `mvn spring-boot:run`、 前端项目给 `npm install && npm run dev`(读 `package.json` 的 scripts 判断 dev/serve/start); 不再只找 `.py/.js` 入口、找不到就一句「没找到可执行入口」。 **另外两件**: - **自检不再空转**:发现文件里混进生成标记(生成层降级污染)、或过半文件语法不过时, 立刻停止并如实报告;自检总预算 180 秒 —— 不再让你对着「复查中」等六分钟。 - **安装包版本属性修好了**:以前文件属性里显示的版本号会停在旧版(0.31.14), 现在与安装包一致(构建时自动同步,不会再漂移)。 > 本版同时包含 **V2 认知引擎 2.0.0a11**(契约 1.2,新增可选面:LLM 桥 / 语言出口 / 成长落地) > 与 0.31.15 的全部修复。 **验收目标**:「在D盘建一个geo文件夹…springboot-vue 前后端分离」→ 真落 `D:\geo`、 项目名 `geo`、含 backend/frontend、启动命令对口;产出不完整时**如实报失败**而不是说"搭好了"。 ## v0.31.15(2026-09-30)· 紧急修复:「🖥 开发」工种整条链路失效 **如果你在 0.31.14 上用过「🖥 开发」**,会发现它基本不可用:报「执行工具时出错」、 你指定"文件放 H:\geo_plaform"它不听、要 SpringBoot+Vue 它给 Python+单页 HTML 还幻觉出 Django、 最后把整段说明文当代码写进 `main.py` 直接语法错误。这一版把**五个真根因一次性修完** (真机 0.31.14 实测复现 → 逐条根因 → 逐条修复 → 冻结包双冒烟验收): - **① 不再首轮就崩**:底层一个改名过的依赖包在打包环境里偶发"元数据查不到", 直接把开发智能体的第一轮炸掉(`No package metadata was found for httpcore2`)。 现已兜底容错,不再吐裸报错。 - **② 你说放哪就放哪**:「文件放 H:\geo_plaform」现在**真的落到那个目录**, 不再无视你、跑去工作根目录另建一个乱名项目(**待创建**的路径也能识别了)。 - **③ 项目名不再乱码**:显式指定目录时,项目名直接取目录名(`geo_plaform`), 不再截取你整句话的片段当项目名(上一版出现过"恩怪我怪我没有说清楚能否"这种名字)。 - **④ 技术栈跟着你的话走**:要 SpringBoot+Vue 就真给 SpringBoot 3 + Vue 3 + Vite 的 脚手架结构,不再锁死"前端单 HTML + 后端 Python",也不再幻觉出 Django。 - **⑤ 落盘不再"散文当代码"**:模型输出退化时,旧版会把整段中文说明当代码写进 `main.py`(语法错误必然发生);现在改为**严格格式重试一次**,仍不行就**如实告知**而不是硬塞。 - 验收:冻结安装包真启动冒烟通过、**0 个崩溃特征**;修复逻辑单元自测通过 (路径识别/项目名/技术栈检测/三种输出格式解析)。 - 其余与 v0.31.14 完全一致(V2 引擎、每轮报错修复等全部保留)。 ## v0.31.14(2026-09-29)· 紧急修复:开着 V2 时每轮都回「我这边出错了」 **如果你用 0.31.13 并勾选了「实验:启用 V2 认知引擎」**,会碰到这个:每轮对话都只回一句 「(我这边出错了,没有成功回应你…错误:'NoneType' object…)」,同时"成长"那轮也每轮失败 —— 用起来就像**"越来越笨"**。这一版修好了。**没开 V2 的同学完全不受影响**(V1 路径一行未改)。 - **三条报错、三个真根因**:① 认知皮层里 `snap.get("personality", {})` 撞上 **Python 的坑**(键在、值是 `None` 时 `.get` 返回 `None` 而不是 `{}`)→ 整条回复线程结束 = **没有回复**;② V2 开着时还在跑只对 V1 有意义的 GridWorld 学习轮 → **学习轮每轮失败** = 越来越笨;③ 界面 9 处直接用 `snapshot()["emotion"][...]` 取值 → 回复**生成出来了却上不了屏**。 - **修法**:V2 的契约快照**如实上报它真正有的**(运行步数/情绪/记忆规模计数), 性格先验等**继续如实为「无」**;核心对"缺省"一律容错;界面全部走安全默认(缺就中性值,不编造); V2 时跳过 V1 的 GridWorld 轮,情绪反馈改走 V2 自己的通道("你的语气影响它心情"照旧)。 - **这次连"检查为什么全绿却漏掉"也一并修了**:补了一条**走完整回复链路**的探针, 并用回退法证明它真能抓到(回退 → **0/5 失败**;修复后 **39/39 通过**); 另加"真机场景联调"(V2 + 本地模型真实出话)。 - 顺带:修掉一个**随机报红**的旧守卫(测试收尾与"本地模型预热线程"抢文件导致假失败, 本机已堆了 11 个残留目录)—— 现在连跑 5 次稳定。 - 其余与 v0.31.13 完全一致。 ## v0.31.13(2026-09-29)· V2 引擎"通电"了:听得进你说的话、有自己的说法、会睡觉整理记忆 上一版把 V2 认知引擎的开关交到你手上;这一版解决的是**"开关接上了、引擎没通电"** —— 三处接线缺失,所以你开了 V2 也几乎感觉不到区别: - **① 它现在真的听见你说话了**:以前只有环境数据喂给引擎,**你打的字从来没进过它**, 所以它再会预测也没素材、聊半天也记不住。现在你说过的每句都进入它的感知层, 把其中的人/事/物变成概念并互相连线(实测连聊 12 轮后记忆里真长出 56 条关联)。 - **② 没装联网大模型时不再"复读"**:以前回答来自一份写死的关键词答句表,同一句每次 答得一样。现在改由引擎**自己的状态**组织说法(此刻情绪 / 这句话新不新 / 预测你接下来 聊什么 / 想起什么相关的 / 是"快想"还是"慢慢想")—— **同一句问 8 次给 8 种不同回答**, 且只引用你说过的或它确实知道的,**拿不准就如实说拿不准**,不编造。 - **③ 它会在后台"睡一觉"整理记忆**:每 6 轮对话触发一次(毫秒级、后台线程,不卡聊天)—— 把经历沉淀成符号、加固概念关联、并自发回想。此前这一步在桌面端**从来没运行过**。 - **和联网大模型的关系**:装了(默认)时它把"内心简报"(情绪/预测/联想/是否在慢思) 交给大模型措辞 —— 大模型负责**怎么说**,它负责**真的记得住、有情绪、有边界**; 没装或断网时用 ② 的自带表达。两种都不编造。 - **怎么用**:「设置 → 🧠 模型与思考」勾选「实验:启用 V2 认知引擎(pasm2)」→ 重启生效; 取消勾选再重启即换回原内核(两套内核记忆各自保存,切换不会互相弄坏)。 其余与 v0.31.12 完全一致(V2 开关、启动崩溃修复、领域顾问、防杀软误报、分卷下载全部保留)。 ## v0.31.12(2026-09-29)· 想换个"内核"试试?设置里勾一下就行 **这一版把 PASM V2.0 认知引擎带到了你面前**(实验特性,默认关闭): - **在哪开**:「设置 → 🧠 模型与思考」→ 勾选「实验:启用 V2 认知引擎(pasm2)」→ **重启软件**生效。 - **换了什么**:V2 是重写过的认知内核 —— 会**预测**你下一句要说什么、把经历串成**记忆图**、 会自己**走神**想事(冒出相关的回忆)、还带数学脑与"慢思"(事情出乎意料时多推一步)。 - **怎么退回去**:取消勾选再重启,就回到原来的内核;两套内核各自保存记忆,来回切换不会互相弄坏。 - **诚实提示**:V2 仍在打磨中,属**实验**特性;勾选框下方会显示**本次启动真正装配的引擎名**, 万一加载失败会自动回退原引擎,不假装成功。 - **不用装任何东西**:V2 引擎已随安装包一起带上。其余与 v0.31.11 完全一致 (领域顾问、防杀软误报防护、分卷下载方式全部保留)。 ## v0.31.11(2026-09-29)· 小U 接入领域顾问引擎:问"开店"这类专业问题更靠谱了 **修的就是那种"凭老经验硬答"的错**。问小U「想在抖音开宠物店」,它会: - **先核现行规则再开口**:0 元入驻、按 GMV 档交保证金、0 粉开播等已核验政策作为回答基准,不再给"保证金几百到几千"这类过时信息。 - **记住你的前提**:你说"我已有营业执照",它就不会再建议"先开个人店试水";万一说漏嘴,回复末尾会出现「自检纠偏」提醒——自检结果看得见。 - **三个领域已就位**:抖音/电商开店 · 跨境电商 · 食品经营(预包装=备案制)。领域以声明式数据包扩展,宿主程序零改动。 - 其余能力与 v0.31.10 一致,防杀软误报防护全部保留。 ## v0.31.10(2026-09-28)· 防杀软误报防护版 **如果你曾被 360 等杀毒软件拦截或误删,请更新到这一版。** 本版不新增功能,主题是消除"被误判为木马"的三个特征:主程序注入完整版本信息(公司/产品/版本/描述/版权,旧版全空);彻底停用 UPX 加壳;安装包本体同样携带产品名与版本号。同时已向各杀软厂商提交加白申诉。功能与 v0.31.9 完全一致(能力协作总线、常驻语音、模型解锁、0.31.8 修复)。 ## v0.31.9(2026-09-28)· 系统活起来:全栏目协作 + 语音免界面办事 + 模型解锁 **这一版把小U从"一个聊天窗口"变成"一个能干的团队":所有栏目按需协作但不混乱;不开聊天框直接喊"小U"就能语音办事;模型不再被锁死。** ### 一、能力协作总线(`capability_bus`,新增) 聊天 / 干活 / 资料库 / 团队 / 系统动作等 **27 项能力**登记成统一目录:任何入口(语音 / 聊天 / 远程 / 团队)都能发现并调用任意能力;多意图一句话编排("查天气,然后提醒我开会"→ 两步);**命中不了的就如实说不会,绝不硬凑**——关联但不混乱。删除/清理等破坏性操作**绝不**走语音快车道。 ### 二、常驻语音:不开聊天框也能办事 | 场景 | 新行为 | |---|---| | "小U查一下天气" / "小U打开音乐" / "小U看看邮箱" | **直接执行 + 语音念回话**,全程不开聊天框 | | 只喊名字 | 语音应一声 | | 重活("帮我写个系统") | 自动切到对应栏目走原管线(保留确认墙) | | "你能做什么" | 返回能力目录 | ### 三、模型解锁 不再锁死 `gemma4:12b`(实测 3.9~5.1 tok/s、显存换出后预热 292 秒——"聊了半天没反应"的头号根因)。默认 `auto` 选本机最快已装模型(如 Qwen3.5-4B,11~14 tok/s);「大脑」下拉随时任选。 ### 四、v0.31.8 修复一并包含 - **确认墙死胡同**:确认识别宽容化,13/13 真实口语("好的,开始吧""执行方案A吧"…)全部开工 - **含糊"干活"静默**:喊"干活/做事"自动切到干活模式 - **慢模型思考兜底**:实测 <6 tok/s 自动关思考,杜绝 225 秒 0 输出 - **自我成长路由**:把"分析→readfolder"等经验用于分发,少预设 - **资料库专业化**:知识回流 + 专业守则(引用所学、不编造) ### 五、产物 `PASMStudio-Setup-0.31.9.exe`(Windows,单文件,约 191MB)。 Gitee 侧为**分卷版**(`-gitee.exe` + `.bin` 切片):**全部下到同一目录后直接运行 exe 即可**。 **macOS / Linux 本版未重出**(需 CI 跑 PyInstaller,本机不能交叉编译)。 --- ## v0.31.6(2026-09-24)· 过程看得见、干活会自我复查、连接器真的接上了 **这一版把「像 WorkBuddy 一样工作」这件事补齐了:过程实时可见 → 干完自动复查 → 复查不过自己重来。** ### 一、过程卡对齐 WorkBuddy(聊天 + 干活都可见) | 展示 | 效果 | |---|---| | **头部实时计时** | 干活中「过程 · N 步 · ⏳ 处理中 36s」每秒跳动 → 收口定格「✓ 已处理 2m36s」;你翻历史时不会被强制拉到底部 | | **✍ 生成回复中…** | 首字一到就上屏,回复完成自动收口 | | **每步耗时** | 每步行尾灰字「· 3s」,一眼看出哪步最慢 | | **深度思考上屏** | 推理型问题请求思考(闲聊不请求,保住响应速度);思考过程灰度实时显示 | ### 二、深度思考不再「想一小段就断了」 真机反馈:思考只跑了 8 秒、313 字就被强制收敛。根因是**慢机(生成 <15 tok/s)的思考预算被硬压到 8 秒**。 | 改动 | 旧 | 新 | |---|---|---| | 慢机思考预算 | 8 秒 | **20 秒** | | 思考档设为「强制开」 | 照样被砍到 8 秒 | **给足 45 秒**(你明确要看深度思考,不替你省时间) | | 手动设预算 | 无 | 说「**思考预算 60**」固定 60 秒、「**思考预算 自动**」恢复自动、问「思考预算多久」给当前策略 | | 收敛透明化 | 只在日志里(用户以为莫名断了) | 过程卡写明「思考到预算上限,已带着思路收敛作答 · 20s / 313 字」 | ### 三、自我复查闭环(干活类与聊天对齐) | 链路 | 旧 | 新 | |---|---|---| | **写脚本** | 失败只自动修 1 次 | 新模块 `self_verify`:最多 **3 轮**「语法验证(py_compile / node --check / json 解析)→ 真跑 → 带报错修复」 | | **项目开发(多文件)** | 写完只跑一次,报错就交给你 | **语法校验 → 最多 2 轮只修出错文件 → 运行 → 运行失败再修一轮重跑** | | **多步计划执行 / 协作评审 / 创作企划** | 推理期间界面全黑 | 全部接上真实思考流 | 修复轮若没产出新代码会**诚实停止**,不假装修好、不无限重试。 ### 四、连接器真正关联应用 - **MCP 状态可查**:聊一句「MCP 状态」→ 桥连接状态 + 可用工具清单 - **任务完成自动推送**:向已连接的**飞书 / Discord / 微信 / Webhook** 通道推送「✅ 任务完成」(没配的通道安静跳过,推送在后台线程,不影响应用速度) - **破坏性操作前强制弹选项卡**:删除/清空/格式化文件、目录、项目前先确认范围;「删掉这句话里的错别字」这类文字修改不会误拦 ### 五、产物 `PASMStudio-Setup-0.31.6.exe`(Windows,单文件,约 191MB)。 Gitee 侧为**分卷版**(`-gitee.exe` + `.bin` 切片):**全部下到同一目录后直接运行 exe 即可**, 安装程序会自己找分卷,不需要手动合并。 **macOS / Linux 本版未重出**(需 CI 跑 PyInstaller,本机不能交叉编译)。 --- ## v0.31.3(2026-09-23)· 「请立即开始」接得上上文了 + 「只答应、不动手」也治了 **这一版补的是 PASM 最该有的两样东西:记得住上下文、说到做到。** ### 一、说「请立即开始」,它不再跑偏 你在开发栏目里只打一句「请立即开始」,旧版会把**这句话本身**当需求送进模型 (提示词就是「帮我开发一个项目:请立即开始」)—— 模型只能凭空造。真机上造出来的项目名 就叫「开发一个项目请立即开始」,而当时你真正在谈的是 `D:\Code副\springcloud-business` (Spring Boot),**位置、语言、项目全错**。 现在这类"自己不含信息"的话会先把**要做什么**从上文找回来,四级兜底: | 优先级 | 来源 | 跨重启 | |---|---|---| | ① | 本栏目上一轮的需求 | 有(落盘 `work_session.json`) | | ② | 本会话的开发需求 | 有(会话落盘) | | ③ | **开发台账**里该项目的最后一条需求(新增核心接口 `workctx.last_request()`) | **有** | | ④ | 会话历史里最近一条有实质内容的消息 | 有 | 并且会**明说依据**:聊天区写出「按上文继续:『…』」—— 说错了你当场就能纠正。 ⚠️ 图像 / 视频 / 漫剧**只认 ①**(画面需求不能被别的栏目历史顶替)。 顺带修好两件:**项目名不再取废话**(有现成目录就取目录名);**目标目录被尊重** (需求里写明**且真实存在**的目录 → 就在那里干活,不再一律跑到桌面另建;不存在的路径**不猜**)。 ### 二、「只答应、不动手」治好了(两条病根,缺一条都会复发) 真机实录:你连说四轮「请开始执行 / 马上执行 / 执行方案A吧 / 请马上开发」, **每轮它都只回一句"我这就去扫一下…"就没了下文**,一个文件都没落地。 | 病根 | 为什么旧版抓不到 | 现在 | |---|---|---| | **路由** | 这些口令**自己不含需求词** → `_detect_agent` 一律返回 `None` → 掉进普通聊天,模型手上**根本没有执行手段** | 催办口令接得上上文 → 落到执行器(干活栏直接开做;聊天栏出确认墙) | | **护栏** | 诚实性防线只认**完成时**(`已生成/已打开`)—— 而「我**这就去**」是**将来时**,一条都拦不到 | 新增**承诺守卫**:按「承诺词 + 真动作词**同句**」判定(`我这就去回答你`这类**不命中**) | 护栏抓到后**不只改口** —— 能从"继承来的需求 / 本栏目上一轮 / 台账"里推断出要干什么, 就挂上可点的「⚙️ 立刻开工」,**点一下就是真开做**;推断不出则如实说清并请你补一句, **绝不给一个点不出东西的假入口**。有真账(真扫过)时一律放行,不许误改口。 ### 三、聊天里也看得见过程了 以前只有干活栏目有过程卡片,聊天栏只有一段流式文字 —— 你没法判断它到底有没有真去回忆、自查。 现在**工具调用会摊开**:工具名(中文标签)、**关键参数**(如检索用的那个词,便于你核对它查的是什么)、 结果摘要;失败也看得见(红)。**没调用工具时一张卡都不多出**,聊天保持干净。 过程卡片跑完会收口成「✅ 本轮完成 · N 步」,不再"越长越长然后无声停止"。 ### 四、验证 桌面守门套件 **35 个脚本 · 1180 项断言 · 0 失败**(新增 `verify_promise_v0313` 45 项、 `verify_context_v0313` 29 项);跨仓漂移守卫 **20/20**(两仓 `desktop/` 逐字节一致)。 ### 五、生态影响:**不动任何已发布产物** | 产物 | 要不要动 | 依据 | |---|---|---| | PyPI `pasm-skills` / `pasm-agents` / `pasm-framework` / `pasm-mcp-server` | **不动** | 本轮改的是桌面端与核心认知层,四个包的源码一行未动;本地版本与 PyPI 已一致 | | ClawHub / WorkBuddy 开放平台的技能 | **不重传** | 技能正文本轮零改动(各仓 `skill/` 最后改动是 09-20/21,与平台一致) | | 桌面安装包 | **要发** | 修复都在桌面端 | ### 六、产物 `PASMStudio-Setup-0.31.3.exe`(Windows,单文件)。 Gitee 侧为**分卷版**(`-gitee.exe` + `.bin` 切片):**全部下到同一目录后直接运行 exe 即可**, 安装程序会自己找分卷,不需要手动合并。 **macOS / Linux 本版未重出**(需 CI 跑 PyInstaller,本机不能交叉编译)。 > 后续版本见上方 **v0.31.28**(最新)。 --- ### v0.31.2(2026-09-23)· 「我让它开发,它什么都没做」修好了 + 干活过程实时可见 **这一版修的是桌面端最伤人的一个问题:你对它说「帮我开发一个记账系统」,它没有任何动作。** 查下来不是执行器坏了,是**路由** —— 一句话要穿过一串判断门(能力问句 → 关键词路由 → 模式门 → 计划门 → 待确认墙 → 执行器),**任何一道判错,表现出来都是"没反应"**。 ### 一、5 个真根因(都有实测证据) | # | 根因 | 你看到的现象 | |---|---|---| | 1 | 开发指令被别的栏目抢走 | 「帮我开发一个**数据分析**平台」被判成"表格分析";「帮我开发一个**微信**小程序」被判成"跨端推送" | | 2 | 疑问句劫持 | 「能不能帮我开发一个网站吗」→ 只回一段"我会这些"的能力清单,**不开发** | | 3 | 需求稍长就静默失效 | 关键词窗口只有 22 字,超长需求直接不命中 → 当纯聊天处理,**且一句提示都没有** | | 4 | 叙述句被当成命令 | 「我昨天开发了一个网站」「怎么开发一个网站」也会被当成"开工指令" | | 5 | ★ **确认墙是死路**(最贵) | 聊天模式先问你要不要开工;你回「**开始**」—— 它**既不开工、也不回话**,那句确认就永远挂着 | **现在**:开发指令一律认得准(18 条正例全中、20 条反例零误伤),回一句「开始」**立刻开工**。 另外补了一条**诚实边界**:如果它把"重活"降级成了聊天,会明确告诉你 「这句话我按**聊天**处理了,**没有动手**」——旧版一声不响走聊天分支,你无法判断 "它是没听懂,还是没动手",只能反复重说。 ### 二、干活过程实时可见(像 WorkBuddy 那样) 以前重活是**全黑箱**:聊天里只有一句「⏳ 正在干活(可能要几十秒到几分钟)」。 本地模型下真的可能几分钟,于是 —— **"正在干活"和"卡死了"在界面上完全一样**。 现在聊天区会逐步长出**一张**过程卡片(同一轮只占一张,不刷屏): ``` 过程 · 7 步 ◇ 开工 🖥 开发 ◇ 让模型生成项目文件清单 新建项目 ◉ 已读取 …\记账系统\index.html 42 字 ◍ 深度思考 先把需求拆成前端页面与后端服务,再逐个文件生成 + 新建 index.html +5 行 ✎ 修改 app.py +1 / -0 行 ›_ 运行项目 python app.py(自动探测入口) ✅ 已在 http://127.0.0.1:5000 启动 ``` 三条纪律:**只报真实发生的事**(真跑的命令、真写的文件、真读的路径,不生成"假思考"凑热闹); 思考增量**原地刷新**(推 40 次也只占一行);**一轮一张卡片**,上一轮的卡片留在历史里。 ### 三、顺带修好的 - **「📦 场景」设置页首次真正进包**:把外部生成的智能体场景(人格 + 知识源)一键载入。 这个能力在 **v0.31.0 / v0.31.1 的安装包里其实没有** —— 代码在开发主仓,没同步到发行仓。 - **工作台「进度」一栏终于有内容**:此前 `worklog.set_status` 全项目**从未被调用过**。 - **构建链统一到单一真相源**(`desktop/build_common.py`):发行仓的 Linux/macOS 构建脚本 此前是**手写参数**,漏了 115 个懒加载 hiddenimports + `desktop/skills` + playwright 驱动 → 那两平台的包里**这些能力静默失效,冒烟还照样通过**。 ### 四、验证与产物 - 桌面守门套件 **33 个脚本 · 1104 项断言 · 0 失败**;新增**跨仓漂移守卫** (两仓 `desktop/` 逐字节比对 + 子进程真起窗口冒真),以后"改完忘同步"会当场被抓出来。 - 那一版产物:`PASMStudio-Setup-0.31.2.exe`(Windows)。 Gitee 侧为**分卷版**(`-gitee.exe` + `.bin` 切片):**全部下到同一目录后直接运行 exe 即可**, 安装程序会自己找分卷,不需要手动合并。 **macOS / Linux 本版未重出**(需 CI 跑 PyInstaller,本机不能交叉编译)。 --- ### v0.30.16(2026-09-17)· 复制不再吃掉聊天正文 / 聊天慢的真凶:一个被 `except` 吞掉的 NameError **「输入『你好』过了一分钟还没反应」不是模型慢,是本地通路被静默降级了。** 真机日志里的证据:`原生 /api/chat 不可用,回退兼容端点:name 'base_url' is not defined` —— 一个拼错变量名的 `NameError` 被上层 `except Exception` 吞成一行 INFO,于是每次请求 都退回兼容端点,而那条路会**丢掉三个关键参数**: | 丢掉的参数 | 后果 | |---|---| | `keep_alive` | 模型被换出显存 → 下次请求**冷加载 45 秒** | | `num_ctx` | 上下文没压小 → 更慢 | | `think=false` | **思考链照开** → 首字 20 秒、动辄想 2000+ 字 | 修完之后最坏一轮从"等 1 分钟以上"回到正常(本机实测首字 1~2 秒)。 **顺带立了一道静态守门**(`tools/check_undefined_names.py`):专门找"读了但没定义"的名字。 拿它扫全仓,又抓出 **4 处同类**(全都是"被 except 吞掉 → 功能静默失效"),其中一处就是 **你说的"没有产物预览"** —— 文本/方案产物的预览代码用了没导入的 `_io`,永远报错。 **另外六件事**: 1. **点「📋 复制」不再把聊天正文吃掉** —— Qt 的 `QTextBrowser` 点锚点后还会自己 `setSource`, 而复制键的 href(`pasm://copy/0`)不是真资源 → 整块正文被换成一张空白错误页。已修。 2. **找不到刚完成的工作** —— 入口本来在(左侧工作台列表 `任务#tXXX`,双击进详情),但 **双击必崩**(详情窗少了一个属性)。已修,并在工作流页新增 **「📂 已完成的工作(看产物)」**:列真实存在的产物,点文件名**直接打开**、点标题看详情。 3. **产物预览**:顶部加「📂 打开文件 / 📁 所在文件夹」,并改成取**第一个真实存在的**产物。 4. **设置面板「🔗 接入」改成二级标签页**:飞书 / Lark · Discord · 微信 · 通用 Webhook 四个标签,**一次只显示一个通道**(原来四组平铺,面板被拉成一条长龙)。 5. **聊天页小人高度与头部对齐**:实测卡片内高 80px、小人 89px → **被切掉 9px**。 改成由小人高度反推卡片高度(内高 == 小人高)。 6. **支付接口:保留**。它是"给**你做出来的项目**接收单"(产出可拷走的收单适配层文件, 沙箱真 HMAC 签名 + 真状态机),**不是替你付款**(那类操作在安全底线里一律不做)。 这一定位现在写在支付页最上面,一眼可见。 > 本轮验证:桌面守门套件 **25 个脚本 832 项断言 0 失败**(含 3 组反例对照,其中一组起 > **假 Ollama 服务端**证明请求真的打到 `/api/chat` 且参数带全了)。 ### v0.30.11(2026-09-17)· 12 项真机反馈全部落地 + 产物统一到一个工作根 - **🛩️ 飞天变了**:起飞**原地变身**成飞机形态(不再是"人形平移"),落地变回人形;航线改成随机曲线, 不再是规规矩矩的直线矩形。 - **🔀 左右两栏不再都叫"自动化"**:左导航改「⚡ 自发行为」,右侧固定栏改「🤖 工作流(AI 多步任务引擎)」, 并互相注明区别。 - **🖥️ 含糊说法也能开文件**:以前只认写全路径的文件,"打开 E 盘里的 txt"完全不理;现在按"盘符 + 类型" 做有界搜索,而且**疑问句不抢答**("E 盘的 txt 怎么打开"就老实回答)。 - **📣 广告设计不再只出图**:新增「创意说明(策略层)」—— 传播目标 / 人群 / 主张 / 调性 / 媒介 / 主视觉构思, 与设计稿同在右侧栏。 - **🧍 桌面小人三连**:① 今日心情**独立成行**(名字+格言 / 今日心情 / 内心 三行分明); ② 动作**补回 4 个被静默丢弃的**(点头 / 伸懒腰 / 抱臂 / 弹跳),再**新增 4 个** (欢呼 / 鼓掌 / 指一指 / 比心),**2D 与 3D 双路径都实现**; ③ 新增**形象 DIY** —— 配色三旋钮(色相 / 饱和度 / 明度)+ 头饰开关(兽耳 / 角 / 天线), 刻意做成 **2D 与 3D 同一套变换**(只改 2D 的话,能跑 3D 的机器上等于看不见)。 - **🛠️ 工作真"对标"了**:代码类工作**真跑官方脚手架 + 真装依赖**,落盘就是能跑的项目 (实测 express 真装 70 包、vite+vue 真装 35 包);代码 / 支付类工种此前**根本没有执行器**,现已补上。 - **💳 接入支付(沙箱优先)**:沙箱是**真签名、真状态机**(下单 → 支付 → 回调验签 → 查单 → 退款), 订单落盘重启不丢;微信 / 支付宝**只留接口与配置**,即使凭据填齐也会明确报"尚未接真实 HTTP", **绝不静默假装成功**,密钥永不回显。 - **📎 上传的图 / 文件看得见了**:聊天区内联缩略图,非图片文件显示带大小的卡片,模型与你都看得见。 - **🔌 工作会自己调工具了**:接通 `pasm-mcp-server`,13 个认知工具并入对话工具总线, 工作流里真能调 `pasm_observe / pasm_context / pasm_feel`;连不上静默降级。 - **🗂 产物统一到一个工作根**(朋友反馈):改前产物散在 **4 套互不相通的根**(含写死在桌面的 `PASM创作`), 现在统一到 `桌面\PASM工作`,下面按类型分 `project` / `image` / `video` / `copy` / `doc` / `team` / `script`; 存量**迁移**走"复制 → 逐项校验(sha256 + 树摘要)→ 通过才删原",**可回滚**; **只搬产物不搬知识** —— 笔记 / 角色配置 / 书籍一律留原地。会话记录里引用的旧路径一并改写。 - **🐞 顺手修掉 9 个真实缺陷**,其中两个值得一提:**飞天高度旋钮形同虚设**(有定义、有滑块、自检也过, 却**没有任何代码读它**);**占位符判据把每一份广告方案都判死**(广告模板自带的「策略层」被当成占位符, 于是工作流步骤永远回"广告方案未过质检")。 ### v0.30.3(2026-09-16)· 小人形象与行为修复 - **📏 长反了 → 现在真长高**:以前小人越长大越"缩水"(体型系数随成长递减),现已改为递增(幼儿 0.98 → 青年 1.16),陪伴越久越高大,符合直觉。 - **🤖 头部放大、细节更清楚**:2D 头像整体放大;3D 模型头部尺寸上调约 33%(青年期),躯干四肢仍随成长长高,不再"看不清脸"。 - **🤸 更灵动、更主动**:自主动作触发间隔缩短近一半、概率提高;睡眠阈值 45s → 150s,你放着它自己也会动、会玩、会歇。 - **🧪 自检不再误报**:行为自检里写死的"满级 7 动作"改成从动作表动态推导(现 12 个动作、0 级解锁 5 个),以后加动作也不会莫名其妙 FAIL。 - **🗂 数据目录彻底统一**:修正 `growth.py` 的数据目录取用方式,统一走系统标准路径(Win32 权威解析),消除"双击启动写 AppData、其他启动写 home"的数据分裂。 ### v0.30.2(2026-09-15)· 修「聊天内容会丢」+ 不再编造「已执行」 - **🐞 你自己发的话不会再丢了**:回复是逐字蹦出来的(约 1.2 秒),而这段时间输入框已经可打字; 抢在它蹦完之前发一条,那条消息会被它自己的动画覆盖掉(消息其实存着, 换到别的对话再换回来又会冒出来 —— 所以看着像灵异事件)。现在它先确认 「这一段是不是我自己的」,不是就另起一段、**绝不覆盖你的话**; 你抢话时它会把没说完的半句**立刻补完整**再停,不会停在半句上。 - **🚫 不再口嗨「已生成 / 已打开」**:以前它偶尔会说「✅ 已生成并打开浏览器」而屏幕上一片空白 —— 那是编的,并没有真的执行。现在**每件真事都记一笔账**,说了「已生成 / 已打开 / 已运行」 却查不到记录时,它会自己更正为「我并没有真的做到」。 - **🚶 走路先转身**:不再正面朝前横向平移 —— 先转身、再迈步,走完自动转回正面; 转身未完成时会收小步幅,读起来是"先转过身再走"。 - **🎭 动作从 7 个增到 16 个**:新增伸懒腰 / 抱臂 / 弹跳撒欢 / 点头致意 / **飞天转圈**; 动作**跟着性格抽**(九种性格各有偏好:调皮灵动爱颠球跳舞,温和沉稳爱点头思考……), 超过 90 秒没人理它还会自己飞天转一圈。 - **👕 换形象会同步**:桌宠换了皮肤,聊天区的小人立刻跟着变。 - **🗂 数据目录不再分家**:以前从终端等方式启动可能把数据写到另一个目录(双击启动却不会), 现在统一用系统标准路径。 ### v0.30.0(2026-09-15)· 3D 机甲小人 + 栏目整合 + 六项工作能力 - **🎮 小人立体起来了,而且真的会动**:换成 **GPU 真 3D 机甲造型** —— 外壳分片、金属质感、 清漆高光、胸口发光徽记;**会呼吸、会摇摆、头顶天线轻轻晃**,还会跟着鼠标方向转头看你。 走路 / 挥手 / 跳跃 / 跳舞 / 思考 / 抱球这些动作都看得出来;随成长四档从"圆头圆脑" 长成"修长青年"(身高体态逐级变化,青年期还会长出肩甲与天线)。 形体**全部程序化生成**,没有引入任何新依赖;万一机器跑不了 3D,会**自动退回原 2D 画法**,绝不崩。 - **🧩 工作栏清爽了**:原来「文案 / 表格 / PPT / Word」四个按钮收成一个 **「📄 文档与演示」**, 点它在按钮下方弹出**卡片式展示框**(四种格式各带一句说明、当前格式高亮), 不占常驻布局高度、点面板外部自动关闭、贴边会自动回拉。 **显式指定依然优先**:直接说「给我个 Word」照样直接走,不弹选择器。 - **📎 聊天框多了「+」**:图片 / 文档 / 任意文件 / 截屏四个入口。Word、PPT、Excel 会 **真读正文与表格**(不只是认扩展名),所以可以直接说"照这份报表做个 PPT"; 单文件截断 6000 字、单次最多 3 个,坏文件只提示不崩。 - **🔐 权限三档(默认「安全」)**:安全(写文件 / 执行命令都先问)· 标准(低风险放行、高危确认)· 完全访问(全放行,切换有明确风险提示 + 二次确认)。 **拿不准一律停下来问你**,不自己猜。 - **✨ 页面切换有过渡动效**,不再生硬跳转。 - **🎙 语音唤醒**:直接说「小U」就醒(**默认关闭**,在设置里打开才占用麦克风; 助手说话时不会自唤醒;**改了名字唤醒词立刻跟着变**,不用重启)。 - **🚀 开机自动启动**:设置里一键开关,写当前用户注册表,**不需要管理员权限**,开机不弹黑框。 - **🏷 名字统一为「小U」**(桌宠 / 设置 / 知识库 / 语音各处;**你自己改过的名字不会被覆盖**)。 ### v0.29.1(2026-09-14)· 修「聊天变慢 5 倍 / 莫名背能力清单 / 语音变哑」 - **🩹 修「聊天突然变慢 5 倍」**:同一句话从 10 秒变 52 秒。定位发现 48.92 秒的「首字」里 **40.2 秒是把模型重新装进显存** —— 推理侧其实没有退化(同长度提示热态实测首字 1.35 秒、总 8.7 秒)。 根因是 `keep_alive` 逐请求生效,而 **Ollama 服务端默认只保活 5 分钟**,App 侧闲置超时或某条路径 掉到兼容端点兜底(会静默丢弃 `keep_alive`)模型就被卸载。已加**驻留守卫**:只在发现模型真不在 显存时才补载,模型驻留时**绝不打扰**(实测任何触碰都会重置前缀缓存,把 0.3 秒的提示评估打回 4.2 秒); 并加请求前体检预热、「只装载不推理」的预热方式,补上「从云端切到本地时预热不跑」的漏口。 - **🩹 修「答非所问,突然背一串能力清单」**:问「能否先吃点小吃?」会回一串能力清单。 根因是能力询问判定**太宽**(「能否 / 会不会」出现在句子任意位置就算问能力),末尾还有 **无条件兜底**,模型整轮没参与。已收紧为「框架开在句首 + 能力领域词紧跟其后 12 字内」—— 实测误触发 **9/13 → 0/14**(14 条负样本 + 8 条正样本)。 - **🩹 修「语音变哑 / 念出一串英文」**:微软**静默下架**了 7 个在线声线(女童声线、男童声线 + 四川 / 河南 / 山东方言),而被下架声线会**返回空音频且不报错**;成长档表又把幼儿 / 童年两档 全指向女童声线 → **每次合成必失败**,只能回落系统声线硬念中英混排。已改用**存活声线 + 音高塑形** 做年龄感,并新增**声线守卫**(空音频记黑名单自动换替身 + 每小时校验服务端声线表)—— **以后微软再下架也不会静默变哑**。实测 12 个(性别 × 档位)+ 全部方言声线逐个真合成 **0 处空音频**。 ### v0.29.0(2026-09-14)· 记忆层合一 + 新增「事实层 / 世界模型」+ 找回跨表述记忆 - **🩹 修掉一个正在悄悄丢记忆的缺陷**:桌面端原先各留了一份记忆实现,而且是**拷贝**、不是同一份 ——同一件事在两个副本里各记各的,表现为「聊天时有时记得、有时不记得」(半失忆),**且不报任何错**。 现已收敛为**唯一真相源**,并加两道自动守门防复发;实测容量 200 的记忆库被 260 条无关闲聊灌满后, **三条早期重要记忆一条没丢** - **📌 新增「事实层」**:专门记住姓名 / 年龄 / 住址 / 用药 / 过敏 / 家人电话这类**关键事实**, 与闲聊记忆分开存,**保证不被日常对话挤掉** - **改口会留痕**:从「北京」改说「上海」,旧事实不是删掉而是标记失效(历史可查),检索只返回当前有效的 - **可信度保护**:把握不大的新说法**不会**盖掉把握很大的旧事实,而是先「挂起待确认」 - 问「我住哪儿」「吃什么药」「对啥过敏」都能查到 - **🎯 新增「世界模型」**:同类处境做过几次、成过几次,给出**成功率估计**与**瓶颈提示** (如「成功率约 83%」);**知道就说、不知道就说不知道**,不给虚假确定 - **🔍 记忆检索:换种说法也找得到**:问「我叫什么名字」现在能查到存成「姓名」的事实 (实测该场景召回率 **50% → 100%**) - **📦 同时包含 0.28.6 / 0.28.7 / 0.28.8 全部能力**:中文语言锁与干活前确认门、浏览器自动化与实时天气、 语音稳定性、PPT 插图、定时与周期任务、邮件连接器、日历连接器、跨端远程桥、自进化沉淀技能、多智能体协作层 - 安装包体积 **77.5MB**(含浏览器自动化所需的运行时) > 含 0.28.5 全部能力:认知核心层落盘 PASM 核心包、引擎接口统一调用(api 1.1)、 > 学习层「同一接口两档实现」可热插拔、三篇能力总览文档。 ### v0.28.5(2026-09-12)· 三层契约收敛 + 认知核心层落盘 + 文档补全 - **🧠 认知核心层落盘 PASM 核心包**:符号推理 / 记忆路由 / 向量记忆 / 学习层从桌面端提升为 `pasm.cognitive.*` 单一真相源,桌面端改为再导出薄壳——跨版本行为更一致,也为多端复用打好地基 - **🔌 桌面端改用引擎接口统一调用**:新增桌面引擎工厂,按契约「择优创建」并给出**降级报告** (如实告知当前跑的是完整引擎还是内置轻量链路);**换引擎 = 换注册表里的名字,调用方一行不改** - **🧩 引擎接口契约 api 1.1**:新增**环境插件注册表**(可换非网格世界)、`create_best()` 择优创建、 `capability_gap()` 能力缺口报告;契约自检 12 → 20 项 - **🎓 学习层「同一接口两档实现」**:核心档(离散动作 + 性格设计)与教学档(连续向量关联式) 同接口可互换,并支持**运行时热插拔**;修正两档 `learn()` 签名不一致导致「学习静默失效」的隐患 - **📚 文档补全**:《PASM 核心知识总览》《PASM Studio 全部功能总览》《PASM-Lite 全部功能总览》 - **📦 安装包瘦身**:清理构建残留,体积 63MB → **51MB** > 含 0.28.4 全部能力:语音接收方言识别修复、八种方言(粤语/台湾腔/四川/河南/东北/山东/北京/云南)、 > 神经符号混合推理、记忆路由器、小人行为自我设计/自我优化、工作状态显示、灰度思考显示。 ### v0.28.4(2026-09-12)· 语音接收修复 + 方言/普通话精准识别 - **🎤 语音接收「听不懂」三处根因修复**:①**语种被永久锁死**——旧逻辑只在检测到粤语/台湾腔时 切换识别器,**从不复位回普通话**,一旦说过粤语就被锁在 `zh-HK`,之后说普通话或川/豫/京话全部 听不懂;②**默认识别器不一定是普通话**——装了方言语音包时列表顺序可能把 `zh-HK` 排前面; ③**无容错回落**——专业语种识别不到时不会退回普通话再听。现已:启动强制优先 `zh-CN` (覆盖普通话 + 川/豫/京/滇/东北/鲁等官话方言),每按 🎤 显式定语种,识别空或低置信度自动回落普通话再听 - **🗣 单句方言即识别、即切音色、即用方言回**:一句话判别方言 → 立刻切对应口音回读 → 用对应口语回复 - **➕ 新增云南方言**:方言支持扩至 8 种(粤语 / 台湾腔 / 四川 / 河南 / 东北 / 山东 / 北京 / 云南) - **🔍 语音自检增强**:`diagnose()` 增加方言识别包说明,装没装语音包一目了然 > 含 0.28.0 ~ 0.28.3 全部能力:神经符号混合推理、记忆路由器、小人行为自我设计/自我优化、 > 工作状态显示、灰度思考显示、七地方言同权、团队与技能库完整可用。 📖 **全部功能清单见 [docs/FEATURES.md](docs/FEATURES.md)**(16 章 + 完整模块索引) ### v0.28.3(2026-09-11)· 真机四修 - **💭 回复丢字根治 + DeepSeek 式灰度思考**:云端模型把思考混在正文里返回时,聊天窗会把 `` 当未知 HTML 标签**连同内容一起吞掉**(这就是"部分文字丢失")——新增流式思考拆分器根治; `reasoning_content` 独立思考字段不再被丢弃。现在思考以**灰度小字实时上屏**(💭 前缀), 正文随后流出,最终态保留"灰度思考 + Markdown 正文",与 DeepSeek 官方一致 - **🗣 方言串味根治**:soft 词表全是普通话高频单字(整/贼/老/啥/咋/啦/儿…)、河南 markers 有裸"中"—— 普通话聊几句就被偷偷攒分带成东北/河南腔。收紧为方言独有强词 + 切音计数取最大后, 普通话归普通话、七地方言照常识别与朗读 - **🎈 工作提示 → 头顶冒泡气泡**:小人工作提示(如「与XX聊天」)从头像下方的矩形改到**头顶上方**的 冒泡气泡:白底圆角 + 青色描边 + 向下小尾巴 + 柔和投影 - **🛠 团队功能无反应 + 技能库为空 根治(历史遗留)**:打包缺陷致 `pasm` 引擎包从未进安装包—— 团队/数学脑/自修复等**自 v0.24 起在安装版静默失效**;0.28.2 起内置技能库数据又丢失。 本版按修复后的 spec 重建,团队功能首次在安装版全面可用、内置技能 8 篇恢复 ### v0.28.2(2026-09-11)· 小人行为自我设计 + 工作状态 + 方言全量升级 - **🧠 小人行为「自我设计 + 自我优化」引擎**:桌面小人的动作**不再预设**——按成长阶段解锁 (0 级 挥手/蹦跶/探头 → 1 级 踢球 → 2 级 跳舞/转圈 → 3 级 思考),基础偏好由九宫格性格 (脾气×能量×爱玩)**自我设计**;你夸它、戳它、训它都会让它**自我优化**动作权重(ε-贪心探索防僵化), 持久化到 `pet_behavior.json`,重启不丢、升级/换性格也不清 - **💼 工作状态呈现**:小人干活时显示真实工作标签(📖 读书自习 / 🌐 上网自学 / 💬 陪你聊天 / 或任务台账里的真实任务名),工作时一抹"专注"表情、娱乐动作自动让位——不再"一边陪你干活一边自顾自蹦跶" - **🗣 方言全量升级**:四川 / 河南 / 东北 / 山东 / 北京 提升至与粤语、台湾腔**同权**——各自独立识别正则 + 特征词 + 真人方言神经语音(edge-tts);北京无独立方言音优雅回落普通话。你回复里的方言词会驱动 TTS 自动切对口音 - **🧮(v0.28.0)神经符号混合推理层 + 记忆路由器**:数学应用题按语义选脑——百分数/绳长/涨跌链等由符号层精算, 不再"算错还强行纠正";记忆按问题语义路由注入,越聊越准 - **🔍(v0.28.1)全面复查修复**:粤语同音字(宜家/既/吾/系)识别修复(答非所问根治)、 "变笨/方言失效/朗读退化"逐条查清修掉,11 条普通话负样本守零误判 ### v0.27.1(2026-09-09)· 真实系统操作 + 能力判定 + 难度自适应分裂 - **🛠 真实系统操作**:"删掉桌面上截图文件夹"→ 真删(**移入回收站**可恢复); "清理电脑垃圾"→ 先扫描只读报告 → 弹窗确认 → 只清白名单临时目录里 2 天以上的旧文件, 正在用的跳过并如实计数。Windows/程序目录/盘根硬拒(怎么问都不删) - **🧭 能力判定(非预设机制)**:需求先判定——有工具直接做 / 学过就用学到的真做 / 不会但可学就先上网学再真做 / 真做不了说明真实原因(如"关机需要物理动作")。 **绝不再编造"清理完了"这种没执行的话** - **🧬 难度自适应分裂**:简单任务主体直接干;复杂任务拆子步骤逐个执行+台账+主体复核; 破坏性操作主体亲自执行且必须用户确认 - **📋 执行台账**:每个真实操作记录 时间/对象/原因/结果;问"你真的删了吗?怎么验证"→ 直接亮台账 - **🛡 防幻觉兜底**:系统提示诚实守则——没有真实执行成功,绝不允许说"已完成" ### v0.27.0(2026-09-09)· 数学脑 + 多模态 + 量子策略 + 四大趋势 - **🧮 数学脑 mathlab**:"帮我分析这个表格"→ 真算:回归(R²)/描述统计+离群/相关性/方程组/拓扑排序/最短路/连通分量/马尔可夫稳态,结论一句话中文给出 - **👁 多模态感知(Phase B)**:图片拖进聊天框/直贴截图 → 本机视觉模型看图(不上云零成本),下条消息带着图理解;语音转写 faster-whisper→Vosk 降级链 - **⚛ 量子策略(Phase C)**:候选策略=叠加态,退火测量选路——早期多探索、随经验收敛最优;同族干涉让经验泛化;情绪作外场偏置(急躁→直给);成败回灌形成决策闭环 - **🔀 多模型路由**:闲聊走本地 Ollama(快)、干活走 DeepSeek(强)、评审走本地交叉校验,本地不可用自动回落 - **🔁 团队自检重试 + 🕸 拓扑校验**:单步异常/空壳/过短 → 自动重试 + 质量自检;流程支持 deps 依赖,环依赖/越界/自环校验不过不准跑 - **🏗 经验沉淀 + 🧠 项目级跨会话记忆**:项目跑完沉淀流程模板一键复用;团队执行自动注入项目档案 - 冒烟:mathlab 29 · phaseA 22 · trends 29 · bc+拓扑 29 · UI 回归 105 = **全绿** - **📎 @引用真正可视化**:输入框打 `@` 弹出可引用文件快选(最近产物/资料库/本地文件,↑↓+Enter 选择、继续打字过滤),选中后消息里落成 `@路径`、**输入框上方出现 📎引用条**(点 ✕ 移除,输入框里的引用写法同步清掉);支持 `@“含空格路径”` 引号写法;引用正文只进模型上下文,"你"气泡保持干净 - **🐛 修复 "@小U 被瞎聊"**:找不到的引用不再原样丢给模型(旧版模型见到 `@小U` 就当打招呼),纯引用消息找不到会明确提示并剥除标记;长文本/代码里的 `@` 不受影响 - **📎 @引用补齐**:@完整路径 / @文件名(按名在常用目录搜索兜底)/ @资料词条 → 读进上下文;找不到会提示怎么用 - **🏢 团队=真公司项目组**:新项目=空白(成员与流程亲手组建);每项目独立编制、可编入/移出成员(人才库保留);切换项目呈现各自 成员/流程/任务状态✅⚠️○/历次效果档案;跑完状态自动回写;聊天"让团队做X"仍一键开工 - 冒烟:全系回归绿(v0261 26 · v0262 22 · v0260 39 · v0250 33+33 · v0240 57+15 · v0231 26 · v022x/v0190) ## v0.26.2(2026-09-08)· 干活报错修复 / PASM 记忆情感真正调制 / 表格同文件精准续改 - **🐛 修复干活报错**:能力问答 8 个快捷锚点漏包列表导致的 `str.join()` 崩溃(一句话修复) - **❤️ PASM 记忆情感真正可感知**:情绪词表扩到 40+(口语/抱怨/报错都会拉动心情);情绪反馈不再被随机步稀释、撞顶;心情翻译成「此刻口吻」注入每条回复(开心→轻快、低落→放轻、急→直给重点);做表格/方案/PPT/开发时自动带上与你相关的记忆与偏好 - **📄 表格/文档/PPT 同一文件续改**:同会话反复改改的是同一个文件——把上一版完整内容喂回模型(不再整篇重写成不相干内容)→ 覆盖写回;"另存/新做一份"才另开;产物记忆随会话持久 - 冒烟:v0262 新增 18 项全过;v0261/v0260/v0250/v0240/v0231/v0230 全回归绿 ## v0.26.1(2026-09-08)· 五连真机修复(体验/打开软件/任务并发) - **🩺 健康状态不再占屏**:自检自愈收成底部一条小卡,自动动态区回归主位 - **👥 团队页卡片化**:项目条 → 成员/流程两卡 → 开工区;成员行带 ★评分,单击员工卡打分、右键辞退 - **🎓 技能三层落地**:新增 🎯专家2(内容导演/数据分析师)+ 🔌连接器3(联网/本地文件/办公文档);添加向导可选类型 - **📂 打开软件真启动**:修复"说打开了其实没有"——称谓前缀剥离+品牌安装路径真实探测+启动后进程真验证,绝不口嗨("小U,帮我打开网易云音乐"现在真能开) - **⏳ 任务不丢回复**:真机"只有提问没回复"根因修复——重活开工有提示、切走再回来结果当场显示、收尾全程兜底写回原会话 - 冒烟:v0261 新增 25 项全过;v0260/v0250/v0240/v0231/v0230 全回归绿 ## v0.26.0(2026-09-08)· 项目台账精准重调 / 真实文件开发 / @引用与/指令 - **📒 项目级台账**:文案/表格/PPT/开发每个项目都有记录(需求史+每轮改了什么+冒烟+你的规则); 续写时自动把台账带进上下文精准修改——不再"牛头不对马嘴" - **🛠 真实文件开发**:`/开发 需求` 或"用php/java/vue/go/c#/c++ 开发…"→ 选目标目录真实落盘 (8 种语言脚手架 + 逐文件生成 + 按语言静态冒烟),产出自动记台账,"改这个项目"精准续改 - **📎 @引用**:消息里 `@文件路径` / `@资料词条`,自动把内容带进上下文 - **/️⃣ 指令**:`/开发 需求` · `/技能 技能名 需求` · `/项目`(看台账) - (v0.25.0:公司式项目组·聊天提速·自愈纯后台 · 见 CHANGELOG) - **👥 公司式项目组**:项目空间保存目标+流程+历次产物;成员=点开看职责与评分的智能体员工卡; 流程拖拽排序、双击改任务;🌐网上招聘(抓岗位资料自动提炼员工卡)、🎓技能库选才; 每步表现自动评分——分低就换更好的成员 - **⚡ 聊天提速**:双脑协同只在写代码/写作等重活时启用,闲聊问答单次直出,首字延迟大幅回落 - **🩺 自检自愈纯后台**:静默自动运行不打扰,自动化页只留「查看健康状态」按钮 - **🎓 技能三层化**:🎯专家 / 🎓技能 / 🔌连接器 类型标注与筛选 - **🔧 安装器根除 MoveFile 错误 5**:升级先清空程序目录(保留 data)再全新复制,不再替换旧文件 - **🧬 PASM 核心引擎同频(0.5.0)**:多智能体团队与自检自愈真身移入引擎执行皮层 `pasm.cognitive`,桌面端为兼容门面,二者共用同一实现 - **👥 多智能体技能团队**:内置 PM/策划/调度/开发/审查/调试 六角色卡,可自添加"员工卡"组成自定义流程; 聊天说「让我的团队做 X」自动开工,审查不过自动返工、失败自动重试,过程全程可视 - **🩺 自检·自定位·自修复**:启动静默巡检日志崩溃栈记入故障案例库;可出文件+行号级诊断报告; 建议/自动修两档——自动修=补丁→冒烟回归→不过自动回滚(安全阀把守,安装版强制建议档) - (v0.24.0:方舟404修复·主题加固 / v0.23.0:DeepSeek式闲聊门·排队并发·PASM×LLM真协同——详见 CHANGELOG) ## 它和普通聊天 AI 有什么不同 普通 AI 每轮对话都是"重新开始",它不记得你、也没有"自己"。 PASM Studio 是 **双脑结构 + 认知执行皮层**: | 部分 | 负责 | 结果 | |---|---|---| | **语言脑**(DeepSeek / 任意 OpenAI 兼容 / 本地 Ollama) | 听懂你、组织回答、反问 | 像真人一样聊得来 | | **PASM 认知脑**(本地,离线运行) | 每次对话 → 情绪波动、性格漂移、分层记忆 | 真的会长大、真的记得你 | | **认知执行皮层**(v0.15 新增) | 开口前判断意图/心情 → 决定姿态与语气;按话题自动想起相关经历 | 不再"千人一面",记得上次怎么干成的事 | ## 从 v0.16 起积累的能力(0.16.0 起步,以上 0.16.1–0.16.7 持续更新) **聊得更顺手(界面大改)** - 输入框上方 **[💬 聊天] / [🔧 干活]** 分栏:聊天模式绝不会因为提到 "做个应用/写个脚本"就擅自动手,想让它干活时一键切到干活模式——动不动手由你说了算 - 多行大输入框(Enter 发送 / Shift+Enter 换行);顶部可随时**切换大模型** (云端 DeepSeek / 本地 Ollama 各模型任选,选择会记住) - 左侧**会话列表**:每条消息实时保存,聊天内容永不丢;新对话/切换/重启后 都能点回旧会话继续聊 **学得更真(知识库 v3 + 自主进化)** - 每条知识 = 全文 + 要点 + 来源;**学到 = 原文入库**——自学会多源搜索并抓全文存库, 提炼要点只是学完后的速记索引,绝不会因"要点提炼不出"把内容丢掉(v0.16.5 起) - **资料库可直接读原文**:双击条目/书架打开全文阅读器,翻看它真正学到的整篇内容, 支持关键词过滤(v0.16.5 起) - 自动上网自学默认开启,主题由"好奇心选题器"自己挑(避开已学、延伸进阶); 学后自测 3 问,答不出如实记入"待弄懂"清单,不假装学会 **本事可扩展(技能系统)** - 随时给它在数据目录里添加新技能(名称+说明+规程),干活时自动检索调用; 内置视频脚本创作 / 营销文案 / 漫剧一条龙示例 - "帮我写个短视频脚本"→ 走创作技能产出分镜表,**不再误入写代码** **会记得(分层记忆)** - 工作记忆:正在聊的话题 + 正在推进的目标(退出时落盘,重启接得上) - 情景记忆:每 8 轮 / 新会话 / 退出时自动归档一段经历,跨会话按话题自动召回 - 程序记忆:干完活自动记一笔"要什么→用了什么→成没成→教训",下次同类任务自动想起 **会干活(上下文与工具打通)** - 读你电脑上的文件并总结/分析/找关键信息(txt/md/docx/xlsx/pdf/代码…) - 读文件夹:列出内容并抽取可读文件,"分析一下 D:\某文件夹 里的文件"直接可用 - 打开电脑应用(微信/计算器/记事本/PowerShell…)与聊天里提到的路径 - 上下文关联:读完说"帮我分析刚才那个文件 / 那个文件夹"能定位 - 写并运行脚本;报错会**自动带错修复重跑一次**(计划-执行-验证环) - 生成 PPT / Word / Excel 文档;全栈项目开发(前端+后端+数据库) - 上网自学新主题,所学知识反哺聊天专业度 **会成长** - 情绪随相处变化、性格随经历漂移、发育阶段从婴儿期长到成年期(桌面小人同步变化) **更稳** - 移除 Win7/8 与 PyQt5 向下兼容(最低 Windows 10):旧系统在**安装阶段**即被 明确提示;启动错误改为可读中文说明并落 crash.log,不再"双击后只闪一个谜之错误" - 正常退出不再误弹"错误 0";安装包约 51MB(无 torch 环境自动用内置轻量认知体) ## 下载与安装 最新版见仓库 **Releases**(v0.31.28): 1. 下载安装包。**GitHub / GitCode** 上下载 `PASMStudio-Setup-0.31.28.exe`(单文件整包); **Gitee** 上是**分卷版** `PASMStudio-Setup-0.31.28-gitee.exe` + `.bin` 切片 —— 请把 `.exe` 与**全部 `.bin` 分卷下到同一个目录**,然后直接运行 exe 即可 (安装程序会自己找同目录的分卷,**不需要手动合并**)。 2. 双击安装 → 打开 PASM Studio → 点右上「设置」填 LLM Key(或留空用本地 Ollama) 3. 开始聊天;要用「图像/视频/漫剧」真出片时,首次使用按提示接入出图引擎(约 1 分钟) > **macOS / Linux 下载**:本版未重出(需要在 CI 上构建,本机不能交叉编译); > 可用上一版 **v0.31.1** 的 `.dmg` / `.tar.gz` / `.deb` —— 请到 > **[GitCode Releases](https://gitcode.com/arronzheng/pasm-qclaw/releases)**(国内速度最好) > 或 [GitHub Releases](https://github.com/arronJack/pasm-qclaw/releases) 下载,那里是**整包单文件** > (**不需要 `cat` 合并分卷**)。Gitee 侧只放 Windows 分卷版,不再放 macOS/Linux 包。 > 安装指南见 [`desktop/INSTALL-macos.md`](desktop/INSTALL-macos.md) 与 > [`desktop/INSTALL-linux.md`](desktop/INSTALL-linux.md)。 > 系统要求:**Windows 10/11 x64**(v0.16 起不再支持 Win7/8)· CPU 即可 · 首次安装解压约 1 分钟 > 未填任何 Key 也能用(本地演示模式:同样会记忆与成长,只是话术朴素) > 历史版本与更新记录见 [CHANGELOG.md](CHANGELOG.md);升级通道检查仓库 `latest.json`。 ## 设置语言脑(一句话) - **DeepSeek**:填官网 API Key,Base URL 保持 `https://api.deepseek.com/v1`,Model `deepseek-chat` - **本地免费**:装 [Ollama](https://ollama.com) 后 `ollama run qwen2.5:7b`, 设置里 Base URL 填 `http://127.0.0.1:11434/v1`、Model 填 `qwen2.5:7b`——完全离线 ## 数据与隐私 - 记忆/配置/成长存档在 `%APPDATA%\PASMStudio`(卸载不删除,可随时清空记忆) - 单机运行,不上传你的对话与文件(仅 LLM 调用本身走你配置的 API) ## 路线图(下一步) - [ ] **自省训练闭环**:把真实交互沉淀成经验样本,反哺人格成长与轻量模型微调 - [ ] 语音对话打磨 / 云端同步 / 性格报告主页 ## 生态与说明 | 仓库 | Gitee | GitHub | 定位 | |---|---|---|---| | **PASM**(私有) | [gitee.com/arronzheng/PASM](https://gitee.com/arronzheng/PASM) | [github.com/arronJack/PASM](https://github.com/arronJack/PASM) | 核心认知引擎 + 认知皮层 + 桌面全源码 + 文档(开发主仓镜像) | | **pasm-qclaw**(本仓库,公开) | [gitee.com/arronzheng/pasm-qclaw](https://gitee.com/arronzheng/pasm-qclaw) | [github.com/arronJack/pasm-qclaw](https://github.com/arronJack/pasm-qclaw) | PASM Studio 产品发布:Releases 安装包 + 更新通道 + 文档 | | **PASM-Lite**(公开) | [gitee.com/arronzheng/PASM-Lite](https://gitee.com/arronzheng/PASM-Lite) | [github.com/arronJack/PASM-Lite](https://github.com/arronJack/PASM-Lite) | 零 token 认知最小实现的教学版(约 260 行单文件,可读可改,MIT) | 产品当前为闭源发行(公开仓库分发编译产物与更新通道)。 开源计划(2026-09 拟定):**pasm-qclaw 开发主仓后续开源**,供大家一起研究 桌面产品与双脑结合;**PASM 完整引擎 + 认知皮层暂不开源**,待进一步优化扩展后再议。 研究理念与教学代码可先行阅读 [PASM-Lite](https://gitee.com/arronzheng/PASM-Lite)。 问题 / 反馈 / 合作请提 issue——**主要归口 GitHub**([issues](https://github.com/arronJack/PASM/issues)),Gitee 同步镜像也会看。 > **商标说明 / Trademark**:「PASM Studio」名称与品牌标识归 arronZheng 所有。 > MIT 许可授予的是代码版权而非商标权——Fork / 再分发请更换名称与标识。 > The name and branding of "PASM Studio" belong to arronZheng; the MIT license covers > the code, not the trademark — please rename your forks. --- # English · PASM Studio — A Desktop AI Companion That Thinks, Works, and Remembers You (Windows) > **It never loses what you typed, and never claims to have done something it didn't** — Chat right out of the box: it thinks, **Works with zero API keys**: it auto-detects a local [Ollama](https://ollama.com) install (qwen/llama models) — your machine *is* the server. A DeepSeek key unlocks even better conversations (see *LLM setup* below). ## Latest: v0.31.28 (2026-10-13) · Fix: "I already gave you the photo" + detail images split per screen - **① It now understands "the image above" (headline)**: you fed a product photo, then a bit later (or **after restarting the app**) said "**for the necklace in the image above**, give me five main images" — and it replied "no usable product photo", even though you had just given it one. The cause: the "just-fed image" lived only in **memory**, so a restart wiped it, and the app never understood phrases like "the image above". Now fed images are **kept** (surviving a restart), "the image above / that photo / this image" is **resolved automatically**, and it **tells you which photo it used**. When nothing can be found it no longer just says "no photo" — it **lists** the images already in your picture folder so you can reply "use XX". - **② Product name and keywords are no longer extracted wrongly**: for "the necklace in the image above ... also 10 detail images", the product name used to become "**also 10 detail images**" (poisoning the folder name, title and spec table), and keywords came out as **sentence fragments** like "the item in the im / I need you to". Now the product name is taken from a **category noun** (find "necklace" → use "necklace"), and keywords are **written by the model** (real search terms buyers type), falling back to a per-category word list only when no model is available — **your sentence will never be used as keywords again**. - **③ New "Accessories / jewellery" category**: necklaces used to fall into "generic", so the spec table showed model/origin and the qualification list was generic too. Now there is a jewellery table (material / chain length / pendant size / weight / certificate included / packaging) and qualifications such as S925 marking, test certificate, allergy & wear notes, care instructions. - **④ Detail images can be split per screen into N images**: the detail area supports multiple uploads, so **you get both** — the single 750px-wide **detail long image**, plus a set of **per-screen detail images**. Say "10 detail images" and you get **exactly 10**. > **Verified**: `ecom` self-test 83/83 · renderer self-test 43/43 · new end-to-end > `verify_v0328_ecom_fix` **31/0** · re-run with a real necklace photo: 12 assets, 4.70MB > (including a 13.3s main-image video). ### v0.31.27 (2026-10-13) · New "🛒 E-commerce" — one product photo in, a full Taobao/JD listing out - **① New "🛒 E-commerce" work mode**: drop a real product photo into the chat (or use + → image), add one line of product info (e.g. `padded warm jacket, waterproof fabric, brand: XX, price: 199; for JD`), and a full set of listing assets lands on disk. - **② 12 assets per run**: **5 main images** (white-bg / scene / selling-point / detail / spec, 800×800) · **3 close-up & detail crops** (800×800) · a **750px-wide detail long image** · a **main-image video** (1:1, subtitled, narrated) · listing copy (title / keywords / 5 selling points / short & long copy / live-stream script) · a plan document. - **③ Professional background removal**: gradient backgrounds are cleanly cut, no white fringe left behind, and the product's **drop shadow is preserved**; light-coloured products get a hairline outline so they don't "vanish" on white. - **④ Main-image video**: white-bg push-in → scene pan → selling point → detail cut → spec outro, with transitions, burned-in subtitles and narration. If the machine has no video tool, you get a **zero-dependency preview player** first (same motion and captions) — never "I made a video" with nothing there. - **⑤ Detail page grows from 7 to 12 screens**: benefits / how-to-use steps / FAQ / logistics / qualifications, plus **3-layer SEO keywords**, **3 title variants for A/B**, and a **4-part live-stream script**; titles are **auto-fitted to the platform character limit** (1 CJK glyph = 2 chars). - **⑥ Prohibited-word check**: extreme claims, false promises, medical efficacy, financial returns — each hit comes with a rewrite suggestion. > **One rule**: the product itself is **never redrawn by AI** (marketplaces flag it as "image-text mismatch"). > Main / close-up / detail images are **composited from your real photo**; AI is only used for optional > scene backdrops. **No real photo → no images at all**, only the plan and copy. ### v0.31.26 (2026-10-10) · Fix: weather lookup picked the wrong city - **① "Guangdong, Foshan" no longer reports Beijing.** City parsing used to fall back to a hard-coded default silently — which looks like the assistant is making things up. Now, if you named a place and it can't be found, it says so; the default is only used when **no** place was mentioned at all. - **② Many more phrasings are understood**: comma-separated ("Guangdong, Foshan"), with province/city suffixes ("Guangdong Province, Foshan City"), and later additions such as "by the way, I'm in ...". - **③ No more same-name small places**: in the geocoding database "Foshan" resolves to a village in **Yunnan**, and "Shanghai City" ranks a **US** town first. Results are now scored on province + administrative level + name. - **④ Network hiccups are retried** — a transient SSL error used to fail the whole lookup. > **Verified**: new weather-specific self-check (11 offline assertions on candidate extraction + > 2 live queries) · all 8 real-world phrasings correct · desktop suite 1514+ assertions · > mirror guard 20/0 · zero undefined names. ### v0.31.25 (2026-10-10) · Fix: saying "open NetEase Cloud Music" played an mp3 instead - **① App names are no longer mistaken for file types (headline)**: saying "open NetEase Cloud Music" used to be parsed as "find a music file" — because the sentence contains the word *music* — and opened an unrelated `.mp3` from a source-code checkout. Now **app names win**: you get the app you asked for. The same class of bug (type-word colliding with an app name, e.g. Tencent Video / Image Viewer) is fixed too. (This was a regression introduced in v0.31.4, which is why it *used to* work.) - **② File search is safer**: "open the music on drive E" no longer surfaces sample audio from a code repository, and "open that Word doc on drive D" no longer opens the app's *own* template. - **③ Pet animation is stable again**: the on-demand frame rate introduced in v0.31.24 could stall the animation in edge cases — fixed, **with the visual speed unchanged**. - **④ Also fixed a latent crash** — a `sys` that was never imported in `agent_tools` (only blows up at runtime, not at compile time). > **Verified**: desktop self-check suite **1514 assertions passing** (the three animation suites > fixed this round: 94/0), intent regression across 26 instructions, permission self-test 19/19, > mirror guard 20/0, zero undefined names, frozen-build startup smoke PASS. ### v0.31.24 (2026-10-10) · Opening apps no longer blocked + a lighter UI - **① Opening apps no longer needs confirmation (headline)**: saying "open NetEase Cloud Music" or "open the browser" used to be treated as a *high-risk operation* and blocked — sometimes with a "no confirmation channel available" reply. Now **opening an app / file / folder / browser just runs** — only irreversible actions like deleting still ask you first. (Risk tiers now follow a single rule: *can it cause an irreversible effect?* Launching a program is zero-side-effect.) - **② More reliable confirmation dialog**: if 小U was buried behind other windows, you never saw the prompt and it auto-declined on timeout. The dialog now **jumps to the foreground**, the timeout is raised from 60 s to 90 s, and a timeout is recorded separately from an explicit "No". - **③ Lighter on resources**: the desktop pet used to repaint a fixed 20 times per second, and **every frame ran a software 3D render** — idling alone cost roughly 10 % of one CPU core (doubled when both the chat-page pet and the desktop-float pet are visible). It now uses an **on-demand frame rate**: 20 fps while talking / walking / flying / interacting, 10 fps when idle, and it **stops painting entirely** when the window is hidden or minimized. All animation increments are driven by real time, so **the visual speed is unchanged**. > **Verified**: permission self-test 19/19; in the default safe tier all open-* tools pass through > while `run_script`/`delete` still prompt; pet idling 15.8 fps → 9.0 fps with animation-speed drift > of only 0.6 %; static gate reports 0 undefined names. ### v0.31.23 (2026-10-08) · Critical fix: cloud models were broken in 0.31.22 - **① Cloud-model fix (most important)**: the 0.31.22 installer accidentally shipped without the OpenAI cloud SDK — after installing 0.31.22, **all cloud models (DeepSeek / OpenAI gateway) were unusable**, falling back to local Ollama only. This release bundles the SDK again. **0.31.22 users should upgrade immediately.** - **② Experimental V2 engine**: the tri-validation safety layer read the wrong key, so V2 tool proposals were **always rejected**; engine axis bumped to `2.0.0a12`. - **③ Code generation**: spring-boot project-type misdetection and step-budget starvation fixed. - **④ Prevention**: a new **frozen-build dependency integrity guard** verifies key dependencies actually landed in the package, so "missing dependency" releases can't slip through again. ### v0.31.21 (2026-10-05) · Reliability fixes for the generation pipeline (H:\geo evidence) This release plugs the systemic reliability holes that let broken generated code slip through: verification is no longer a no-op (it really checks Java brace balance / Vue tag closure), the run ledger no longer reports "built successfully" when nothing was actually built, multi-file output no longer garbles/ nests (fixes Report.vue splice + frontend/frontend nesting), and Java projects auto-adapt to the local JDK (JDK 8 → generates Java 8 / Spring Boot 2.7 compatible code). See [CHANGELOG](CHANGELOG.md). ### v0.31.20 (2026-09-30) · "Continue" now actually works, no more repeated "already running", real scheduled shutdown - **① "Continue" no longer produces nothing**: logs show the continuation router **did** resolve `D://geo`, but that folder was **empty**, and the old code still treated it as "edit existing" (`update_project`) → nothing to edit → **zero files produced**. Now an empty folder means **build from scratch**, and the output folder is guaranteed to be the one you named. - **② "The pet is already running" no longer spams**: 11 "log start" lines in 4 minutes — the old code only showed a message box and exited, **never bringing the existing window to the front**. Now a duplicate launch **notifies the running instance to raise its window**; plus **stale-lock self-healing** (a leftover lock after a crash used to require rebooting). - **③ "Shut down" is no longer turned into a project**: saying "shut my PC down at 7:30pm" was classified as *start building* (it contains "help me") and literally **created a project folder named after that sentence** (app.py / index.html / scheduler.py…). Now power actions are a real feature, reminders reuse the existing reminder engine, and open-folder / weather / tidy-up are no longer treated as builds — while "build me a shutdown app" still correctly starts a project. - **④ Real scheduled shutdown**: "shut down at 7:30pm" or "in half an hour" → one confirmation → a **system-level countdown** (works even if the app is closed). Cancel by saying "cancel shutdown". If this machine's policy forbids power commands, it **says so honestly** and gives you the exact command to run yourself — never pretending it was set. - **⑤** "Close WeChat / WeCom / DingTalk / Feishu" now works (a hard-coded whitelist; unknown names are refused rather than guessed — killing processes is irreversible). > **Verification**: 8 guard suites, **304 checks, all green** — including counter-examples so the fix > cannot degrade into "does nothing". > **Download**: Windows via the Releases of this page (on Gitee it is a **split archive**). > macOS / Linux builds are attached to the same tag on **GitHub / GitCode**. Also includes every fix from **0.31.19 / 0.31.18 / 0.31.16 / 0.31.15**. ### v0.31.19 (2026-09-30) · "Generated files are unusable" fixed: no more phantom project folders, no more markdown fences inside files **Your two reports at 17:09 share one root cause**: model output was written to disk / used as a path name **without sanitisation**. - **① "The generated geo files are not in the folder I specified"** — in `chat_last.json` you said "keep working on **this project**", but the old logic only treated bare phrases like "continue" as *continue the previous task*. With an object attached it was classified as a *new request*, and the project-name extractor picked up **the pronoun "this project" as the name** — so it created a **new folder literally called `这个项目`** (57 files) under `PASM工作\project\`. **Now**: "continue/finish/polish + this project / this app" are all recognised, while "continue building the NotebookApp" is still correctly treated as a new request; **a pronoun can never become a project name** — if no name can be extracted it falls back to your **current project folder**; and if there is genuinely nothing to continue it says so explicitly and offers two ways out, **never inventing a folder from a pronoun**. - **② "Java files contain ```java, comments are Python style, and a trailing ```"** — on your machine **24 of 26 .java files started with ```java and ended with ```** (the model wrapped each whole file in a markdown code block) and the old code wrote them **verbatim**; some also used `# comment` in `.java`, which is not a comment in Java and breaks compilation. **Now**: everything is sanitised before writing — paired leading/trailing fences are stripped (**normal code-block examples inside README files are untouched**), leading `#` comments in `.java/.kt/.cs/.go` become `//` (**JS private fields like `#count` are left alone**), and the app **tells you what it changed** instead of silently editing your files. Applied at **three exits**: parsing, the **single write exit** (defence in depth) and the tool-call loop. - Also fixed: "build an appointment system called 「Hive」" used to fail name extraction and take the **whole sentence** as the project name. > **Verification (re-runnable)**: 7 guard suites, **236 checks, all green**. The two hardest ones — > ① feed fenced content **straight to the write exit, bypassing the parser**, then **read the bytes on > disk** (never trusting the return value); ② feed your **verbatim sentences** ("keep working on this > project", 4 variants) and assert they resume the real requirement and that **no extra folder appears** > under `project/`. > **Download**: Windows via the Releases of this page (on Gitee it is a **split archive**: put `-gitee.exe` > and all `.bin` parts in the **same folder** and run the exe — **no manual merging needed**). > macOS / Linux builds are attached to the same tag on **GitHub / GitCode** (dmg / tar.gz / deb). Also includes every fix from **0.31.18 / 0.31.16 / 0.31.15**. ### v0.31.18 (2026-09-30) · "It actually works now": agent execution core + heavy tasks auto-escalated to the cloud This release answers your last report directly: *"I asked it to continue developing the GEO platform and it did nothing."* We traced every root cause (full diagnosis: `docs/qa/2026-09-30-开发栏目零动作根因诊断.md`) and turned the "do work" path from *say-a-sentence-and-hope* into **a real loop with verification, retries and an audit trail**: - **① "Continue" is no longer a dead end** — four root causes fixed at once: the continuation router only looked for a same-named folder under the work root (the project actually lives in `PASM工作/project/`), the real requirement was overwritten by the bare phrase "continue", a >8-minute gap was treated as small talk, and empty output (0 files) was still recorded as a "round of output". - **② No more pointing you at a feature that does not exist** — 0.31.16 told you to say "step-by-step generation" while that feature was **never implemented**. It exists now, and you do not even have to ask: it kicks in automatically when the one-shot output is incomplete. - **③ Staged development (the core of this release)** — first a **deterministic skeleton** lands on disk (Spring Boot `pom.xml` / main class / `application.yml`; full Vue + Vite set incl. an `/api` proxy; Python/Node skeletons; README with the correct start command per stack), then the model fills **one file at a time**, with syntax/build verification **after every step** and error-fed retries. Files it cannot fill **keep a runnable skeleton and are reported honestly** — never a fake "it's built". - **④ Real write → run → read-error → fix loop** — the build command is really executed, stderr is fed back verbatim, only the failing file is rewritten, then it runs again (only when the toolchain and dependency cache are ready, so a first `mvn` run cannot freeze the UI). - **⑤ Heavy tasks auto-escalate to the cloud** — for dev/long-form work, even a manually selected local model is escalated to the cloud API, with the reason written to the log (switchable via `auto_escalate_heavy`). Without a cloud key it falls back to staged generation instead of pretending. - **⑥ The model can now "see" the project** — cloud system-prompt budget 1800 → **48,000 chars**, plus a **project file map with symbol summaries** and relevant file snippets, so editing an existing project is no longer a rewrite. - **⑦ Permission gate moved down to the tool layer** — writes / script execution / deletions are risk-classified; on the *safe* level high-risk actions **pop up a confirmation** (declining means it will not run), and every decision is audited. - **⑧ It learns from failure** — automatic attribution (model stall / format / path / permission / toolchain / syntax / build / timeout …) recorded as "known pitfalls" and injected into the next similar task. - **⑨ One-click diagnostic bundle** — per-turn trace + log + operation ledger + failure book + **masked config** zipped into a single file (keys never leak). - **⑩ Long tasks can resume and cancel** — progress is persisted; after a crash or reboot, saying "continue" resumes from the next step. - **⑪ In-place Office editing** — change one spreadsheet cell (**keeping its style**) or replace text in docx/pptx without regenerating the whole file. - **⑫ Capability benchmark** — 8 fixed tasks, one command, currently **8/8**. > **Download**: Windows via the Releases of this page (on Gitee it is a **split archive**: put `-gitee.exe` > and all `.bin` parts in the **same folder** and run the exe — **no manual merging needed**). > macOS / Linux builds are attached to the same tag on **GitHub / GitCode** (dmg / tar.gz / deb). Also includes every fix from **0.31.16 / 0.31.15**. ### v0.31.16 (2026-09-30) · Full fix batch from the GEO-platform retest: stray writes / throttled dev / false success **This release fixes the whole batch of issues you hit when you asked for a SpringBoot+Vue "GEO optimization platform" in a `D:\` folder.** 0.31.15 rescued the "🖥 Dev" mode from crashing, but the real-machine retest exposed a second layer: files landing in the wrong places, the project not built as asked, and a cheerful "it's done!" for a one-file stub. Five new root causes, all fixed: - **① "D drive" is understood now**: "create a geo folder on **D drive**" was not recognized → the target was empty → the project name fell back to the literal words "geo文件夹" and everything landed in the default workspace. It now resolves to `D:\geo` (literal paths still win), name `geo`. - **② Dev work is no longer throttled (the key fix)**: the dev task was treated as chat and its per-turn length was clamped from 3000 down to **720 tokens** ("60-second target") — a full-stack project was cut off right after `pom.xml`. Dev now has its own budget: **8000 tokens per turn, 10-minute target, three continuations**, so backend + frontend + config can land in one pass. - **③ No more false success**: generating a single file used to answer「🏗 项目搭好了!共 1 个文件」. Now, for "front-end/back-end separated" requests, fewer than 3 files **honestly reports failure** and offers two ways out: add a cloud API key in *Settings → Model* and resend, or say "generate step by step" and I'll build backend → frontend → database one block at a time. - **④ No more stray paths**: models sometimes emit a drive-lettered path (`D:/geo/pom.xml`); the old code joined it in a way that dropped the project prefix and wrote straight to the drive root (registry vs. real location "split personality", plus a path-escape hole). Paths are now **normalized back into the project directory**, and `..`-containing paths are rejected outright. - **⑤ Startup commands match the stack**: Maven/Spring Boot projects get `mvn spring-boot:run`, front-end projects get `npm install && npm run dev` (read from `package.json` scripts: dev/serve/start) — instead of only looking for `.py`/`.js` entries and giving up. **Plus two more**: the self-check now stops immediately on generation-layer pollution or when most files fail syntax checks (180-second budget overall — no more six-minute "verifying…"), and the installer's file-properties version number is finally correct (it used to be stuck on 0.31.14). > This release also bundles **V2 cognitive engine 2.0.0a11** (contract 1.2 — new optional surface: > LLM bridge / speech outlet / growth application) and every fix from 0.31.15. ## v0.31.15 (2026-09-30) · Hotfix: the "🖥 Dev" work mode was broken end-to-end **If you tried the "🖥 Dev" work mode on 0.31.14**, you found it essentially unusable: "error executing tool" on the first turn, your "put the files in H:\geo_plaform" instruction ignored, SpringBoot+Vue requested but Python + a single HTML page delivered (with a hallucinated Django), and finally a whole prose paragraph dumped into `main.py` as code → SyntaxError. This release fixes **all five real root causes** in one pass (reproduced on a real 0.31.14 install → root-cause each → fix → dual smoke acceptance on the frozen build): - **① No more first-turn crash**: a renamed vendored dependency package intermittently failed metadata lookup in the frozen environment (`No package metadata was found for httpcore2`), killing the dev agent's first turn. Now defensively handled — no more raw errors. - **② Files go where you say**: "put the files in H:\geo_plaform" now **actually lands there**, including paths that don't exist yet, instead of silently creating a garbled project elsewhere. - **③ Project name no longer garbled**: with an explicit directory, the project name is the directory name (`geo_plaform`) — not a random fragment of your sentence. - **④ Tech stack follows your words**: asking for SpringBoot+Vue now really scaffolds SpringBoot 3 + Vue 3 + Vite; no more locked-in "single HTML + Python" and no hallucinated Django. - **⑤ No more prose-as-code on disk**: when the model's output degrades, the old version wrote an entire prose paragraph into `main.py` (guaranteed SyntaxError); now it **retries once with the strict format** and, if that still fails, **tells you honestly** instead of dumping junk. - Acceptance: real frozen-installer startup smoke passed with **0 crash signatures**; the fix logic passed unit self-tests (path detection / project name / stack detection / 3 output formats). - Everything else matches v0.31.14 (V2 engine, per-turn error hotfix, etc. all retained). ## v0.31.14 (2026-09-29) · Hotfix: with V2 enabled, every turn replied "something went wrong on my side" **If you are on 0.31.13 with "Experimental: enable V2 cognitive engine" ticked**, you hit this: every turn replied only「(我这边出错了,没有成功回应你…错误:'NoneType' object…)」and the growth pass failed too — so it felt like it was **getting dumber**. This release fixes it. **V1 users are unaffected** (not a single line of the V1 path changed). - **Three errors, three real root causes**: ① the cognitive cortex did `snap.get("personality", {})` and fell into a **Python trap** — when the key exists but its value is `None`, `.get` returns `None`, not the `{}` default → the whole reply thread died (**no reply**); ② with V2 on it still ran the GridWorld learning pass that only makes sense for V1 (**learning failed every turn** = "getting dumber"); ③ nine UI sites indexed `snapshot()["emotion"][...]` directly, so the reply **was generated but never reached the screen**. - **The fix**: V2's contract snapshot now honestly reports **what it really has** (run step / emotion / memory counts) while personality priors etc. **stay honestly absent**; the core tolerates missing sections; every UI read goes through a safe default (neutral values, never fabricated); and with V2 on the V1 GridWorld pass is skipped entirely, with emotional feedback routed through V2's own channel ("your tone affects its mood" still works). - **Also fixed why the checks were green while users saw errors**: added a probe that walks the **complete reply chain**, and proved it can catch the bug by reverting the fix (reverted → **0/5 fail**; fixed → **39/39 pass**), plus a live end-to-end check with a real local model. - Also fixed a **randomly-red old guard** (a teardown race with the local-model warm-up thread that left 11 junk dirs on this machine) — now stable across 5 consecutive runs. - Everything else matches v0.31.13. ## v0.31.13 (2026-09-29) · The V2 engine is finally "powered on": it hears you, speaks in its own words, and sleeps to consolidate memory The previous release handed you the V2 cognitive-engine switch; this one fixes the fact that **the switch was wired but the engine was never actually powered** — three connections were missing, which is why turning V2 on made almost no perceptible difference: - **① It now actually hears what you type**: previously only environment data reached the engine — **your words never entered it**, so it had nothing to predict from and remembered nothing you said. Now every line you send enters its perception layer and becomes concepts that link to each other (measured: after 12 conversational turns its memory really grew 56 association edges). - **② No more "broken record" when no cloud LLM is set**: replies used to come from a fixed keyword→sentence table, so the same input got the identical answer every time. Now the engine composes wording from **its own state** (current mood / whether this is new / what it predicts you'll talk about next / what related memory surfaced / whether it is "fast-thinking" or "slow-thinking") — **one question asked 8 times yields 8 different answers**. It only refers to things you said or things it genuinely knows, and says so honestly when unsure. It never fabricates. - **③ It "sleeps" in the background to consolidate memory**: triggered every 6 turns (millisecond-scale, on a worker thread, never blocking chat) — consolidating experience into symbols, strengthening associations, and replaying memories. On the desktop this had never run. - **Relationship to a cloud LLM**: when one is configured (the default), the engine hands its "inner brief" (emotion / prediction / associations / slow-thinking flag) to the LLM for wording — the LLM decides **how to say it**, the engine is what **actually remembers, feels, and holds boundaries**. With no LLM or offline, it uses ② above. Neither path fabricates. - **How to use it**: Settings → 🧠 Model & Thinking → tick "Experimental: enable V2 cognitive engine (pasm2)" → restart. Untick and restart to switch back (the two cores keep separate memories, so switching is safe). Everything else matches v0.31.12. ## v0.31.12 (2026-09-29) · Want to try a different "brain"? One checkbox in Settings **This release puts the PASM V2.0 cognitive engine in your hands** (experimental, off by default): - **Where**: Settings → 🧠 Model & Thinking → tick "Experimental: enable V2 cognitive engine (pasm2)" → **restart to apply**. - **What changes**: V2 is a rewritten cognitive core — it **predicts** what comes next, weaves experience into a **memory graph**, **wanders** on its own (surfacing related memories), and adds a math brain plus "slow thinking" (one extra beat when reality surprises it). - **How to go back**: untick and restart. The two cores keep separate memories, so switching back and forth is safe. - **Honest note**: V2 is still being polished. The line under the checkbox shows the engine **actually** used this session; if loading fails it falls back automatically instead of pretending. - **Nothing to install**: the V2 engine ships inside the installer. Everything else matches v0.31.11. ## v0.31.11 (2026-09-29) · Domain-advisor engine wired into 小U **Asking "how do I open a Douyin pet shop" no longer gets stale advice.** When a question falls in a known domain (Douyin/e-commerce shop opening · cross-border e-commerce · food business), 小U now: verifies current rules first (0-fee onboarding, GMV-based deposit tiers, 0-follower livestream); respects your stated premises (with a business license it will no longer suggest starting from a "personal store"); and if a self-contradiction slips through, a visible "self-check correction" note is appended to the reply. All v0.31.10 antivirus-hardening remains. ## v0.31.6 (2026-09-24) · Visible process, self-reviewing work, connectors actually wired up **This release completes the "work like WorkBuddy" story: live process → automatic self-review → fix-and-retry on failure.** ### 1. Process card now matches WorkBuddy (in both Chat and Work areas) | Display | Effect | |---|---| | **Live timer in the header** | While working: `Process · N steps · ⏳ running 36s`, ticking every second → settles on `✓ done in 2m36s`. Your scroll position is respected (no forced jump to bottom). | | **✍ Generating reply…** | Appears as soon as the first token arrives, closes itself when the reply lands. | | **Per-step elapsed time** | A grey `· 3s` on each line, so you can see which step was slow. | | **Deep thinking on screen** | Reasoning questions request thinking (small talk does not, keeping replies fast); the reasoning stream is shown live in grey. | ### 2. Deep thinking no longer gets cut off after a moment Real-world report: thinking ran for only 8 seconds / 313 characters before being force-converged. Root cause: **on slow machines (generation < 15 tok/s) the thinking budget was hard-capped at 8 seconds.** | Change | Before | After | |---|---|---| | Slow-machine thinking budget | 8 s | **20 s** | | Thinking mode set to "always on" | Still capped at 8 s | **Full 45 s** (you asked to see deep thinking — the app stops saving time for you) | | Manual budget | Not available | Say "**thinking budget 60**" to fix it at 60 s, "**thinking budget auto**" to reset, or ask "how long is the thinking budget" for the current policy | | Transparency | Log only (looked like it just stopped) | The process card states "thinking hit the budget, converging with what it has · 20s / 313 chars" | ### 3. Self-review loop (work flows now aligned with chat) | Flow | Before | After | |---|---|---| | **Script writing** | Auto-fixed once on failure | New `self_verify` module: up to **3 rounds** of "syntax check (py_compile / node --check / JSON parse) → actually run → repair with the error" | | **Project development (multi-file)** | Ran once; errors handed back to you | **Syntax check → up to 2 rounds repairing only the failing files → run → one more repair-and-rerun if the run fails** | | **Multi-step plans / cooperative review / story & manga planning** | Blank screen while the model reasoned | All now stream their real thinking | If a repair round produces no new code, the app **stops honestly** instead of pretending success or retrying forever. ### 4. Connectors genuinely wired up - **MCP status**: ask "MCP status" to see the bridge connection state and available tool list - **Automatic completion push**: sends "✅ task done" to any connected **Feishu / Discord / WeChat / Webhook** channel (unconfigured channels are skipped silently; the push runs on a background thread and does not slow the app down) - **Option cards before destructive actions**: deleting / clearing / formatting files, folders or projects asks you to confirm the scope first — text edits like "fix the typos in this sentence" are not blocked ### 5. Artifacts `PASMStudio-Setup-0.31.6.exe` (Windows, single file, ~191 MB). On Gitee the installer is uploaded as **split volumes** (`-gitee.exe` + `.bin` slices): download all parts into the same folder and run the `.exe` — the installer finds the volumes itself, no manual merging. **macOS / Linux builds are not re-issued in this release** (they need CI to run PyInstaller; this machine cannot cross-compile). --- ## v0.31.3 (2026-09-23) · "Please start now" now remembers what you asked, and "all talk, no action" is fixed **This release adds the two things PASM should be best at: it remembers the context, and it actually does what it says.** ### 1. Saying "please start" no longer derails In the Work area, if you typed only "please start now", the old build took **that sentence itself** as the requirement — the prompt literally became `build me a project: please start now`, so the model had to invent something. On a real machine the project it created was even *named* "build me a project please start now", while what you were actually discussing was a `D:\Code副\springcloud-business` (**Spring Boot**) repo — wrong location, wrong language, wrong project. Such information-free phrases now recover **what to do** from the context, with a four-level fallback: | Priority | Source | Survives restart | |---|---|---| | ① | the previous request in this very mode | yes (persisted) | | ② | this conversation's dev request | yes (conversation is persisted) | | ③ | **the dev ledger** — the project's last request (new core API `workctx.last_request()`) | **yes** | | ④ | the most recent substantive message in the history | yes | It also **states its evidence**: the chat pane prints "continuing from:『…』" so you can correct it on the spot. ⚠️ Image / video / manga modes accept **only ①** — a visual request must never be replaced by another mode's history. Two related fixes: the **project name** is no longer taken from boilerplate (an existing directory supplies its own name), and an **explicitly stated target directory is respected** — if the directory is written out *and* really exists, the work happens there instead of always creating something new on the Desktop (non-existent paths are **not** guessed). ### 2. "All talk, no action" — fixed (two root causes; fixing only one lets it come back) Real transcript: four messages in a row — "please start", "run it now", "go with plan A", "start developing right now" — and **every single reply was a promise like "let me go scan that…" with nothing happening**, not one file written. | Root cause | Why the old build missed it | Now | |---|---|---| | **Routing** | these phrases carry no requirement keywords, so the router returned `None` → plain chat, where the model **has no execution tool at all** | such urging phrases now inherit their requirement and reach an executor (Work mode starts immediately; chat mode shows a confirmation with a real button) | | **Guard** | the honesty guard only understood the **past tense** (`generated` / `opened`) — but "I'm **about to** go scan" is the **future tense**, so nothing caught it | new **promise guard**: requires a promise phrase **and** a real-action word in the *same* sentence (so "I'm about to go answer you" does **not** match) | After catching a promise it does more than rephrase: if the intended work can be inferred (from the inherited request, this mode's previous request, or the ledger), it attaches a clickable **"⚙️ start now"** that really starts the work; if it cannot be inferred, it says so plainly and asks you to add one sentence — it **never** shows a button that leads nowhere. When the ledger proves something really ran, the reply passes through untouched. ### 3. You can watch the process in chat too Previously only the Work area had step cards; the chat pane had a stream of text and no way to tell whether the assistant actually recalled or self-checked anything. Tool calls are now laid out in the open: the tool's (localised) name, its **key argument** (e.g. the recall keyword, so you can verify what it searched for) and a result summary; failures are visible too. **No tool call, no extra card** — chat stays clean. A finished card closes with "✅ done · N steps" instead of growing forever and then silently stopping. ### 4. Verified **35 desktop gate scripts, 1180 assertions, 0 failures** (new: `verify_promise_v0313` 45 assertions, `verify_context_v0313` 29); cross-repo drift guard **20/20** (the two `desktop/` trees are byte-identical). ### 5. Ecosystem impact: **nothing already published changes** | Artifact | Action | Evidence | |---|---|---| | PyPI `pasm-skills` / `pasm-agents` / `pasm-framework` / `pasm-mcp-server` | **none** | this release touches the desktop app and the core cognition layer only; none of those package sources changed, and their local versions already match PyPI | | Skills on ClawHub / WorkBuddy | **no re-upload** | no skill body changed (last change to any `skill/` tree was 09-20/21, matching the platforms) | | Desktop installer | **released** | all fixes are in the desktop app | > **Artifacts:** the current release is `PASMStudio-Setup-0.31.6.exe` (Windows, ~191 MB) — see the > v0.31.6 section above. On Gitee the installer is uploaded as **split volumes** (`-gitee.exe` plus `.bin` slices) because of Gitee's 100 MB per-attachment limit — download all parts into one folder and run the `.exe`; it finds the volumes by itself, no manual merge needed. macOS / Linux packages are **not rebuilt** in this release (they require a CI build; use the **v0.31.1** `.dmg` / `.tar.gz` / `.deb` from **[GitCode Releases](https://gitcode.com/arronzheng/pasm-qclaw/releases)** — fastest from mainland China — or [GitHub Releases](https://github.com/arronJack/pasm-qclaw/releases), where they are **single intact files** (**no `cat` merging needed**). Gitee only carries the Windows split volumes. --- ## v0.31.2 (2026-09-23) · "I asked it to build something and nothing happened" — fixed, and you can watch it work **This release fixes the most painful desktop bug: you say "build me an expense tracker" and the app does nothing.** The cause was not the executor — it was **routing**. A sentence has to pass a chain of gates (capability question → keyword router → mode gate → plan gate → confirmation wall → executor), and **any gate that misjudges looks exactly like "no reaction"**. Five root causes, all backed by measured evidence: | # | Root cause | What you saw | |---|---|---| | 1 | Build requests stolen by other modules | "build me a **data analysis** platform" → treated as spreadsheet analysis; "build me a **WeChat** mini-program" → treated as cross-device push | | 2 | Question wording hijacked the request | "can you build me a website?" → it just recited a capability list and **built nothing** | | 3 | A 22-character keyword window failed silently | Longer requirements never matched → treated as plain chat, **with no hint at all** | | 4 | Narrative sentences treated as orders | "I built a website yesterday" was also taken as a command to start work | | 5 | ★ **The confirmation wall was a dead end** | In chat mode it asked whether to start; replying "**开始**" neither ran anything nor replied — the confirmation just sat there forever | Now build requests are recognised reliably (**18 positives, 20 negatives, zero false positives**), and "开始" really starts the work. There is also an explicit **honesty guard**: when a heavy task gets downgraded to plain chat, it says so ("I treated this as chat and **did not act**") instead of staying silent and leaving you unable to tell "it didn't understand" from "it didn't act". **Watch the work happen.** Heavy tasks used to be a black box — a single "working…" line, where "working" and "frozen" looked identical (local models can take minutes). The chat pane now grows exactly one step card per turn: plan · model file list · read · deep-thinking · new file +N lines · edit +N/-M lines · run command with real output. Three rules: only real events are reported (real commands, real files, real paths — no fake thinking for visual effect); thinking updates in place instead of flooding the pane; and one card per turn, with previous turns kept as history. **Also fixed:** the "📦 Scenarios" settings page ships for the first time (it existed in the main dev repo but was never synced to the release repo, so the v0.31.0 / v0.31.1 packages genuinely did not have it); the workbench progress column finally receives data (`worklog.set_status` had never been called anywhere in the project); and the Linux/macOS build scripts now read PyInstaller parameters from a single source of truth instead of hand-written lists that silently dropped 115 lazy imports plus the playwright driver. **Verified:** 33 desktop gate scripts, **1104 assertions, 0 failures**. A new cross-repo drift guard byte-compares the dev and release `desktop/` trees (sha256 equality, reverse check for release-only edits, shared build params, version alignment) and boots the synced copy in a subprocess to prove it actually works. **Artifacts (that release):** `PASMStudio-Setup-0.31.2.exe` (Windows). On Gitee the installer is uploaded as **split volumes** (`-gitee.exe` plus `.bin` slices) because of Gitee's 100 MB per-attachment limit — download all parts into one folder and run the `.exe`; it finds the volumes by itself, no manual merge needed. macOS / Linux packages are **not rebuilt** in this release (they require a CI build; PyInstaller cannot cross-compile from Windows). --- ### v0.30.16 (2026-09-17) · Copy no longer wipes the chat transcript / slow-chat root cause: a NameError swallowed by `except` **"I typed 你好 and nothing came back for a minute" was not a slow model — the local path was silently downgraded.** The log says it plainly: `native /api/chat unavailable, falling back to the compatible endpoint: name 'base_url' is not defined`. A typo'd variable name raised a `NameError` that an outer `except Exception` swallowed into a single INFO line, so every request fell back to the compatible endpoint — which **drops three critical parameters**: | Dropped parameter | Consequence | |---|---| | `keep_alive` | Model gets evicted from VRAM → **45 s cold load** on the next request | | `num_ctx` | Context not narrowed → slower | | `think=false` | **Thinking chain stays on** → 20 s to first token, 2000+ chars of thinking | After the fix, the worst round is back to normal (measured: first token in 1–2 s locally). **Plus a new static gate** (`tools/check_undefined_names.py`) that finds names which are read but never defined. Sweeping the repo with it turned up **4 more of the same class** (all "swallowed by except → feature silently dead") — one of them is exactly the **"no artifact preview"** you reported: the preview code for text/plan artifacts used an un-imported `_io`, so it always errored. **Six more things:** 1. **Clicking 📋 Copy no longer eats the chat transcript** — Qt's `QTextBrowser` calls `setSource` after the anchor click, and our copy link (`pasm://copy/0`) is not a real resource, so the whole message body was replaced by a blank error page. Fixed. 2. **"Can't find the work I just finished"** — the entry point existed (left workbench list, `Task#tXXX`, double-click for details) but **double-click crashed** (the detail dialog was missing an attribute). Fixed, and the workflow page now has a **"📂 Completed work (view artifacts)"** button: lists artifacts that really exist, click a filename to **open it**, click a title for details. 3. **Artifact preview**: added 📂 Open file / 📁 Show in folder, and it now previews the first artifact that actually exists on disk. 4. **Settings → 🔗 Integrations is now a second-level tab strip**: Feishu / Lark · Discord · WeChat · Generic Webhook, **showing one channel at a time** (the four flat groups used to stretch the dialog into a very long column). 5. **Chat-header companion now aligns with the header card height**: measured inner height was 80 px while the avatar is 89 px, so it was **clipped by 9 px**. The card height is now derived from the avatar height (inner height == avatar height). 6. **Payment stays.** It is "take payments for the project **you** build" (it emits a portable payment-adapter layer, sandbox with real HMAC signing and a real state machine), **not** "pay on your behalf" (that class of action is a hard safety boundary). This positioning is now displayed at the top of the payment page. > Verification this round: desktop guard suite — **25 scripts, 832 assertions, 0 failures** > (including three counter-example controls; one of them spins up a **fake Ollama server** to > prove the request really hits `/api/chat` with all parameters present). ### v0.30.11 (2026-09-17) · All 12 field reports fixed · everything under one work root - **🛩️ Flight reworked**: it now **transforms into a plane in place** on take-off (no more a human sliding through the air) and turns back on landing; the route is a random curve, not a tidy rectangular loop. - **🔀 No more two panels both named "Automation"**: the left nav is now "⚡ Spontaneous Behaviour" and the right fixed tab is "🤖 Workflow (multi-step AI engine)", each explaining the difference. - **🖥️ Vague file requests work**: previously only fully-qualified paths were understood, so "open the txt on E:" was ignored. It now does a bounded "drive + file type" search — and **does not jump in when you are merely asking a question**. - **📣 Ad design now includes the rationale**: a creative-brief block (objective / audience / proposition / tone / media / key visual), shown next to the artwork in the right panel. - **🧍 Desktop companion, three fixes**: mood is on its own line; **4 silently-dropped actions restored** (nod / stretch / arms / bounce) plus **4 new ones** (cheer / clap / point / finger-heart), implemented on **both** the 2D and 3D paths; and **appearance DIY** — hue / saturation / value knobs plus head-accessory toggles, deliberately using **one shared transform for 2D and 3D** (a 2D-only change would be invisible on 3D-capable machines). - **🛠️ "Work" now really scaffolds**: code tasks run the official scaffolders and install dependencies for real (measured: express 70 packages, vite+vue 35), leaving a runnable project on disk. Code and payment job types previously had **no executor at all**. - **💳 Payments integrated (sandbox first)**: the sandbox uses **real HMAC signing and a real state machine** (order → pay → signed callback → query → refund), persisted across restarts. WeChat Pay / Alipay have interfaces and configuration only; even with full credentials it stops with an explicit "real HTTP not implemented yet" rather than **silently pretending to succeed**. Secrets are never echoed back. - **📎 Uploads are visible**: inline thumbnails in chat, size-labelled cards for non-images — both you and the model can see them. - **🔌 Work calls tools by itself**: `pasm-mcp-server` is wired in and 13 cognitive tools joined the conversation tool bus; it degrades silently if the server is unavailable. - **🗂 All output unified under one work root** (a friend's suggestion): output used to be split across **four unrelated roots** (one of them hard-coded to the Desktop). It now all lands under `Desktop\PASM工作`, categorised as `project` / `image` / `video` / `copy` / `doc` / `team` / `script`. Existing output is **migrated** via copy → verify (sha256 + tree digest) → delete-only-if-verified, **and is rollback-able**. **Only artefacts move** — notes, role config and books stay where they are. Stale absolute paths embedded in saved conversations are rewritten too. - **🐞 Plus 9 real defects found and fixed along the way**, two worth naming: a flight-height slider wired to **nothing at all** (defined, exposed, self-tested — and never read by any flight code), and a placeholder check that condemned **every** ad plan (the ad template's own word "strategy layer" matched the placeholder pattern). ### v0.30.2 (2026-09-15) · Chat no longer loses your messages · no more fake "done" - **🐞 Your own messages are no longer swallowed**: replies used to be typed out character by character (~1.2s), while the input box was already usable. Send a new message inside that window and it got overwritten by the typing animation (the message *was* saved, so it reappeared after switching conversations — which is why it looked like a ghost). Now it verifies "is this block mine?" before redrawing, starts a new block instead, and **never overwrites your words**; if you cut in, it **finishes its half-sentence immediately** instead of freezing. - **🚫 No more empty promises**: it used to say "✅ generated and opened in browser" with nothing on screen — that was fabricated. Now every real action is written to a ledger, and any claim of "generated / opened / ran" without a matching record is **corrected to "I did not actually do it"**. - **🚶 Turns before walking**: no more sideways sliding while facing forward. - **🎭 16 actions (was 7)**: stretch / arms crossed / bounce / nod / **fly-and-spin**, chosen **by personality** (9 personas each with their own taste). - **👕 Avatar change syncs** to the chat-side character, and the **data folder no longer splits** depending on how the app was launched. ### v0.30.0 (2026-09-15) · A 3D mecha companion, a cleaner work bar, six new capabilities - **🎮 It's 3D now — and it actually moves.** The companion is rendered with real GPU 3D: layered armour, metallic sheen, clear-coat highlights, a glowing chest emblem. It **breathes, sways, its antenna wobbles**, and it turns its head to follow your cursor. Seven actions are visibly distinct (idle / walk / wave / hop / dance / think / hold-ball), and it **grows through four stages** from a round-headed toddler to a slender adult — with shoulder plates and an antenna appearing in the later stages. Fully procedural, **zero new dependencies**; if your machine can't do 3D it silently falls back to the original 2D drawing and never crashes. - **🧩 Cleaner work bar.** The four document buttons (copy / spreadsheet / PPT / Word) became one **「📄 Documents & Decks」** entry that pops a **card picker** — each format with a one-line hint, the current one highlighted. It takes no permanent layout space, closes when you click away, and repositions itself near screen edges. **Explicit requests still win**: say "give me a Word file" and it goes straight there, no picker. - **📎 A「+」in the chat box**: images, documents, any file, and screenshot. Word / PPT / Excel are **actually read** (body text *and* tables, not just the extension), so you can say "turn this report into a deck". 6000 chars per file, up to 3 at a time; bad files warn instead of crashing. - **🔐 Three permission levels** (safe / standard / full access; default **safe**): safe asks before writing files or running commands; switching to full access requires an explicit risk confirmation. **When in doubt it stops and asks** rather than guessing. - **✨ Page transitions** are animated now. - **🎙 Voice wake word**: say 「小U」 to wake it (**off by default** — the mic is only used once you enable it in Settings; it won't wake on its own voice; **renaming the character updates the wake word immediately**, no restart needed). - **🚀 Launch-at-startup** toggle in Settings — writes to your user registry, **no admin rights**, no console window. - **🏷 The default name is now 「小U」** (pet / settings / knowledge base / speech) — **a name you customised is never overwritten**. ### v0.29.1 (2026-09-14) · Fixed 5× slower replies, canned capability answers, and a muted / English-reading voice - **🩹 Fixed "replies suddenly 5× slower"** — one report went from 10 s to 52 s for the same question. The 48.92 s "first token" turned out to be **40.2 s of re-loading the model into VRAM**: inference itself had not regressed (hot, same-length prompt: 1.35 s first token, 8.7 s total). Root cause: `keep_alive` is per-request while the Ollama server default is only **5 minutes**, so an idle gap — or any path falling back to the compatibility endpoint (which silently drops `keep_alive`) — unloads the model. Added a **residency guard** that reloads only when the model is genuinely gone and otherwise never touches it (measured: any touch resets Ollama's prefix cache, turning a 0.3 s prompt eval into 4.2 s), plus a pre-flight prewarm and a "load-only, no inference" warm-up. - **🩹 Fixed "answers with a capability list instead of your question"** — asking 「能否先吃点小吃?」 returned a canned capability list. The capability-question test was too loose ("能否 / 会不会" anywhere in the sentence counted) and ended in an unconditional fallback, so the model never got a turn. The frame must now open the sentence and a capability keyword must follow within 12 characters — false triggers dropped from **9/13 to 0/14**. - **🩹 Fixed "voice goes mute / reads out a string of English"** — Microsoft **silently retired** 7 neural voices (the child voices plus the Sichuan / Henan / Shandong dialects). Retired voices **return empty audio without any error**, and the growth-stage table pointed both the toddler and childhood stages at a retired child voice — so every online synthesis failed and fell back to the system voice. Now uses **surviving voices + pitch shaping**, plus a **voice guard** (blacklists empty-audio voices and re-checks the server voice list hourly). Measured: 12 gender × stage combinations and every dialect voice synthesised for real — **0 empty**. ## v0.29.0 (2026-09-14) · Memory layer unified + new Fact Layer & World Model + cross-phrasing recall - **🩹 Fixed a defect that was silently losing memories** — the desktop app kept its *own copy* of the memory implementation instead of sharing one. The same fact was recorded independently in two copies, showing up as "sometimes it remembers, sometimes it doesn't" — **with no error at all**. Now there is a single source of truth, guarded by two automated fences. Verified: after flooding a 200-slot memory with 260 unrelated chit-chat lines, **all three early important memories survived**. - **📌 New "Fact Layer"** — keeps key facts (name / age / address / medication / allergies / family phone) **separate from chit-chat memory**, so they can never be crowded out. - **Changing your mind leaves a trace** — saying "Shanghai" after "Beijing" doesn't delete the old fact; it's marked invalid (history stays queryable) and recall only returns what's currently true. - **Confidence protection** — a low-confidence new statement **cannot** overwrite a high-confidence fact; it's held as "pending confirmation" instead. - Ask "where do I live", "what medicine do I take", "what am I allergic to" — all answered. - **🎯 New "World Model"** — for similar situations, it estimates the **success rate** and points out the **bottleneck** (e.g. "about 83% success"); **it says "I don't know" when it doesn't know** — no fake certainty. - **🔍 Recall now survives rewording** — "what's my name" now finds the fact stored as "name" (measured recall for this case: **50% → 100%**). - **📦 Also includes everything from 0.28.6 / 0.28.7 / 0.28.8** — Chinese language lock and pre-work confirmation gate, browser automation and live weather, speech stability, PPT illustrations, scheduled and recurring tasks, mail connector, calendar connector, cross-device remote bridge, self-evolving skills, multi-agent collaboration layer. - Installer size: **77.5 MB** (includes the runtime needed for browser automation). > Includes everything from 0.28.5: cognitive core persisted into the PASM package, unified engine-interface > calls (api 1.1), interchangeable/hot-swappable learning tiers, and three capability overview documents. ### v0.28.5 (2026-09-12) · Three-layer contract convergence + cognitive core persisted + docs - **🧠 Cognitive core now lives in the PASM package** — symbolic reasoning / memory router / vector memory / learning layer promoted from the desktop app to `pasm.cognitive.*` as the single source of truth (desktop keeps thin re-export shims). More consistent across versions, ready for reuse. - **🔌 Desktop goes through the engine interface** — a new desktop engine factory uses the contract's "pick the best" creation and returns a **degradation report** (honestly telling whether the full engine or the built-in lightweight core is running). **Swapping engines = changing a name in the registry; call sites stay untouched.** - **🧩 Engine contract api 1.1** — environment plugin registry (swap in non-grid worlds), `create_best()`, `capability_gap()`; contract self-test 12 → 20 checks. - **🎓 Learning layer: one interface, two tiers** — full tier (discrete actions + persona design) and teaching tier (continuous-vector associative) are interchangeable and **hot-swappable at runtime**; a silent-failure trap caused by mismatched `learn()` signatures was fixed. - **📚 Docs added** — PASM Core Overview, PASM Studio Full Feature Guide, PASM-Lite Feature Guide. - **📦 Smaller installer** — build leftovers cleaned: 63 MB → **51 MB**. > Includes everything from 0.28.4: speech-input dialect recognition fixes, eight dialects, neuro-symbolic > hybrid reasoning, memory router, self-designed pet behaviour, work-state display, gray thinking stream. ### v0.28.4 (2026-09-12) · Speech-input fixes + accurate dialect/Mandarin recognition - **🎤 Three root causes of speech input "not understanding you" fixed**: ① **the recognizer was locked forever** — the old logic only switched to Cantonese/Taiwanese when it detected them and **never switched back to Mandarin**, so after one Cantonese sentence the recognizer stayed on `zh-HK` and all later Mandarin/Sichuan/Henan/Beijing speech failed; ② **the default recognizer wasn't necessarily Mandarin** — with dialect language packs installed, `zh-HK` could sort first; ③ **no fallback** — when a specialized recognizer failed, it never retried in Mandarin. Now: `zh-CN` is forced at startup (covering Mandarin plus the Sichuan/Henan/Beijing/Yunnan/ Northeastern/Shandong Mandarin dialects), each 🎤 press pins the language explicitly, and empty or low-confidence results automatically fall back to Mandarin and listen again - **🗣 One dialect sentence → instant detection, instant voice switch, instant dialect reply** - **➕ Yunnan dialect added**: 8 dialects total (Cantonese / Taiwanese / Sichuan / Henan / Northeastern / Shandong / Beijing / Yunnan) - **🔍 Better speech self-check**: `diagnose()` now reports whether dialect recognition packs are installed > Includes all of 0.28.0 ~ 0.28.3: neuro-symbolic hybrid reasoning, memory router, self-designed & > self-optimizing pet behavior, work status display, grayed-out thinking, equal footing for all > seven dialects, and fully working team & skill library. 📖 **Full feature list: [docs/FEATURES.md](docs/FEATURES.md)** (16 sections + complete module index) ### v0.28.3 (2026-09-11) · Four real-device fixes - **💭 Lost-text root-caused + DeepSeek-style grayed-out thinking**: when a cloud model embeds its chain of thought inside the reply, the chat window used to swallow `` as an unknown HTML tag **along with its content** (that was the "missing text"). A new streaming think-splitter fixes it at the source; the separate `reasoning_content` field is no longer dropped. Thinking now streams in as **grayed-out small text (💭 prefix)** followed by the answer — final state keeps "gray thinking + Markdown body", just like DeepSeek - **🗣 Dialect bleed root-caused**: the soft-word tables were full of everyday Mandarin characters (整/贼/老/啥/咋/啦/儿…) and Henan's marker list had the bare "中" — a few Mandarin sentences were enough to drift the pet into a Northeastern/Henan accent. Tables now hold only dialect-exclusive strong words + accent switching picks the best count, so Mandarin stays Mandarin while all 7 dialects still detect & speak - **🎈 Work badge → overhead bubble**: the pet's work badge (e.g. "chatting with XX") moved from a rectangle **below** the avatar to a **speech bubble above its head**: white rounded body + teal outline + little tail + soft shadow - **🛠 Unresponsive team features + empty skill library fixed (long-standing)**: a packaging flaw meant the `pasm` engine package was **never bundled** — team / math brain / self-repair had been **silently dead in every installer since v0.24**; and since 0.28.2 the built-in skill library data went missing too. Rebuilt from the fixed spec: team features fully work in installers for the first time, and all 8 built-in skills are back ### v0.28.2 (2026-09-11) · Self-designed pet behavior + work status + dialects for all - **🧠 Self-designed, self-optimized pet behavior**: the desktop pet's actions are **no longer hard-coded** — unlocked by growth stage (lvl 0: wave/hop/peek → lvl 1: ball → lvl 2: dance/spin → lvl 3: think), with base preferences **designed from its personality grid** (temper × energy × play). Praise it, poke it, or scold it and it **optimizes its own action weights** (ε-greedy exploration against rigidity), persisted to `pet_behavior.json` — survives restarts, upgrades, and personality changes - **💼 Live work status**: while busy, the pet shows a real work label (📖 reading / 🌐 web self-study / 💬 chatting with you / or the actual task from the work ledger), with a focused look — fun actions yield to work automatically - **🗣 Dialects upgraded to full parity**: Sichuan / Henan / Northeastern / Shandong / Beijing now equal to Cantonese & Taiwanese — dedicated detection regexes, signature words, and real neural dialect voices (edge-tts); Beijing falls back gracefully to Mandarin. Dialect words in your replies drive automatic TTS accent switching - **🧮 (v0.28.0) Neural-symbolic reasoning layer + memory router**: math word problems routed by semantics — percentages / rope folds / rise-fall chains computed exactly by the symbolic layer, no more "wrong corrections"; memories injected by question meaning - **🔍 (v0.28.1) Full regression review**: Cantonese homophone input (宜家/既/吾/系) recognition fixed (root cause of "it got dumber"); "dumber / dialects broken / TTS degraded" investigated and fixed one by one, guarded by 11 Mandarin negative samples (zero false positives) ### v0.27.1 (2026-09-09) · Real system ops + capability broker + adaptive delegation - **🛠 Real system operations**: "delete the Screenshots folder on my desktop" → actually deleted (**moved to Recycle Bin**, recoverable); "clean up junk" → scan-only report first → confirm dialog → cleans only whitelisted temp dirs, files older than 2 days; locked files skipped and counted honestly. Windows / Program Files / drive roots are hard-refused - **🧭 Capability broker (non-prescriptive)**: every request is assessed — direct tool (DO) / learned knowledge applied to really do it (LEARNED) / learn online first then really do it (LEARN) / honestly cannot with the real reason (NO, e.g. shutdown needs physical action). **It never fabricates "done" anymore** - **🧬 Adaptive delegation**: easy tasks done by the main agent directly; complex ones split into sub-steps with a per-step ledger and main-agent review; destructive actions executed by the main agent only, always with user confirmation - **📋 Operation ledger**: every real action logged (time / target / why / result); ask "did you really delete it? how do I verify" → it shows the ledger - **🛡 Anti-hallucination**: honesty rule injected into system prompt — no claiming "done" without a real executed result ### v0.27.0 (2026-09-09) · Math brain + multimodal + quantum strategy + four trend items - **🧮 Math brain mathlab**: "analyze this table" → real computation: regression (R²) / descriptive stats + outliers / correlation / linear equations / topo sort / shortest path / connected components / Markov steady state — with a one-line Chinese conclusion - **👁 Multimodal perception (Phase B)**: drop an image or paste a screenshot into the chat → a local Ollama vision model describes it (no cloud, zero cost); the next message understands the image. Speech-to-text chain: faster-whisper → Vosk fallback - **⚛ Quantum strategy (Phase C)**: candidate strategies form a superposition; Boltzmann-annealed measurement picks the route — exploratory early, converging to the best path with experience; intra-family interference generalizes lessons; mood (PAD) acts as an external field; outcomes feed back into amplitudes - **🔀 Model router**: chat → local Ollama (fast), work → DeepSeek (strong), review → local cross-check; auto-fallback to cloud when local is down - **🔁 Team self-check retry + 🕸 topo validation**: a failed/empty/short step auto-retries with a quality self-check; flows support `deps` dependencies — cycles / out-of-range / self-loops are rejected before running - **🏗 Experience sedimentation + 🧠 project-level memory**: finished projects auto-save flow templates for one-click reuse; team runs auto-inject the project archive - Smoke: mathlab 29 · phaseA 22 · trends 29 · bc+topo 29 · UI regressions 105 = **all green** - **📎 Visible @references**: typing `@` pops a file picker (recent artifacts / knowledge entries / local text files; ↑↓+Enter pick, keep typing to filter). Choosing one inserts `@path` and shows a 📎 chip above the input — click ✕ to drop it (also cleans the text). `@“paths with spaces”` supported. File bodies go into the model context only; your bubble stays clean - **🐛 "@小U got chit-chat" fixed**: unresolvable references are no longer sent verbatim to the model (it used to treat `@小U` as a greeting); pure-reference messages now explain and strip the mark. `@` in pasted code is never touched - **🏢 Teams = real per-project crews**: a new project starts **blank** (crew & flow are built by you); each project has its own members — hire in (🌐 / 🎓 / + / 🧑‍💼 pool), move out anytime (pool record kept); switching projects shows that project's own members / flow / **step status ✅⚠️○** / **run archive with outcomes**; runs write step status back automatically; "让团队做 X" still boots a built-in crew - Smoke: full regression green (v0261 26 · v0262 22 · v0260 39 · v0250 33+33 · v0240 57+15 · v0231 26 · v022x/v0190) ## v0.26.2 (2026-09-08) · tool-error fix / PASM emotion & memory really shaping replies / same-file edits - **🐛 Tool error fixed**: the capability menu's 8 quick-action anchors were missing a list wrapper → `str.join() takes exactly one argument (8 given)` crash is gone - **❤️ PASM emotion & memory are now felt**: sentiment lexicon widened to 40+ spoken phrases (complaints, errors, "卡死" all move the mood); mood feedback is applied in one decisive step (no more dilution/clamping); mood is translated into a "此刻口吻 / tone-now" instruction injected into every reply (happy → light & playful, down → softer & shorter, urgent → straight to the point); tables/plans/PPT/dev now auto-carry your related memories & preferences - **📄 Same-file precise re-edits**: "表格再加两行 / 文档补一节 / PPT 换配色" now edits **the same file** — the previous full content is fed back to the model (keep the theme & structure, change only what you asked), then written back in place; "另存/新做一份" opens a new one; product memory persists with the conversation - Smoke: v0262 adds 18 checks, all green; v0261/v0260/v0250/v0240/v0231/v0230 full regression green ## v0.26.1 (2026-09-08) · five real-machine fixes - **🩺 Health card compacted** to a small footer strip — the auto-activity feed is the main area again - **👥 Team page redesigned into cards**: project bar → members / flow cards → run area; member rows show ★ rating, single-click opens the employee card (⭐ manual rating), right-click fires - **🎓 3-tier skills now real**: built-in 🎯 experts ×2 (content director / data analyst) and 🔌 connectors ×3 (web search / local files & apps / office documents); the add-skill wizard asks for the tier - **📂 App launching truly works**: "小U,帮我打开网易云音乐" now really opens it — name-prefix stripping + brand install-path probing across all drives + real process verification after launch (never fake "opened") - **⏳ Long tasks never lose their reply**: real-machine root cause fixed — heavy work shows a "working…" notice, returning to the conversation shows the finished reply immediately, and turn-finalization has a hard fallback that always writes the reply back into its session file - Smoke: v0261 adds 25 checks (UI offscreen + turn lifecycle + brand probing) all green; v0260/v0250/v0240/v0231/v0230 full regression green ## v0.26.0 (2026-09-08) · project ledger / real file development / @refs & slash commands - **📒 Project ledger**: every project (copy/table/PPT/dev) keeps a working ledger — request history, what changed each round, smoke results, your standing rules; follow-up edits auto-inject the digest for precise changes, never "lost in the weeds" - **🛠 Real file development**: `/开发 ` or "用php/java/vue/go/c#/c++ 开发…" → pick a target folder and write a real project (8-language scaffolds, per-file generation, per-language static smoke); every round is recorded, "改这个项目" continues precisely - **📎 @references**: `@file` or `@knowledge entry` in a message pulls the content into context - **/️⃣ Commands**: `/开发 ` · `/技能 ` · `/项目` (view ledger) - (v0.25.0: company-style teams · faster chat · background self-heal — see CHANGELOG) - **🧬 PASM core engine parity (0.5.0)**: multi-agent team & self-heal moved into the engine executive cortex (`pasm.cognitive`); desktop side is now a thin facade — one shared implementation - **👥 Multi-agent skill team**: built-in role cards (PM/Planner/Dispatcher/Developer/Reviewer/Debugger), add your own "employee cards" and compose custom flows; say "let my team do X" in chat — review-fail auto-rework, auto-retry, fully visible steps - **🩺 Self-check · self-diagnose · self-heal**: silent log sentinel records crash cases; file+line level diagnosis reports; report/auto-fix modes (auto-fix = patch → smoke regression → auto-rollback on failure; frozen builds forced to report-only) - (v0.24.0: Ark 404 fix · theme hardening / v0.23.0: chat-only gate · queued concurrency · true PASM×LLM synergy — see CHANGELOG) ## What makes it different from a regular chatbot A normal chatbot starts over every turn — no memory of you, no sense of "self". PASM Studio is a **dual-brain architecture + cognitive execution cortex**: | Part | Role | Result | |---|---|---| | **Language brain** (DeepSeek / any OpenAI-compatible / local Ollama) | Understands you, composes replies, asks back | Conversations that feel human | | **PASM cognitive brain** (local, fully offline) | Every chat → emotional drift, personality shift, layered memory | It genuinely grows up and genuinely remembers you | | **Cognitive execution cortex** (since v0.15) | Judges intent & mood before speaking → picks stance and tone; recalls relevant experiences by topic | No more "one-size-fits-all"; it remembers how things got done last time | ## Core capabilities (accumulated since v0.16) **A chat UI that stays out of the way** - **[💬 Chat] / [🔧 Work]** mode split: chat mode never starts working just because you *mentioned* "an app" or "a script" — you decide when it acts - Large multi-line input (Enter to send / Shift+Enter for newline); switch LLMs anytime (cloud DeepSeek / any local Ollama model — remembered) - **Session list** on the left: every message is saved in real time; switch sessions or restart freely **Learning that sticks (knowledge base v3 + self-evolution)** - Each knowledge entry = full text + key points + source; **what it learns, it keeps verbatim** — self-study searches multiple sources and stores full articles (since v0.16.5) - Double-click any entry to open the full-text reader; keyword filtering supported - Automatic self-study on by default, topics chosen by a built-in "curiosity selector"; after learning it quizzes itself and honestly tracks what it didn't understand **Extensible skills** - Drop new skills (name + description + procedure, standard `SKILL.md` format) into the data directory; they're auto-discovered and invoked when relevant - Built-in examples: video scripting / marketing copy / manga one-take pipeline **Layered memory** - *Working memory*: current topic + goals in flight (persisted on exit) - *Episodic memory*: experiences archived every 8 turns / per session, recalled by topic across sessions - *Procedural memory*: after each task it records "asked → used → worked? → lesson", and remembers next time **It actually works** - Reads and summarizes files on your computer (txt/md/docx/xlsx/pdf/code…) - Reads folders ("analyze the files in D:\some-folder"), opens apps (WeChat/Calculator/Notepad/PowerShell…) - Writes & runs scripts; on errors it **auto-repairs and re-runs once** (plan–execute–verify loop) - Generates PPT / Word / Excel documents; full-stack project development (frontend + backend + database) - Generates real images (local Stable Diffusion WebUI or cloud engines), short videos, and manga episodes with subtitles and voice-over (HTML player + real MP4 when ffmpeg is present) **It grows** - Emotions shift with interaction, personality drifts with experience, and it develops from infancy to adulthood (the desktop avatar changes with it) **Reliability** - Windows 10/11 x64 minimum (Win7/8 dropped); startup errors are readable messages + `crash.log` instead of a mysterious flash - ~87 MB installer; runs without torch (built-in lightweight cognitive core) ## Download & install Grab the latest from **[Releases](https://github.com/arronJack/pasm-qclaw/releases)** (v0.30.16, single ~86.8 MB file): 1. Download `PASMStudio-Setup-0.30.16.exe` 2. Install → launch PASM Studio → open ⚙ Settings and enter an LLM key (or leave empty for local Ollama) 3. Start chatting. For real image/video/manga output, connect an image engine on first use (~1 minute) > Requirements: **Windows 10/11 x64** · CPU is enough · ~1 minute to unpack on first install. > Works with no API key at all (local demo mode: still remembers and grows, plainer speech). > Full history in [CHANGELOG.md](CHANGELOG.md); the updater checks `latest.json` in this repo. ## LLM setup (one line each) - **DeepSeek**: paste your API key; Base URL `https://api.deepseek.com/v1`, Model `deepseek-chat` - **Free & local**: install [Ollama](https://ollama.com), run `ollama run qwen2.5:7b`; Base URL `http://127.0.0.1:11434/v1`, Model `qwen2.5:7b` — fully offline ## Data & privacy - Memory / config / growth archives live in `%APPDATA%\PASMStudio` (not removed on uninstall; wipe anytime) - Runs standalone; your conversations and files never leave your machine (only LLM API calls you configure go online) ## Roadmap - [ ] **Self-reflection training loop**: distill real interactions into experience samples, feeding personality growth and light model fine-tuning - [ ] Voice conversation polish / cloud sync / personality report home page ## Ecosystem | Repo | Visibility | Role | |---|---|---| | **PASM** (private) | Private mirror on Gitee & GitHub | Core cognitive engine + cortex + full desktop source (development main repo mirror) | | **pasm-qclaw** (this repo) | Public | PASM Studio releases: installers, update channel, docs | | **PASM-Lite** (public, MIT) | Public | Minimal token-free cognitive engine for teaching (~260 lines, readable & hackable) | The product is currently distributed as compiled binaries (public repos host builds and the update channel). Open-source plan (drafted 2026-09): the **pasm-qclaw development repo is planned to open up** so everyone can study the desktop product and the dual-brain integration; the **full PASM engine + cortex stay closed for now**, pending further refinement. In the meantime, read the research concepts and teaching code in [PASM-Lite](https://github.com/arronJack/PASM-Lite). Issues / feedback / collaboration: open an issue on GitHub ([issues](https://github.com/arronJack/PASM/issues) — primary tracker); the Gitee mirror is monitored too. > **Trademark**: the name and branding of "PASM Studio" belong to arronZheng. > The MIT license grants code rights, not trademark rights — please rename your forks > and redistributions.