ygl-trees 0.79.1 → 0.81.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/README.md +22 -14
- package/dist/bundle/bin.cjs +844 -629
- package/dist/packages/knowledge/skills/src/cmds.js +27 -0
- package/dist/packages/ops/tools/src/db-cmds.js +29 -4
- package/dist/packages/ops/tools/src/doctor.js +11 -6
- package/dist/packages/ops/tools/src/rels.js +16 -2
- package/dist/packages/research/pipeline/src/cmds.js +41 -6
- package/dist/packages/research/produce/src/produce-cmds.js +23 -8
- package/dist/packages/techtree/model/src/cmds.js +35 -5
- package/dist/packages/techtree/model/src/reads.js +51 -1
- package/dist/packages/techtree/model/src/writes.js +23 -0
- package/package.json +3 -3
- package/skills/ygl-trees-eval-gates/SKILL.md +6 -1
- package/skills/ygl-trees-quickstart/SKILL.md +3 -1
- package/skills/ygl-trees-relating/SKILL.md +5 -0
- package/skills/ygl-trees-research/SKILL.md +8 -1
- package/skills/ygl-trees-techtree/SKILL.md +4 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.81.0(2026-10-17)命令面五处修正 + task 挂树 + 事件流对账
|
|
4
|
+
- **doctor write_integrity 误报修复**(用户上报①:合法 `kb remove` 后 doctor 报 phantom write fail):`kb rm` 现在落 `kb.rm` 事件(与 source/evidence 对齐);check 10 的幽灵扫描加 `NOT EXISTS rm 事件` 豁免,且整体降级 fail→warn——无 rm 事件的缺行可能是 0.81 前的合法删除或 db sql 手工清理,不值得炸掉脚本门禁
|
|
5
|
+
- **`--url` 收任意 scheme**(上报②:a2a:// 被拒,跨 Agent 引用被迫落盘):正则放宽为 RFC-3986 `<scheme>://`,https/file/session/a2a/… 均可;url_hash 去重照常兜底
|
|
6
|
+
- **`node list` 未知旗标点名 rc=2**(上报③:`node list --tree X` 静默吞 flag 列出当前树——冻结契约⑤违约):允许集 {t, json, no-color},其余旗标点名拒绝并指路 `-t <tree>`
|
|
7
|
+
- **`node cond add|rm` 动作词**(上报④:`cond add p0` 被解析成 key="add" 报 node not found):add/rm/remove 动作词前置,与 link/unlock 风格一致;**新增 `node cond rm <key> --name <n>`**(此前只能 db sql 手工清理)——事务删除 + `node.cond-rm` 事件 + 缺失时点名并列出该节点剩余条件名
|
|
8
|
+
- **rel 节点引用的错误指引**(上报⑤:裸 `node:<key>` 在 current_tree 未设时报泛型 not found):无当前树 →「qualify as node:<tree>/<key> 或先 tree use」;有当前树但未命中 → 附「searched current tree 'X'」
|
|
9
|
+
- **`claim add --confidence` 数值档**(建议⑥):A|B|C 之外收 0-1 小数与 0-100(%)(0.92 / 85% 原样入库,列仍 TEXT);nonsense 仍 rc=2
|
|
10
|
+
- **`task add --node <tree>/<key>`**(建议⑦:task 与 rel 织物脱节):建任务同时挂 `tracked-by` 关系;`task:<id|title>` 成为第九类引用类型(REL_TYPES 8→9)
|
|
11
|
+
- **`db timeline --actor <a> --session <s>`**(建议⑧:多 Agent 并发对账):按 events.actor / payload.session 过滤增长视图,过滤时附最近 20 条原始事件尾
|
|
12
|
+
- 测试:`condrm.spec.ts` 3 例(自然键删除+事件 / 点名+剩余条件 / node not found)、`rels.test.ts` +1(task 引用解析)→ 单测 172;demo 5h 段 12 断言(含 doctor warn 降级、a2a://、confidence 三态、task --node、timeline actor、无树指路)→ 94;README 修复 db 命令表被 PG 段落吞并的排版缺陷 + `db timeline --actor` 文档
|
|
13
|
+
|
|
14
|
+
## 0.80.0(2026-10-17)rel 织物并入 eval 上下文 + 会话内裁决载体
|
|
15
|
+
- **eval 上下文包并入 rel 挂接摘要**(用户实测发现:裁决已 `decided-by` 挂链,P 仍 0.30,必须 `--state k=v` 手动携带事实才 0.92):`evalContext` 新增 `attachments`——节点挂接的 relations 双向查询(≤12 条),claim 摘录 text+status+confidence、evidence 摘录 quote(截 120 字)、kb/source 标题、node key+name、其余 id-only;无挂接时字段缺省(与旧形状逐字节兼容)
|
|
16
|
+
- **`research source add --adjudication "<裁决摘要>"`**:会话内裁决原生载体——url 自动 `session://adjudication/<yyyymmddhhmm>`,摘要兼作缺省标题;`--url` 校验放宽收 `session://`;裸 `--adjudication` 旗标缺值 rc=2
|
|
17
|
+
- 测试:`packages/techtree/model/tests/evalctx.spec.ts` 5 例(无挂接兼容 / decided-by 摘要 / 反向 evidenced-by / 截断与悬空退化 / 12 条上限);`scripts/readme-verify.sh` +1(--adjudication rc=0)
|
|
18
|
+
|
|
3
19
|
## 0.79.1(2026-10-17)锁身份 + serve --help 短路 + 批量判定 + 回测状态桥
|
|
4
20
|
- **异常①锁归属**:`.ygllock` 记录持有者命令行;撞锁报错、`db unlock`(含 `holder_cmd` JSON 字段)、`doctor` 三处回显真实持有者身份——CLI 撞 CLI 不再被误标为 serve(serve 从不取写锁,报错明示这一点)
|
|
5
21
|
- **异常②**:`webui serve --help` 短路打印用法即退出,不再直接启动服务(随机端口误触发实证)
|
package/README.md
CHANGED
|
@@ -60,9 +60,10 @@ node dist/bundle/bin.cjs db init # 发布产物(bin 字段指向它;比
|
|
|
60
60
|
|
|
61
61
|
```bash
|
|
62
62
|
ygl-trees node add steel # 先有节点
|
|
63
|
-
ygl-trees node cond steel --name research_lab_level --kind level --value 3
|
|
64
|
-
ygl-trees node cond steel --name has_engineer --kind flag --op has \
|
|
65
|
-
|
|
63
|
+
ygl-trees node cond add steel --name research_lab_level --kind level --value 3 # 必检
|
|
64
|
+
ygl-trees node cond add steel --name has_engineer --kind flag --op has \
|
|
65
|
+
--optional --effect cost_mul --weight 0.8 # 可选,打八折
|
|
66
|
+
ygl-trees node cond rm steel --name research_lab_level # 按自然键删除
|
|
66
67
|
```
|
|
67
68
|
|
|
68
69
|
### 索引:查询不再递归
|
|
@@ -103,7 +104,9 @@ ygl-trees node import --file tree.json --tree copy # 严格校验、事务导
|
|
|
103
104
|
|
|
104
105
|
**批量判定 + `--state-file`(0.79.1)**:`node can k1 k2 k3` 一次进程判定多节点(多键自动进批模式,`--json` 返回数组);`--state-file <json>` 喂状态袋,两种形状——**扁平计数** `{"y_imported": 40}` 全节点共享,或**按节点** `{"a": {"y_imported": 40}, "b": {...}}` 各取各袋。探针脚本从此每树起一次进程而非每节点。
|
|
105
106
|
|
|
106
|
-
**决策模型评估门(spec R8;0.14 布尔 → 0.26 三题型 → 0.27
|
|
107
|
+
**决策模型评估门(spec R8;0.14 布尔 → 0.26 三题型 → 0.27 混批 → 0.80 织物并入)**:语义型必检条件用 eval 题型声明,`node can <key> --eval` 会把**节点元数据 + 直接父(关联)+ 祖先链(闭包索引)+ 条件组 + 已解锁集 + --state 袋 + rel 挂接摘要**组装为上下文包,交给评估模型(TypeSafe jev,经 Vercel AI Gateway)判定:
|
|
108
|
+
|
|
109
|
+
- **rel 织物并入(0.80)**:节点挂接的 evidence(quote 摘要)/ claim(text+status+confidence)/ kb/source(标题)等 rel 关系(双向,≤12 条,文本截 120 字)自动进上下文包的 `attachments`——「证据挂链」纪律从此对语义门槛可见,不必再 `--state k=v` 手动携带裁决事实(实测 P 0.30 → 0.92 的差距由挂链补平)
|
|
107
110
|
|
|
108
111
|
- **三题型**:`--op eval`(布尔 P(true))/ `--op eval-choice`(多选一,判 **P(期望答案)**,`--options "k=desc,..."` + `--answer k`)/ `--op eval-score`(等级评分 `--levels "级0,..."` 2-10 级 + `--min-score n`,判概率加权均值 ±1 灰带)
|
|
109
112
|
- P≥0.7 通过 · P≤0.4 未通过 · **灰带 pending**(过程态,禁作终态,单列不阻塞也不放行);score 的灰带是 [min−1, min)
|
|
@@ -124,9 +127,10 @@ ygl-trees node import --file tree.json --tree copy # 严格校验、事务导
|
|
|
124
127
|
query add 登记检索式
|
|
125
128
|
query attach 检索式 ↔ 来源关联(query list 显示召回数)
|
|
126
129
|
source add 收来源,按 (project, url_hash) 去重;--query 顺带关联
|
|
130
|
+
--adjudication "<裁决摘要>":会话内裁决原生载体(url 自动 session://adjudication/<时刻>,摘要兼作标题);--url 收任意 <scheme>://(https/file/session/a2a/… 跨 Agent 引用免落盘)
|
|
127
131
|
source fetch <url> 直接抓取网页入库:title/meta description/去标签正文;15s 超时、非 html 拒收、失败零副作用,正文过薄自动打 needs_review
|
|
128
132
|
evidence add 从来源摘原文片段,带 locator(页码/章节);长摘录用 --file <path> 免转义
|
|
129
|
-
claim add
|
|
133
|
+
claim add 写下断言;--confidence 收 A|B|C 或数值档(0.92 / 85% 原样入库)
|
|
130
134
|
claim link 断言 ↔ 证据,自动算 supported / refuted / contested
|
|
131
135
|
--by-source:传来源 id 一次挂齐其全部证据;误传来源 id 会列出该来源的证据 id
|
|
132
136
|
claim resolve 人工仲裁出口:--as supported|refuted|contested,事件留痕;后续新证据链接会重新推导
|
|
@@ -185,17 +189,18 @@ ygl-trees rel add node:steel artifact:<id> --rel tracked-by # 产出/任
|
|
|
185
189
|
ygl-trees rel list --src node:steel # 双向浏览(对端解析成显示名)
|
|
186
190
|
```
|
|
187
191
|
|
|
188
|
-
`<type>:<ref>` 词表:`node claim evidence source query kb artifact skill`。`/api/node` 同时返回双向 `related[]`,WebUI 节点详情直接可见。
|
|
192
|
+
`<type>:<ref>` 词表:`node claim evidence source query kb artifact task skill`。`/api/node` 同时返回双向 `related[]`,WebUI 节点详情直接可见。
|
|
189
193
|
|
|
190
194
|
### task:任务状态机(todo → doing → done)
|
|
191
195
|
|
|
192
196
|
```bash
|
|
193
|
-
ygl-trees task add "<标题>" [--note ...]
|
|
197
|
+
ygl-trees task add "<标题>" [--note ...] # 建任务(todo)
|
|
198
|
+
ygl-trees task add "验证 X" --node <tree>/<key> # 建任务并挂到树节点(tracked-by)
|
|
194
199
|
ygl-trees task list [--status todo|doing|done]
|
|
195
200
|
ygl-trees task doing <id> | task done <id> # 推进(每次状态变更留痕 events)
|
|
196
201
|
```
|
|
197
202
|
|
|
198
|
-
任务本体是 `artifacts` 的 `kind='task'` + meta 状态信封(**没有独立的 tasks 表**)——与产出工件同源,可被 `rel ... tracked-by`
|
|
203
|
+
任务本体是 `artifacts` 的 `kind='task'` + meta 状态信封(**没有独立的 tasks 表**)——与产出工件同源,可被 `rel ... tracked-by` 挂到节点(`task add --node` 一步到位,`task:<id>` 也是合法引用类型)。
|
|
199
204
|
|
|
200
205
|
### produce spec / design:工程产出形态
|
|
201
206
|
|
|
@@ -243,15 +248,18 @@ CJK 检索是个坑:FTS5 默认 `unicode61` 会把整句中文当成一个 tok
|
|
|
243
248
|
|
|
244
249
|
- **写入幂等**:`claim / evidence / query / kb / job` 的写命令按内容 hash 判重,重复执行返回已存在行(`! duplicate, kept existing`),Agent 重试不产生脏数据;`--force` 显式保留重复(job 用标题序号后缀)
|
|
245
250
|
- **完整备份**:`db export <file>` 覆盖全部数据表(含七张科技树表)并输出逐表行数摘要;dump 自带 `PRAGMA foreign_keys` 开关,可直接重放恢复。`--lean` 跳过闭包/拓扑等派生表数据
|
|
246
|
-
- **PostgreSQL 镜像/迁移**:`db
|
|
247
|
-
db timeline growth visualization (events/day)
|
|
248
|
-
db workspace list|create multi-workspace management
|
|
249
|
-
db obsidian [dir] export as Obsidian markdown vault
|
|
250
|
-
db sync pg <url>` 把整库单向全量镜像到 PG(可刷新,供 SQL 工具/团队分析);`db migrate pg <url> [--fresh]` 一次性完整保真迁移(FK/UNIQUE/索引约束齐全,目标库可独立持有)。两者都不做双后端同写,中文检索在 PG 侧用 tsvector+GIN 等价召回(详见 docs/pg-compat.md)。url 可走环境变量 `YGL_PG_URL`;`pg` 为可选依赖,不用 PG 则零影响
|
|
251
|
+
- **PostgreSQL 镜像/迁移**:`db sync pg <url>` 把整库单向全量镜像到 PG(可刷新,供 SQL 工具/团队分析);`db migrate pg <url> [--fresh]` 一次性完整保真迁移(FK/UNIQUE/索引约束齐全,目标库可独立持有)。两者都不做双后端同写,中文检索在 PG 侧用 tsvector+GIN 等价召回(详见 docs/pg-compat.md)。url 可走环境变量 `YGL_PG_URL`;`pg` 为可选依赖,不用 PG 则零影响
|
|
251
252
|
- **TypeORM 查询层**(0.8.0 起,研究域试点 `project show`):实体是 schema v8 的类型化快照(`synchronize` 永久 false,迁移权威仍在 user_version 轨道;FTS5/PRAGMA 路径保持裸 SQL)。依赖 typeorm + better-sqlite3 + reflect-metadata
|
|
252
253
|
- **重复可见**:`db dups` 列出同内容多行(含迁移前存量重复)
|
|
253
254
|
- **自动迁移**:v2 老库首次打开自动升级 schema v3(补 content_hash 列 + 回填 + 唯一索引),无人工介入
|
|
254
255
|
|
|
256
|
+
```bash
|
|
257
|
+
db time-travel "<ts>" # 工作区在历史时刻的状态
|
|
258
|
+
db timeline [--actor <a>] [--session <s>] # events/day 增长视图;过滤时附最近 20 条原始事件(多 Agent 对账)
|
|
259
|
+
db workspace list|create # 多工作区管理
|
|
260
|
+
db obsidian [dir] # 导出 Obsidian markdown vault
|
|
261
|
+
```
|
|
262
|
+
|
|
255
263
|
---
|
|
256
264
|
|
|
257
265
|
## 四、调度
|
|
@@ -281,7 +289,7 @@ ygl-trees agent ask "<question>" natural language interface
|
|
|
281
289
|
## 五b、开发与运维工具
|
|
282
290
|
|
|
283
291
|
```bash
|
|
284
|
-
pnpm test # 四段制回归:unit (vitest
|
|
292
|
+
pnpm test # 四段制回归:unit (vitest 172 例) + build (tsc + tsdown) + demo(94 条断言)+ contract:audit(86 项)
|
|
285
293
|
pnpm bench # 性能基准七席(startup/写路径/检索/索引),每席含 RSS 内存端点 → tmp/bench-results.json
|
|
286
294
|
node benchmarks/bench.js --quick # 缩小规模快速跑
|
|
287
295
|
pnpm pack:check # 发布就绪门禁:打包 → 隔离安装 → 驱动发布产物跑命令面 + --json 纯净性
|