Releases: Clearailhc/clearai-dsh
Release list
clearai-dsh 0.3.1 — 两个死结:计划置 blocked 后再也解不开,续跑窗口的阻塞码收不了兵。
两个死结:计划置 blocked 后再也解不开,续跑窗口的阻塞码收不了兵。 两条都不是措辞问题,是机制自己在文档承诺的出口上焊死了——0.3.0 的「连拦达阈值 ⇒ 置 blocked、停下等人」写得没错,可人按卡上说的三条出路走,一条也走不出去。
Fixed
block/cleared只清了连拦计数,没清plan.blocked:计划一旦置 blocked,AmendPlan(换一条能过闸的路)与RefinePlan(补齐判据)把话说得再对也解不开,plan.blocked会一直挂着,收件箱那条等人处置的条目成了死结。现在block/cleared同时删掉blocks[plan:step]与指向该步的plan.blocked;三条出路各自真的能解拦——AmendPlan、RefinePlan,以及VoidPlanStep(只作废被拦的那一步时才清)。阻塞守卫的文案也随之只列可执行的动词(去掉「让人介入后重开」,补上VoidPlanStep)。- 续跑窗口的阻塞码用了下划线:
clearai_loop_stalled/clearai_loop_abandoned不合宿主契约 ——@deepseek-ai/dsh-goal要求 lower-kebab-case(/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/),goals.block(...)当场拒收 ⇒ 收兵失败,窗口留在active上继续叫醒一个已经收尾的目标。现在改成clearai-loop-stalled/clearai-loop-abandoned。测试桩makeHost().block也按同一条宿主规则抛错——桩与宿主同形,不然测的只是桩。 - 目录被声明成物证时报「空目录」:目录不是空文件,两件事不一样,而错的那句话会把下一步动作指错。准入现在把目录单独判为不可作为物证(
verified_by: 'l1'),并如实报出目录里的文件数与字节数;CreatePlan的artifacts契约描述与clearai-loop技能文档同步写明「目录不是物证,要声明具体文件」。
Verified
- 18 套件 1886 项检查全绿(内核 834 · 宿主 119 · 客户端 248 · 领域语言 234 · 本体 96 · 长测 41 · 对照 41 · 可读性 35 …);
verify-package44 通过 / 1 失败,唯一那条仍是沙箱里npm pack的EROFS(只读~/.npm/_cacache),与 0.3.0 记录的是同一处环境限制。 - 续跑码那一条是拿真宿主的契约核过的:
node_modules/@deepseek-ai/dsh-goal/lib/index.js里就是那条 lower-kebab-case 正则,不是照着测试桩猜的。
clearai-dsh 0.3.0 — 从一次真跑的三条症状出发,把三件事从劝告变成机制。
从一次真跑的三条症状出发,把三件事从劝告变成机制。 一位用户在真实会话里遇到的三个问题——CloseGoal 运行失败且要跑很久;命题晦涩、而且从没走过认识论循环的便宜层级;本体建得不错、查到的实体却没进实体图谱——每一条都追到了代码行:宿主半用属性式取服务(宿主 fiber 瞬态掉线就抛,而评估者刚跑完的那两分钟评审随栈帧一起没了);实体层的节点与边唯一来自「整条目标被独立裁决判 support」之后的升格;supportedLevel 只是支持证据的最大值,跳级零代价。这一版不是把话说重一点,而是把这三条各自换成一道可清点的机制——并在两场真模型 headless 长测里验过。
Added
- 实体是一等写入口(本轮的主修):
RegisterInstance(观测:依据与出处必填)与Assert(说一句关于某个已登记实例的带出处的话)。断言在登记那一刻就产边,不再等目标裁决;投影把三个来源合起来画,同键去重、节点与边都带source(registered/promoted/asserted),两个新来源都为空时输出与 0.2.8 逐字节相同。RegisterTerm与它的分工写死在工具描述里:概念是约定,实例是观测。 ExplainLevelSkip:为「没走过的验证等级」留理由,levels必须是卡上列出的未走过等级,reason必须点到该等级要检查的对象名(「时间不够」过不了)。- 缺口三条 + 三道门:
entities_unlanded(逐主体差集:断言主体在图上有边才算落地)、levels_skipped、orphan_terms;每条缺口都带nextAction。门requireLandedEntities/requireLevelReasons/requireCriteriaVerdict机制缺省关、preset 里开到生产,各自两条诚实出口(补齐 或abandoned)。 - 目标的一句话与可清点的判据:
SetGoal新增headline(≤120 字;省略时由claim首句现算,现算超长当场拒)、criteria[]/criteria_note;改判据文本要带一份已落定独立裁决的 auditKey。 clear/goals/{goalId}.md:本体声明里goal.persistence早就写了这个落点、此前没人写;现在内核幂等落盘(判据逐条、假设、修订留痕),卡里给压缩版 + 指针。- 单一叙述源
ui/lib/knowledge-view.js:运行态卡、右栏面板、词汇货架读同一份投影(此前四处各写一遍,漂了要读者自己调和)。 - 事件命名空间
entity/·level/·criteria/·host/;host/inactive四步闭环:宿主按 scope+detail 算内容寻址 id → 内核 pre-step 把没上账的落成变更 → 折法按 id 幂等 → 宿主只交出还没上账的那几条。 - 真值表补 4 条机制(共 71 条)与代码→真值表的反向检查(顶层
events+ 4 项校验,总 29 项);工具面 29 → 32 件,领域动词 10 件。
Changed
- CloseGoal:派发/结算事实在
await之前独立落账(工具抛错、被 abort 都抹不掉);裁决按材料 digest 同态复用——digest 只盖目标修订号、计划步与判据、观测、原始假设、事实、非审计来源的证据与产物摘要,不含"上一次评审自己的回声";交付那一步同样适用,但证据照旧落账(步骤历史与既有的「连续两次无法判定 ⇒ 强制改法」都靠它),省掉的只是那两分钟子 run。复用仍带得出评估卡与评估者会话。 - 裁决卡设预算:
basis≤1200 字,缺口的每条写成{criterion, what, missing}三格。真跑里一次裁决的basis是五千余字、末步单次生成 81 秒。 - 宿主读面降级不再抛:
ui/lib/index.js禁属性式服务访问,取不到返回空态;sessionCwd拿不到会话目录不写盘(删掉process.cwd()回退——"写不出去"与"写到别处"是两件事)。 - 运行态卡:判据逐条渲染(每条 80 字、最多 6 条 + "还有 N 条" + 指针)、
claim压缩、删掉时钟(分钟级时间戳让"同一状态的卡"每分钟变一次,按内容去重因此永远失效)。
Fixed
- 评审只写正文卡片时,裁决被整份丢掉(真模型长测抓到):
refs曾被写进VERDICT_SCHEMA的required,评估者在 markdown 里写清verdict: support却因形状被 runtime 拒收 ⇒ 账上只剩「无法判定」,目标永远结不了案。现在refs声明但不强制,并给parseLooseJson加了正文卡片兜底(只认verdict:后那三个词;取不到就如实说取不到——猜一份 support 比丢掉一份 refute 坏得多)。 - 三处「目录取不到就拿
null拼路径」的崩溃(立约前侦察 / 观测登记 / 准入)与WriteMemory/SaveSkill的同类问题:一律降级为如实返回,不再抛。 entities_unlanded的判据从"图上有节点"改成"图上有边":只数节点时,登记一个无关实例就能把缺口压掉,而真正该落地的主体仍只在命题上。
Verified
- 18 套件 1879 项检查全绿;真值表 29 项 / 71 条机制;
verify-package除沙箱内的npm pack外全过。 - 两场真模型 headless 长测(装出来的包、无人值守):
entity-graph41 通过 / 0 失败(13 个实例、15 条断言边、3 处跳级理由)、long-plan40 通过 / 0 失败(5 步全交付、记忆 1 条、账本 5 次提交、目标 achieved,并自发用了 5 个实例 + 9 条断言)。现场(轨迹、会话日志、读数)归档在docs/optimization/e2e-logs/。 - 独立验证员(fresh context、未参与实现)三轮复验 + 变异测试:抓出并修掉 11 处缺陷(含 3 处必崩的
null路径、一处时间死区、一处可绕过的门);诊断与验证全文见docs/optimization/2026-09-diagnosis.zh-CN.md与2026-09-independent-verification.zh-CN.md。
clearai-dsh 0.2.8 — 四个面板消失的那条 bug:客户端半读了一个已经不存在的字段。
四个面板消失的那条 bug:客户端半读了一个已经不存在的字段。 客户端拿「当前会话」用的是 sessions.list.getSnapshot().current;宿主的 SessionListState 现在只有 { ids, byId, phase, projectionsBySession } —— 没有 current。读到 undefined,isCurrentPreset() 就恒为 false,occupy() / syncRail() 一个座位都不注册。失效形态与症状完全一致:模式在、宿主半一切正常,中栏只剩「对话 / 轨迹」、右栏只剩宿主自带的页签,而且不报错(0.1.7-rc.2 与 0.2.0-rc.1 的宿主都是这个形状)。
Fixed
- 客户端:当前会话的取法改成宿主自己的那一套 —— 在
byId里找retainedBy.mainView > 0的那一行(dsh-client-ui-open-in-app、dsh-client-ui-agent-preset都这么写);老宿主若还留着current,照旧认它。isCurrentPreset()与sessionIdFor()两处共用一个currentSessionRow()。
Changed
- 测试桩与宿主同形(
test/client.test.mjs):旧桩自己造了current: 's1',于是 240 条检查全绿,而真宿主上四个面板静默消失 —— 桩和宿主不一样,测的就是桩。现在桩用宿主的真实形状(ids / byId / phase / projectionsBySession+retainedBy.mainView),这条路径从此有断言看着。 - 版本 0.2.8。
Verified on DSH 0.2.0-rc.1
- 会话格式仍是 v4(没有 v4→v5),0.2.5 那次的消息署名改动不用再动;
- 预设声明行照旧:名册读到
standard, ptc, minimal, cordis, clearai,且 clearai 没有 broken ——verify-clean-install指向 0.2.0-rc.1 是 22 通过 / 0 失败; - 真会话:
node tools/e2e-run.mjs --installed在 0.2.0-rc.1 上 35 通过 / 0 失败(工具、goal/set、plan/created、投影、跨机制不变量); - 真浏览器(隔离 DSH_HOME + 真 Chrome + 一轮真模型):中栏
对话 | 轨迹 | 产物 | 本体,右栏「新标签页」里有世界树与技能 · 记忆; - 0.2 没有删掉我们预设用到的官方包;客户端插座与服务名(
conversation.view、conversation.input.*、sidebarRightTabs、sidebarRight、sidebar.right.pane.tab(.title)、layout)在 0.2 源码里都还在。
clearai-dsh 0.2.7 — 装完显示「成功」,装到的却是上一版——原因不在我们,但句子在我们这边。
装完显示「成功」,装到的却是上一版——原因不在我们,但句子在我们这边。 pnpm ≥ 11 起 minimumReleaseAge 默认 1440 分钟(一天),而这条内置默认是非严格的:一天内发布的版本不会被选中,但不报错——它静默回退到一天以前的最新版。于是刚发完 0.2.6,三条路装到的都是 0.2.2(2026-09-18):dsh plugin --profile web add clearai-dsh(裸包名)、@latest、以及设置 → 插件列表里填包名。一台 Mac 上实测如此,本机也用 pnpm 12.4.1 在干净工作区复现过(裸名 → 0.2.2;clearai-dsh@0.2.6 → 0.2.6)。
这一版不改包的行为,只改用户会照抄的那几句,并加一条判据钉住它。
Changed
- README(中英)的推荐安装命令改成钉版本的
dsh plugin --profile web add clearai-dsh@0.2.7,并新增一段「为什么要钉版本」:机制、两种解法——写死版本(pnpm 会自己记下例外),或在 profile 的pnpm-workspace.yaml里minimumReleaseAgeExclude: [clearai-dsh]按包名豁免所有版本。「设置 → 插件列表」那条也改成填clearai-dsh@0.2.7。 - 「一条命令的安装器」标注清楚:
npx clearai-dsh install自己解析当前版本并钉住它(bin/clearai.mjs一直传的是clearai-dsh@<自己的版本>),本来就不受这条延迟影响。 docs/dsh-integration(中英)的安装段同步;docs/known-gaps(中英)的「跑起来之前」补两条:pnpm 的这条年龄策略,以及版本切换中途刷新插件列表可能看到的一次locale元信息错误——那是宿主读到了换了一半的包(清单已声明locale/、目录还没铺上),装稳后消失(装稳的 0.2.5 读出纯回退值,装稳的 0.2.6 读出中英标题、介绍与图标)。- 自检门新增一条:发行物里的
README.md/README.zh-CN.md必须出现钉到本版版本号的安装命令,且不许出现教人敲裸包名的命令行。
证据:pnpm 12.4.1 干净工作区实测——裸名与 @latest → 0.2.2;clearai-dsh@0.2.6 → 0.2.6,且 pnpm 自动往 pnpm-workspace.yaml 写入 minimumReleaseAgeExclude: clearai-dsh@0.2.6;把豁免改成按包名(- clearai-dsh)之后,裸名 → 0.2.6。机制出处:pnpm 文档 minimumReleaseAge(默认 1440,v11 起)与 minimumReleaseAgeStrict(内置默认下为 false)。
clearai-dsh 0.2.6 — 插件列表里终于写了介绍。
插件列表里终于写了介绍。 宿主从 locale/<语言>.json 的 meta.title / meta.description 与清单顶层的 icon 读一个插件的显示文字和图标;三样都缺时回退到包名 + npm 的 description + 默认图——而那正是我们一直显示的东西:标题 clearai-dsh(包名)、介绍 "ClearAI: The Epistemic Loop, native to DSH."(README 的 tagline)、一个通用图标。装上它的人在一个「插件市场」式的列表里看到的,是一句没有说清装上得到什么的英文。
这一版把这三样补上,并给顺带发现的两处过时改了账:docs/dsh-integration 里「预设怎么进名册」还写着 0.2.4 之前的 root 目录机制(名册换代时它没跟上);README 的安装段也没提现在这条官方路径。
Added
locale/en.json+locale/zh.json:标题ClearAI,一句话介绍分中英两份(界面是中文时不读英文)。宿主按文件名认语言,en.json是基准。brand/icon.svg:插件列表的图标。与logo.svg同一套几何,只把主笔颜色写死——主标那支是currentColor,而列表里它是以 data URL 读进来的、没有可继承的 CSS 上下文,currentColor会落到黑色,暗色卡片上只剩那颗点;品牌位图虽有两版,icon却只能给一个文件。取中性环色 + emerald 点,明暗两套主题都读得出。engines.dsh: ">=0.1.7-alpha.1":宿主下界写进清单,市场据此显示要求(此前只有描述里那句话)。screenshots.json:给市场卡片声明 5 张截图(四张英文面板 + 一张本体图工作区)。不声明时市场从 README 自动抽取,而我们的 README 里只有 logo 与星标图。
Changed
- 构建把
locale/打进发行物(装配表与package.json的files/exports同步):exports不放行./locale/*.json,宿主解析不到;不进files,发出去的包里就没有。图标走已有的brand/整目录拷贝。 - 自检门加了「可被发现」这一关:
verify-package判文件在不在、标题是不是包名、exports/files/engines.dsh齐不齐;verify-clean-install则调宿主自己的readPluginMeta对装好的那个包算一遍——「插件列表里会显示什么」从此是算出来的,不是我们复述的规则。这一关是先有的诊断:同一段宿主代码在我们补之前返回的正是{title: "clearai-dsh", description: "ClearAI: The Epistemic Loop, native to DSH."}。 - 文档跟上现状:
docs/dsh-integration的「预设怎么进名册」按声明行重写(preset-clearai那一条,构建期由preset/agent.cordis.yml派生,宿主 ≥0.1.7-alpha.1),并给「源 → 包」表补上locale/与brand/两行;README(中英)的安装段补上不开终端的那条路(设置 → 插件列表填包名)与市场收录后的那条。
clearai-dsh 0.2.5 — 跟上了宿主的会话格式 v4(消息来源改成生产者自有)。
跟上了宿主的会话格式 v4(消息来源改成生产者自有)。 宿主 0.1.7-rc.2 起,source.kind 就是生产者自己的身份:共享包装 { kind: 'plugin', plugin } 已退役,原生接纳在落账那一步当场拒绝它,报 format v4 message requires a producer-owned source kind。内核一直用旧包装下发运行态卡与外脑事实(合并目录 / 运行档 / 候选技能 / 世界线回灌),于是每一轮都在落账那一步整轮失败——卡片与事实一条都进不去。而单测当时全绿:它们直接调 fold,不经过宿主的接纳。
为什么是 plugin:clearai 这个值:宿主读取已发布 V3 日志时,未知名插件正是按 plugin:<插件名> 抬升的。选同一个值,老会话折得出来、新会话写得进去,两侧只认一个名字;另起一个名字则要永远维护新旧两套(而且旧会话在面板上的署名会和新会话长得不一样)。
Changed
- 内核署
plugin:clearai,不再写plugin字段:MESSAGE_SOURCE_KIND一处定义,运行态卡与无卡通知两条通道共用。 - 折叠层同时认两种署名:
plugin:clearai(现在写的)与退役前的{ kind: 'plugin', plugin: 'clearai' }(事件被直接喂进来时仍带着它:测试、旧导出、重放工具)。退回到旧形状时身份在plugin字段上,只认clearai——别的插件冒名不进这道门。 - 形态字段没动:
form: 'snapshot'+sections照旧,面板的上下文注入行仍按form渲染(署名只换了个名字,呈现不变)。 - e2e 里按 v3 形状找工具结果的地方跟着改到 v4:
toolCallId在 v4 挂在结果消息本身上(退役前嵌在第一个 content 块里),旧写法让CreatePlan的两条断言永远假红(进程 exit 0、变更记录也落了,断言却报「契约错误」);--freeform那两场的目标/计划断言也改成随形态跳过——与同一份工具里其余断言的判据对齐。 - 本地「干净安装」门不再随手挑一份 npx 缓存里的宿主:这台机器的缓存里躺着 0.1.5-rc.1 与 0.1.7-rc.2 两份,
readdir挑到旧的那份时--dump-config会因为我们的 bundle patch 是数组(宿主 0.1.7-alpha.1 起才支持)当场崩,四条组合断言全红——而真正的原因(验的根本不是要支持的宿主)一个字都不在输出里。现在按版本挑最新的一份,并把「dsh 来自哪里、是哪个版本」念出来(CI 走DSH_CLI_PREFIX,不受影响)。
证据:拿宿主真代码(dsh-session-format-v3-to-v4 的 assertV4RowAdmission)验过——新署名接纳,旧署名以那条原话被拒;并确认转换表里没有 clearai(所以旧日志正好抬升成同一个值)。内核侧新增一节断言钉住每一条下发消息的署名(非空、不是 plugin、等于 plugin:clearai、无 plugin 字段、form/sections 照旧);旧署名在 test/host.test.mjs 与 test/invariant.test.mjs 各留一条「仍折得出来」的正向用例。真跑一场(node tools/e2e-run.mjs --installed:真宿主 + 装出来的包 + 真模型 + 真会话日志):运行态卡以 plugin:clearai 落在日志里、没有接纳报错,goal/set 与 plan/created 照旧落账、投影长出计划,跨机制不变量全绿(35 通过 / 0 失败)。干净安装门(真 pnpm + 真 dsh plugin add + 真宿主 0.1.7-rc.2)18 通过 / 0 失败:装到的是 clearai-dsh@0.2.5,组合里 clearai-host 恰好一行,名册里 clearai 在列表里且没有 broken。
clearai-dsh 0.2.4 — 跟上了宿主的预设换代。
跟上了宿主的预设换代。 宿主 0.1.7-alpha.1 起把 agent 预设的注册从「root 目录扫描」换成了「组合里的声明行」,而 clearai-dsh 一直靠一条覆盖 agent-presets 行的补丁,把名册的 root 指到包内 presets/。那行 id 在新宿主里已经不存在,补丁没有落点——包照样装得上、宿主行照样起得来,但 ClearAI 不进模式选择器。这一版把它接上。
0.2.3 没有发布。 它以 v0.2.3 触发了发布流水线,在「干净安装」那道门被拦下(拦的正是上面这个断裂),publish、registry 回查、建 Release 三步全部 skipped——npm 上半点副作用都没有。它原本要带的三条文档改动(版本号、中英 README)并入本版,所以这一版也包含 0.2.3 的账。
⚠️ 宿主支持边界:本版要求宿主 ≥0.1.7-alpha.1。 在更早的宿主(≤0.1.6-alpha.2,包括曾被当作latest的0.1.5-rc.3)上,本版会因为找不到@deepseek-ai/dsh-agent-preset而让 profile 起不来。仍留在旧宿主的部署请继续用0.2.2。
Added
- 预设声明行:
presets/clearai/clearai.patch.yml—— 一条- id: preset-clearai声明行,config.plugins里放整份插件列表。它由preset/agent.cordis.yml构建期派生(与ui/vendor/*.js同一条纪律:生成物进仓库,包 = 源的纯函数),不手抄第二份。package.json的dsh.bundle.patch随之由单文件改为数组。 - 干净安装验收新增两条运行态断言:boot 一次 profile,直接读
agentPresets.list(),要求clearai在列表里且没有broken。静态的--dump-config看不出这件事——探针实测过:preset 里放一个根本不存在的插件,boot 依然完全正常,只有名册记一条 broken,界面就不显示这个预设。
Changed
- 包内插件改用包内子路径:
clearai-kernel与clearai-commands由./plugins/*.js改为clearai-dsh/presets/clearai/plugins/*.js(exports里加"./presets/*"放行)。声明行plugins的相对基准与原来的agent.cordis.yml不同,不改就会在名册里一直记着「never started」。 - workflow 引擎换包:预设里那条
@deepseek-ai/dsh-workflow-worker-thread在新宿主里已经下线,改为同 group 内的@deepseek-ai/dsh-workflow-ptc(与官方 standard 预设同形,且必须与tool-workflow/tool-ralph同处那个isolate: { workflowEngine: true }的 realm,否则两条工具会一直「waiting for workflowEngine」)。 pack/cordis.patch.yml里那段- id: agent-presets覆盖已删除:它在新宿主上没有目标行,留着只会让下一个人以为预设还靠目录扫描。- 文档与版本信息:项目版本更新至
0.2.4,中英 README 更新(原 0.2.3 的三条改动)。
clearai-dsh 0.2.2 — 装的时候不再吓人。
装的时候不再吓人。 0.2.1 的 npx clearai-dsh install 会打出一串 peer 警告(react / graphology-types …),读起来像装坏了——而它们一个字都不影响运行。这一版把安装面收窄到运行时真正需要的那一个依赖,并让安装侧 CLI 按系统语言出话。
Changed
- 安装面只剩一个运行时依赖。
@xyflow/react/graphology/graphology-layout-forceatlas2/docx挪进devDependencies:前三个只在构建期打 vendor(lib/client.js里是内联的,装机后不解析 npm),docx只给营销 docx 脚本用。于是 profile 里不再多装一批包,也不会再有那些注定填不上的 peer 警告——React 由 DSH 宿主提供(客户端半require('react')是问宿主拿的),graphology-types只是类型包。运行时唯一保留的是zod(宿主半lib/host.js真的from 'zod')。 - 安装侧 CLI 跟系统语言走。
doctor/install/root-yaml/seed/unseed的每一句都在中英两份文案表里(并排放在一处,改的时候不会只改一边);判据是--lang zh|en>CLEARAI_LANG>LC_ALL/LC_MESSAGES/LANG> ICU 的默认 locale,C/POSIX当「没有语言信息」按英文处理。0.2.1 之前是无论系统是什么都说中文。
clearai-dsh 0.2.1 — 知识任务是循环的原生行为,不是另一个模式。
知识任务是循环的原生行为,不是另一个模式。 本体、实体、认识论早就在,但普通研究的最短路径仍然是「检索 → 总结 → 写报告」——要建本体得用户先想起来说一句。这一版修的是接线缺口:把知识任务的判据做成结构的(目标还开着 + 带着登记过的假设),系统自己进知识模式;并把图从手写 SVG 换成 React Flow,给了它一个真正的全屏工作区。
Added
- 知识模式(分诊):判据是结构的——目标还开着,而且它带着登记过的命题。立约(
SetGoal)本身就是模型已经做出的承诺;普通问答从不立约,于是从不进这一档(零成本契约)。词面启发式猜错了没人能复核,结构判据可以。 - 知识预检:把「已知」自动送到模型面前——只读、有界、词面命中不猜语义;每条读数说得出它来自哪条事实。
- 缺口读数:从已有事实算出还缺什么形态,每条指得出一个能补的动作。真跑的反直觉结论:改变行为的其实是缺口的可见性,不是门——所以两者都留(可见性让它想做,门不让它绕过)。
- 知识门:结案之前、派评估者之前拦住没有形态的核心结论——纯散文不许升格。
- 知识 Inspector:点节点或边 → 定义 / 关系 / 断言 / 证据链 / 登记与修订史;「按此筛选」是详情里的显式动作,不猜你点它的意思。新增宿主只读路由
/api/clearai/inspector与行为测试。 - 图谱工作区:图带可展开成全屏工作区,布局是力导向(知识图谱的原生形状);渲染交给 React Flow(
@xyflow/react12,vendor 行随构建走,与dist/同一条纪律)。 - 哲学 P6:「本体生长是循环的原生行为,不是另一个模式」——写进循环哲学与认识论循环(中英)。
- 素材工具
tools/panel-shots.mjs:折一场真会话 → 挂真组件 → 真 Chrome 截图(与tools/graph-shots.mjs同一条口径)——面板截图从此可复现,不用人去界面里手点。
Changed
- 图 DTO 统一:图带与工作区共用同一份投影,判据只有一处(
fold→view()→graphProjection());「同一份账本 ⇒ 同一张图」是投影的性质。 - 预设描述收敛成一句中英并排:「利用认识论循环构建可信本体。Build a trustworthy ontology through the epistemic loop.」——名册只有这两行元数据,宿主不会替我们本地化,所以只能自己写死。
- README 的「安装」改为「安装与使用」:写明怎么在模式选择器里切到
ClearAI(默认标准模式不挂认识论循环),并把本体图 / 图带 / Inspector 的真机截图放进去。 - 营销物料换掉全部陈旧面板截图:知乎稿与 docx、小红书 9 张卡片改用真机会话的投影(统计同步为 15 套件 1618 条断言 · 29 个意图工具 · 6808 行内核 · 50 种事件分支)。
Fixed
- 命题身份在修订时被重新签发:同一句话在 id 空间里躺着两份读数(一份「已支持」、一份「未触及」),真会话的卡实测 4 条主张显示成 6~8 行。现在主张原文不变就复用原 id,换了主张才发新 id;并补上
hypothesis/superseded一直缺席的生产者。 - 节点拖不动(两次):受控
nodes没接onNodesChange;拖动键写成了对象,[object Object]查不到。 - React Flow 是 forwardRef 对象,不是函数——守卫把合法组件判成「没装上」;并改为同作用域注入,不再依赖运行时模块行。
- 图带收不到 sessionId;时间戳不再显示 1970。
- 工作区读面有主人:子会话结构上写不进词汇 / 事实货架。
- 力导向布局的四个真机缺陷(评估者独立复核后逐条修掉)。
clearai-dsh 0.2.0 — 研究的产品形态是本体。
研究的产品形态是本体。 认识论循环是本体的生产工艺,事实是它的内容单位——真值方向不变(世界 → 证据 → 事实 → 长成本体),所以本体不裁决任何事,它只收留被裁决过的东西。别的知识图谱靠抽取与断言堆边;这里的每一条边都要通过循环挣得。
Added
- 领域本体(语言层):六个账本事件(
ontology/term_added / predicate_added / *_revised / *_deprecated)折成state.lexicon;概念与谓词带依据接纳、版本化修订、黏性废止(没有删除);语义变化必须换 id。判据只有一份(ui/lib/domain-language.js纯函数),模型工具、人门动词与折法同源。 - 七个具名动词:
RegisterTerm / RegisterPredicate / ReviseTerm / RevisePredicate / DeprecateTerm / DeprecatePredicate / QueryKnowledge(意图工具 22 → 29 件)。 - 类型化断言:假设可带
assertions(主词–谓词–宾语;值形态 statement/quantity/formula/code/reference + 关系宾语 instance);提供即严校(引用存在、形态合域、同一事实自洽,一律落账之前拒),不提供放行(旧事实显示「未结构化」,不回溯改写);升格时断言随事实定型,事实按 id 关联假设(修掉按文本匹配)。 - 冲突只暴露,不裁决:同一单值谓词、同一主体、不同客体 ⇒ 派生一对冲突;卡片与货架各说一遍;不进闸门、不动任何一侧;处置走既有的人门。
- 本体格(中栏):图带(本体图|实体图、缩放平移、全景、点节点=按概念过滤)、断言芯片就地展开词条卡、冲突行+内联标记、过滤 N/M 行、折叠的词汇维护区(含登记抽屉与废止入口——经人门通道,判据与模型工具同一份);零成本契约:没有词条时这一格与从前逐像素相同。
- 词汇货架
clear/ontology/domain.md(概念/谓词/Mermaid 图/引用统计/废止缘由/冲突),幂等渲染,clear/ontology/进系统拒写清单。 - 提示词
clearai/domain-language(hard;24 段定义 / 23 段在场)。
Changed
- 定位:「认识论工作台」→「基于认识论的本体研究平台」;口号「从证据,到改进」→「从证据,到本体」;中栏「事实」格更名「本体」格,事实货架更名本体货架(视图 id
clearai-facts与账本词汇不动——只有用户可见名词收敛)。 - 术语收敛:本体图(原词汇图)/ 实体图(原知识图,「知识图谱」是业界词,指整体)。
- 事实货架 INDEX.md 头改「本体内容(已确立条目…)」。
- README 整体重塑:口号「你的研究,长成一个本体」;叙事从「认识论循环工作台」转向
「本体发现与探索平台」——先讲你得到什么(本体),再讲凭什么可信(循环,折叠在 details 里);
面板截图换为本体格为主角(待截);安装与案例后移。定位/术语表/CHANGELOG 同步。
Fixed
- e2e 的会话目录 slug 不认中文路径(宿主把 亨通 编码为
4EA8901A):真项目(中文工作区名)此前必被误报成一排 ✗。 --installed一次性形态:ClosePlan 之后交出回合即结束 ⇒ CloseGoal 必须同回合连续调用(已写进 e2e 记账)。