@hupan56/wlkj 3.1.25 → 3.1.26
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/bin/cli.js +1516 -1499
- package/package.json +1 -1
- package/templates/qoder/scripts/README.md +102 -102
- package/templates/qoder/scripts/deployment/setup/init_doctor.py +1 -1
- package/templates/qoder/scripts/deployment/setup/setup.py +1 -1
- package/templates/qoder/scripts/domain/report/add_session.py +2 -2
- package/templates/qoder/scripts/domain/task/task.py +1 -1
- package/templates/qoder/scripts/foundation/core/paths.py +705 -705
- package/templates/qoder/scripts/foundation/data/task_utils.py +427 -427
- package/templates/qoder/scripts/foundation/integrations/active_task.py +244 -244
- package/templates/root/AGENTS.md +1 -1
package/package.json
CHANGED
|
@@ -1,102 +1,102 @@
|
|
|
1
|
-
# .qoder/scripts/ — 引擎脚本目录 (分层架构)
|
|
2
|
-
|
|
3
|
-
> 引擎代码, 由 `npx @hupan56/wlkj init/update` 生成, **不进团队 git** (
|
|
4
|
-
> 用户不直接碰这些文件 — 通过 `/命令` 和 `npx` 间接调用。
|
|
5
|
-
|
|
6
|
-
## 🏗️ 分层架构 (7 层)
|
|
7
|
-
|
|
8
|
-
子目录化 (v3.0) 后, 脚本按职责分层, 顶层**无散落 .py**, 只有 7 个分层目录:
|
|
9
|
-
|
|
10
|
-
```
|
|
11
|
-
scripts/
|
|
12
|
-
├── orchestration/ 编排层 — wlkj.py 统一入口 (载体收敛点)
|
|
13
|
-
├── foundation/ 基础层 — 共享库 (被所有层 import)
|
|
14
|
-
├── domain/ 领域层 — 业务逻辑 (kg/task/report/...)
|
|
15
|
-
├── protocol/ 协议层 — MCP server / 传输适配
|
|
16
|
-
├── capability/ 能力层 — 链式能力编排 / 冒烟测试
|
|
17
|
-
├── validation/ 验证层 — 测试 / 评测 / 基准
|
|
18
|
-
└── deployment/ 部署层 — 安装 / 体检 / 载体同步
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
## 🚪 统一入口: `orchestration/wlkj.py` (Facade)
|
|
22
|
-
|
|
23
|
-
**所有 Qoder 载体 (commands/skills/rules) 的脚本调用都走这个入口**, 由 DISPATCH 表路由到
|
|
24
|
-
分层路径。这样 scripts/ 重组目录时只改 DISPATCH 一处, 载体不受影响。
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
python .qoder/scripts/orchestration/wlkj.py <命令> [参数...]
|
|
28
|
-
# 例: wlkj.py kg search 保险 | wlkj.py task list | wlkj.py doctor --fix
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
完整命令表见 `wlkj.py` 的 DISPATCH (kg/search/context/task/sync/req/eval/learn/status/report/test/doctor 等 36 条)。
|
|
32
|
-
脚本内部互调 (Python 进程间) 直接用分层路径, 不绕 wlkj (避免 subprocess 嵌套)。
|
|
33
|
-
|
|
34
|
-
## 各层职责 + 关键脚本
|
|
35
|
-
|
|
36
|
-
### 🎼 orchestration/ — 编排
|
|
37
|
-
| 脚本 | 用途 |
|
|
38
|
-
|------|------|
|
|
39
|
-
| `wlkj.py` | **统一调度入口**, DISPATCH 透明转发到各层脚本 |
|
|
40
|
-
|
|
41
|
-
### 🧱 foundation/ — 基础 (共享库, 不含业务)
|
|
42
|
-
| 模块 | 用途 |
|
|
43
|
-
|------|------|
|
|
44
|
-
| `bootstrap.py` | sys.path 自举 (子目录化后定位 scripts/ 根) |
|
|
45
|
-
| `core/paths.py` | **路径管理** (PROJECT_ROOT / get_repo_root / get_developer) |
|
|
46
|
-
| `identity/` | 身份 (identity.py / developer.py / roles.py 角色章节) |
|
|
47
|
-
| `io/` | 原子 IO (atomicio.py) / 文件锁 (filelock.py) |
|
|
48
|
-
| `protocol/mcp_base.py` | MCP server 基类 (@tool 装饰器 + 元类注册) |
|
|
49
|
-
| `integrations/` | 术语扩展 (terms.py) / 禅道客户端 (zentao_client.py, 单一真源) |
|
|
50
|
-
| `utils/eval_api.py` | 评测 API |
|
|
51
|
-
|
|
52
|
-
### 🎯 domain/ — 领域 (业务逻辑)
|
|
53
|
-
| 子包 | 关键脚本 | 用途 |
|
|
54
|
-
|------|---------|------|
|
|
55
|
-
| `kg/` | `kg.py` (**图谱统一入口**, 13+ 能力) | 知识图谱 |
|
|
56
|
-
| `kg/search/` | search_index.py / context_pack.py / prefetch.py | 代码搜索 / 一键上下文 |
|
|
57
|
-
| `kg/build/` | kg_build.py / kg_build_db.py / kg_incremental.py / build_style_index.py | 图谱构建 |
|
|
58
|
-
| `kg/graph/` | kg_semantic.py / kg_link_db.py | 语义 / 数据库图谱链接 |
|
|
59
|
-
| `kg/storage/` | kg_duckdb.py | DuckDB 存储层 |
|
|
60
|
-
| `kg/server/` | kgd.py (常驻服务) / perf_bench.py | 语义加速服务 |
|
|
61
|
-
| `task/` | task.py (**任务系统**) / team_sync.py / git_sync.py / zentao_sync.py / syncgate.py | 任务 + 同步 |
|
|
62
|
-
| `requirement/` | req.py / archive_prd.py | 需求生命周期 |
|
|
63
|
-
| `report/` | report.py / status.py / role.py / export.py / *_snapshot.py | 报告 / 状态 |
|
|
64
|
-
| `design/` | fill_prototype.py / gen_design_doc.py | 原型填充 / 设计文档 |
|
|
65
|
-
| `learning/` | learn.py | 学习飞轮 (埋点) |
|
|
66
|
-
|
|
67
|
-
### 🔌 protocol/ — 协议
|
|
68
|
-
| 子包 | 脚本 | 用途 |
|
|
69
|
-
|------|------|------|
|
|
70
|
-
| `mcp/` | mcp_launcher.py (**统一启动器**) / kg_mcp_server.py / mysql_mcp_server.py / zentao_mcp_server.py / lanhu_stdio_wrapper.py / mcp_doctor.py | 4 个自有 MCP server |
|
|
71
|
-
| `transports/` | cli.py | CLI 传输适配 |
|
|
72
|
-
|
|
73
|
-
### 🧩 capability/ — 能力编排
|
|
74
|
-
| 脚本 | 用途 |
|
|
75
|
-
|------|------|
|
|
76
|
-
| `chain.py` / `memory_chain.py` | 链式能力编排 |
|
|
77
|
-
| `adapters/` (cli.py / qw.py / mcp.py) | 能力适配器 (CLI/QoderWork/MCP) |
|
|
78
|
-
|
|
79
|
-
### 🧪 validation/ — 验证
|
|
80
|
-
| 子包 | 关键脚本 | 用途 |
|
|
81
|
-
|------|---------|------|
|
|
82
|
-
| `test/` | autotest.py / smoke_all_commands.py / benchmark.py / kg_test_runner.py | 自动测试 / 冒烟 / 基准 |
|
|
83
|
-
| `metrics/` | eval_prd.py / usability_score.py | **PRD 质量门禁** (EVA, ≥80%) + **工作流可用性** (采纳+流程) |
|
|
84
|
-
| `eval/` | 性能评测报告 | |
|
|
85
|
-
|
|
86
|
-
### 🚀 deployment/ — 部署
|
|
87
|
-
| 脚本 | 用途 |
|
|
88
|
-
|------|------|
|
|
89
|
-
| `setup.py` | **一键就绪** (npx init 调的主体) |
|
|
90
|
-
| `init_doctor.py` | 环境体检 + 自愈 + 身份注册 |
|
|
91
|
-
| `install_qoderwork.py` | QoderWork 技能/MCP 安装 |
|
|
92
|
-
| `carriers.py` | **载体一致性** (check/check-paths/sync/all, 4 载体对齐) |
|
|
93
|
-
| `repo_root.py` | 仓库根探测 (QoderWork 桌面端用) |
|
|
94
|
-
| `setup_lanhu.py` / `platform_doctor.py` | 蓝湖配置 / 平台体检 |
|
|
95
|
-
|
|
96
|
-
## 设计原则
|
|
97
|
-
|
|
98
|
-
1. **分层即分类**: 物理目录 = 职责分层 (foundation/domain/protocol/...), 取代旧的命名前缀
|
|
99
|
-
2. **单一入口**: `orchestration/wlkj.py` 是载体层唯一收敛点; `domain/kg/kg.py` 是图谱入口; `domain/task/task.py` 是任务入口
|
|
100
|
-
3. **foundation/ 共享**: 通用逻辑抽到 foundation/, 领域无关 (路径/身份/IO/协议基类)
|
|
101
|
-
4. **载体与引擎解耦**: 载体 (commands/skills) 只认 wlkj.py 一个路径, 引擎目录重组不波及载体
|
|
102
|
-
5. **降级不崩**: 缺依赖/缺数据时优雅降级, 绝不 sys.exit 崩溃 (见 protocol/mcp/mcp_launcher.py)
|
|
1
|
+
# .qoder/scripts/ — 引擎脚本目录 (分层架构)
|
|
2
|
+
|
|
3
|
+
> 引擎代码, 由 `npx @hupan56/wlkj init/update` 生成, **不进团队 git** (引擎数据分离)。
|
|
4
|
+
> 用户不直接碰这些文件 — 通过 `/命令` 和 `npx` 间接调用。
|
|
5
|
+
|
|
6
|
+
## 🏗️ 分层架构 (7 层)
|
|
7
|
+
|
|
8
|
+
子目录化 (v3.0) 后, 脚本按职责分层, 顶层**无散落 .py**, 只有 7 个分层目录:
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
scripts/
|
|
12
|
+
├── orchestration/ 编排层 — wlkj.py 统一入口 (载体收敛点)
|
|
13
|
+
├── foundation/ 基础层 — 共享库 (被所有层 import)
|
|
14
|
+
├── domain/ 领域层 — 业务逻辑 (kg/task/report/...)
|
|
15
|
+
├── protocol/ 协议层 — MCP server / 传输适配
|
|
16
|
+
├── capability/ 能力层 — 链式能力编排 / 冒烟测试
|
|
17
|
+
├── validation/ 验证层 — 测试 / 评测 / 基准
|
|
18
|
+
└── deployment/ 部署层 — 安装 / 体检 / 载体同步
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## 🚪 统一入口: `orchestration/wlkj.py` (Facade)
|
|
22
|
+
|
|
23
|
+
**所有 Qoder 载体 (commands/skills/rules) 的脚本调用都走这个入口**, 由 DISPATCH 表路由到
|
|
24
|
+
分层路径。这样 scripts/ 重组目录时只改 DISPATCH 一处, 载体不受影响。
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
python .qoder/scripts/orchestration/wlkj.py <命令> [参数...]
|
|
28
|
+
# 例: wlkj.py kg search 保险 | wlkj.py task list | wlkj.py doctor --fix
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
完整命令表见 `wlkj.py` 的 DISPATCH (kg/search/context/task/sync/req/eval/learn/status/report/test/doctor 等 36 条)。
|
|
32
|
+
脚本内部互调 (Python 进程间) 直接用分层路径, 不绕 wlkj (避免 subprocess 嵌套)。
|
|
33
|
+
|
|
34
|
+
## 各层职责 + 关键脚本
|
|
35
|
+
|
|
36
|
+
### 🎼 orchestration/ — 编排
|
|
37
|
+
| 脚本 | 用途 |
|
|
38
|
+
|------|------|
|
|
39
|
+
| `wlkj.py` | **统一调度入口**, DISPATCH 透明转发到各层脚本 |
|
|
40
|
+
|
|
41
|
+
### 🧱 foundation/ — 基础 (共享库, 不含业务)
|
|
42
|
+
| 模块 | 用途 |
|
|
43
|
+
|------|------|
|
|
44
|
+
| `bootstrap.py` | sys.path 自举 (子目录化后定位 scripts/ 根) |
|
|
45
|
+
| `core/paths.py` | **路径管理** (PROJECT_ROOT / get_repo_root / get_developer) |
|
|
46
|
+
| `identity/` | 身份 (identity.py / developer.py / roles.py 角色章节) |
|
|
47
|
+
| `io/` | 原子 IO (atomicio.py) / 文件锁 (filelock.py) |
|
|
48
|
+
| `protocol/mcp_base.py` | MCP server 基类 (@tool 装饰器 + 元类注册) |
|
|
49
|
+
| `integrations/` | 术语扩展 (terms.py) / 禅道客户端 (zentao_client.py, 单一真源) |
|
|
50
|
+
| `utils/eval_api.py` | 评测 API |
|
|
51
|
+
|
|
52
|
+
### 🎯 domain/ — 领域 (业务逻辑)
|
|
53
|
+
| 子包 | 关键脚本 | 用途 |
|
|
54
|
+
|------|---------|------|
|
|
55
|
+
| `kg/` | `kg.py` (**图谱统一入口**, 13+ 能力) | 知识图谱 |
|
|
56
|
+
| `kg/search/` | search_index.py / context_pack.py / prefetch.py | 代码搜索 / 一键上下文 |
|
|
57
|
+
| `kg/build/` | kg_build.py / kg_build_db.py / kg_incremental.py / build_style_index.py | 图谱构建 |
|
|
58
|
+
| `kg/graph/` | kg_semantic.py / kg_link_db.py | 语义 / 数据库图谱链接 |
|
|
59
|
+
| `kg/storage/` | kg_duckdb.py | DuckDB 存储层 |
|
|
60
|
+
| `kg/server/` | kgd.py (常驻服务) / perf_bench.py | 语义加速服务 |
|
|
61
|
+
| `task/` | task.py (**任务系统**) / team_sync.py / git_sync.py / zentao_sync.py / syncgate.py | 任务 + 同步 |
|
|
62
|
+
| `requirement/` | req.py / archive_prd.py | 需求生命周期 |
|
|
63
|
+
| `report/` | report.py / status.py / role.py / export.py / *_snapshot.py | 报告 / 状态 |
|
|
64
|
+
| `design/` | fill_prototype.py / gen_design_doc.py | 原型填充 / 设计文档 |
|
|
65
|
+
| `learning/` | learn.py | 学习飞轮 (埋点) |
|
|
66
|
+
|
|
67
|
+
### 🔌 protocol/ — 协议
|
|
68
|
+
| 子包 | 脚本 | 用途 |
|
|
69
|
+
|------|------|------|
|
|
70
|
+
| `mcp/` | mcp_launcher.py (**统一启动器**) / kg_mcp_server.py / mysql_mcp_server.py / zentao_mcp_server.py / lanhu_stdio_wrapper.py / mcp_doctor.py | 4 个自有 MCP server |
|
|
71
|
+
| `transports/` | cli.py | CLI 传输适配 |
|
|
72
|
+
|
|
73
|
+
### 🧩 capability/ — 能力编排
|
|
74
|
+
| 脚本 | 用途 |
|
|
75
|
+
|------|------|
|
|
76
|
+
| `chain.py` / `memory_chain.py` | 链式能力编排 |
|
|
77
|
+
| `adapters/` (cli.py / qw.py / mcp.py) | 能力适配器 (CLI/QoderWork/MCP) |
|
|
78
|
+
|
|
79
|
+
### 🧪 validation/ — 验证
|
|
80
|
+
| 子包 | 关键脚本 | 用途 |
|
|
81
|
+
|------|---------|------|
|
|
82
|
+
| `test/` | autotest.py / smoke_all_commands.py / benchmark.py / kg_test_runner.py | 自动测试 / 冒烟 / 基准 |
|
|
83
|
+
| `metrics/` | eval_prd.py / usability_score.py | **PRD 质量门禁** (EVA, ≥80%) + **工作流可用性** (采纳+流程) |
|
|
84
|
+
| `eval/` | 性能评测报告 | |
|
|
85
|
+
|
|
86
|
+
### 🚀 deployment/ — 部署
|
|
87
|
+
| 脚本 | 用途 |
|
|
88
|
+
|------|------|
|
|
89
|
+
| `setup.py` | **一键就绪** (npx init 调的主体) |
|
|
90
|
+
| `init_doctor.py` | 环境体检 + 自愈 + 身份注册 |
|
|
91
|
+
| `install_qoderwork.py` | QoderWork 技能/MCP 安装 |
|
|
92
|
+
| `carriers.py` | **载体一致性** (check/check-paths/sync/all, 4 载体对齐) |
|
|
93
|
+
| `repo_root.py` | 仓库根探测 (QoderWork 桌面端用) |
|
|
94
|
+
| `setup_lanhu.py` / `platform_doctor.py` | 蓝湖配置 / 平台体检 |
|
|
95
|
+
|
|
96
|
+
## 设计原则
|
|
97
|
+
|
|
98
|
+
1. **分层即分类**: 物理目录 = 职责分层 (foundation/domain/protocol/...), 取代旧的命名前缀
|
|
99
|
+
2. **单一入口**: `orchestration/wlkj.py` 是载体层唯一收敛点; `domain/kg/kg.py` 是图谱入口; `domain/task/task.py` 是任务入口
|
|
100
|
+
3. **foundation/ 共享**: 通用逻辑抽到 foundation/, 领域无关 (路径/身份/IO/协议基类)
|
|
101
|
+
4. **载体与引擎解耦**: 载体 (commands/skills) 只认 wlkj.py 一个路径, 引擎目录重组不波及载体
|
|
102
|
+
5. **降级不崩**: 缺依赖/缺数据时优雅降级, 绝不 sys.exit 崩溃 (见 protocol/mcp/mcp_launcher.py)
|
|
@@ -597,7 +597,7 @@ def check_prd_templates():
|
|
|
597
597
|
problem('PRD 模板缺失: ' + md, '需要 AI 从团队章程 docx 重新蒸馏')
|
|
598
598
|
|
|
599
599
|
# Qoder 全系列载体: rules 在 IDE/Quest 生效, AGENTS.md 在 CLI 生效
|
|
600
|
-
# (
|
|
600
|
+
# (引擎数据分离: rules 是引擎的一部分, 由 wlkj init/update 生成, 不在团队 git 里)
|
|
601
601
|
rules_file = os.path.join(BASE, '.qoder', 'rules', 'wl-pipeline.md')
|
|
602
602
|
if os.path.isfile(rules_file):
|
|
603
603
|
say(OK, '.qoder/rules/wl-pipeline.md (Qoder IDE/Quest 规则载体, wlkj 生成)')
|
|
@@ -498,7 +498,7 @@ def _setup_tracking(base):
|
|
|
498
498
|
没这步, git pull 会报 "no tracking information for the current branch"。
|
|
499
499
|
fetch 可能因网络/认证失败 — 失败只警告, 不阻塞 (remote 至少配上了)。
|
|
500
500
|
|
|
501
|
-
关键修复 (
|
|
501
|
+
关键修复 (引擎数据分离): 如果本地是空的 git init 历史 (没有 commit) 或与远程
|
|
502
502
|
不相关 (unrelated histories), 就直接 git reset --hard origin/<branch> 采用远程历史。
|
|
503
503
|
原理: 引擎代码现在由 npm 包生成 (不在 git 里), 团队数据 (config/data/workspace) 在
|
|
504
504
|
远程 → 本地空历史直接采用远程是唯一正确姿势, 彻底消除 "refusing to merge unrelated
|
|
@@ -13,7 +13,7 @@ Usage:
|
|
|
13
13
|
日志文件: .qoder/workspace/<developer>/journal-N.md
|
|
14
14
|
索引文件: .qoder/workspace/<developer>/index.md
|
|
15
15
|
|
|
16
|
-
参考:
|
|
16
|
+
参考: add_session.py 设计
|
|
17
17
|
"""
|
|
18
18
|
|
|
19
19
|
from __future__ import annotations
|
|
@@ -28,7 +28,7 @@ for _ in range(10):
|
|
|
28
28
|
break
|
|
29
29
|
if _cp not in _s.path: _s.path.insert(0, _cp)
|
|
30
30
|
from bootstrap import setup; setup()
|
|
31
|
-
from foundation.core.paths import get_repo_root
|
|
31
|
+
from foundation.core.paths import get_repo_root
|
|
32
32
|
|
|
33
33
|
import argparse
|
|
34
34
|
import re
|
|
@@ -15,7 +15,7 @@ QODER Pipeline - 任务生命周期管理
|
|
|
15
15
|
- add-subtask / remove-subtask: 父子任务关联
|
|
16
16
|
- set-due / block / unblock / gantt: 排期与依赖
|
|
17
17
|
|
|
18
|
-
参考:
|
|
18
|
+
参考: task.py 设计
|
|
19
19
|
|
|
20
20
|
Usage:
|
|
21
21
|
python task.py create "<title>" [--slug <name>] [--assignee <dev>] [--priority P0|P1|P2|P3]
|