@wwkit/harness 1.0.4 → 1.0.5
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/README.md +34 -7
- package/commands/tl.md +11 -0
- package/package.json +5 -3
- package/readme/development.md +4 -2
- package/readme/publish.md +7 -4
package/README.md
CHANGED
|
@@ -27,7 +27,7 @@ pnpm install
|
|
|
27
27
|
|
|
28
28
|
```bash
|
|
29
29
|
cd ~/.config/opencode
|
|
30
|
-
npm install harness
|
|
30
|
+
npm install @wwkit/harness
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
## 引入方式
|
|
@@ -37,7 +37,7 @@ npm install harness
|
|
|
37
37
|
| 方式 | 配置 | 提供内容 | 适用 |
|
|
38
38
|
|------|------|---------|------|
|
|
39
39
|
| **A. 插件模式(仅技能)** | 在 `~/.config/opencode/opencode.jsonc` 注册插件 | 仅 `extract`/`revise` **技能** | 只需要技能能力 |
|
|
40
|
-
| **B. 环境变量模式(完整,推荐)** | 设置 `OPENCODE_CONFIG_DIR` 指向包目录 | **代理 +
|
|
40
|
+
| **B. 环境变量模式(完整,推荐)** | 设置 `OPENCODE_CONFIG_DIR` 指向包目录 | **代理 + 技能 + 命令**(原生扫描 `agents/`、`skills/`、`commands/`) | 需要完整能力 |
|
|
41
41
|
|
|
42
42
|
### 方式 A:插件模式(仅技能)
|
|
43
43
|
|
|
@@ -45,23 +45,23 @@ npm install harness
|
|
|
45
45
|
|
|
46
46
|
```jsonc
|
|
47
47
|
{
|
|
48
|
-
"plugin": ["node_modules/harness"]
|
|
48
|
+
"plugin": ["node_modules/@wwkit/harness"]
|
|
49
49
|
}
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
-
该模式仅注册技能(`extract`/`revise`)。opencode
|
|
52
|
+
该模式仅注册技能(`extract`/`revise`)。opencode 不支持通过插件注册代理或命令(`agents.paths`/`commands.paths` 字段不存在),因此**方式 A 不含代理与命令**。
|
|
53
53
|
|
|
54
54
|
### 方式 B:环境变量模式(完整,推荐)
|
|
55
55
|
|
|
56
|
-
将 `OPENCODE_CONFIG_DIR` 指向包的安装目录,opencode 会把它当作配置目录,原生发现其中的 `agents/`、`skills/`:
|
|
56
|
+
将 `OPENCODE_CONFIG_DIR` 指向包的安装目录,opencode 会把它当作配置目录,原生发现其中的 `agents/`、`skills/`、`commands/`:
|
|
57
57
|
|
|
58
58
|
```bash
|
|
59
|
-
echo 'export OPENCODE_CONFIG_DIR="$HOME/.config/opencode/node_modules/harness"' >> ~/.zshrc
|
|
59
|
+
echo 'export OPENCODE_CONFIG_DIR="$HOME/.config/opencode/node_modules/@wwkit/harness"' >> ~/.zshrc
|
|
60
60
|
```
|
|
61
61
|
|
|
62
62
|
说明:
|
|
63
63
|
- 需在**启动 opencode 前**设置环境变量;
|
|
64
|
-
-
|
|
64
|
+
- 与用户原有配置目录是**叠加**关系,不覆盖已有代理/技能/命令;
|
|
65
65
|
- 该变量为**单一路径**,同时只能指向一个目录;
|
|
66
66
|
- 若之前注册过插件(方式 A),改用方式 B 时请移除 `opencode.jsonc` 中的 `plugin` 项,避免技能重复扫描。
|
|
67
67
|
|
|
@@ -82,6 +82,12 @@ echo 'export OPENCODE_CONFIG_DIR="$HOME/.config/opencode/node_modules/harness"'
|
|
|
82
82
|
| `extract` | 按 format(list/detail/text/navi)从 HTML/文本/JSON 提取内容 |
|
|
83
83
|
| `revise` | 按 format(question/status/gallery/article)二次创作内容 |
|
|
84
84
|
|
|
85
|
+
### Commands(命令)
|
|
86
|
+
|
|
87
|
+
| Command | 作用 |
|
|
88
|
+
|---------|------|
|
|
89
|
+
| `/tl` | 中英互译:中文→英文附关键词解析(Keywords & Phrases),英文→中文 |
|
|
90
|
+
|
|
85
91
|
## 使用方式
|
|
86
92
|
|
|
87
93
|
```bash
|
|
@@ -99,3 +105,24 @@ opencode run --agent query '{"prompt": "写一篇关于AI的文章"}'
|
|
|
99
105
|
```
|
|
100
106
|
|
|
101
107
|
未提供 `output` 时,结果直接输出到 stdout。
|
|
108
|
+
|
|
109
|
+
## 使用命令(Commands)
|
|
110
|
+
|
|
111
|
+
命令由 opencode 原生加载(需方式 B:`OPENCODE_CONFIG_DIR` 指向本包),在 TUI 内输入命令名即可调用:
|
|
112
|
+
|
|
113
|
+
```text
|
|
114
|
+
/tl <要翻译的文本> # 中英互译;中文→英文附关键词解析,英文→中文
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## 用本包配置启动 opencode(pnpm 脚本)
|
|
118
|
+
|
|
119
|
+
在包目录 `packages/harness` 下执行 pnpm 脚本 `opencode`,它会先设置 `OPENCODE_CONFIG_DIR` 为本包目录,再启动 opencode(从而加载本包的技能/代理/命令):
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
pnpm run opencode # 在当前工作目录启动
|
|
123
|
+
pnpm run opencode -- /path/to/project # 指定 cwd:以该目录为项目目录启动
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
- `opencode` 脚本定义:`"opencode": "OPENCODE_CONFIG_DIR=$(pwd) opencode"`;
|
|
127
|
+
- 不带参数时 `opencode` 以当前工作目录启动;带参数时以参数目录为项目目录启动(opencode 位置参数即项目目录);
|
|
128
|
+
- 在 monorepo 根目录可用 `pnpm --filter harness run opencode`,或 `pnpm --dir packages/harness run opencode`。
|
package/commands/tl.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 中英互译(中文→英文附关键词解析;英文→中文)
|
|
3
|
+
model: openrouter/openrouter/free
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Translate $ARGUMENTS directly. No questions, no preamble, no tools, no extra remarks.
|
|
7
|
+
|
|
8
|
+
- Chinese → English: **Translation**(英文译文)+ **Keywords & Phrases**(从译文中挑关键词,附中文释义/例句)
|
|
9
|
+
- English → Chinese: **翻译**(中文译文)
|
|
10
|
+
|
|
11
|
+
Style: 通俗口语。专业术语保留英文(prompt/token/agent…),代码与命令原样不译。
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wwkit/harness",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"author": "bluesliu <langcai163@163.com>",
|
|
5
5
|
"description": "WebWork abilities for opencode",
|
|
6
6
|
"type": "module",
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
"plugin.js",
|
|
10
10
|
"skills",
|
|
11
11
|
"agents",
|
|
12
|
+
"commands",
|
|
12
13
|
"readme"
|
|
13
14
|
],
|
|
14
15
|
"jest": {
|
|
@@ -37,12 +38,12 @@
|
|
|
37
38
|
"access": "public"
|
|
38
39
|
},
|
|
39
40
|
"dependencies": {
|
|
41
|
+
"@opencode-ai/plugin": "1.18.27",
|
|
40
42
|
"ajv": "^8.17.0",
|
|
41
43
|
"cheerio": "^1.0.0",
|
|
42
44
|
"json5": "^2.2.3"
|
|
43
45
|
},
|
|
44
46
|
"devDependencies": {
|
|
45
|
-
"@opencode-ai/plugin": "1.18.18",
|
|
46
47
|
"jest": "^29.7.0"
|
|
47
48
|
},
|
|
48
49
|
"scripts": {
|
|
@@ -50,6 +51,7 @@
|
|
|
50
51
|
"test:all": "node --experimental-vm-modules node_modules/jest/bin/jest.js --no-cache tests/unit",
|
|
51
52
|
"e2e": "node --experimental-vm-modules node_modules/jest/bin/jest.js --no-cache",
|
|
52
53
|
"e2e:all": "node --experimental-vm-modules node_modules/jest/bin/jest.js --no-cache tests/e2e",
|
|
53
|
-
"release": "pnpm version patch && pnpm publish"
|
|
54
|
+
"release": "pnpm version patch && pnpm publish",
|
|
55
|
+
"opencode": "OPENCODE_CONFIG_DIR=$(pwd) opencode"
|
|
54
56
|
}
|
|
55
57
|
}
|
package/readme/development.md
CHANGED
|
@@ -20,6 +20,8 @@ plugin.js # 包入口("main"),仅把 skills/ 注册进 con
|
|
|
20
20
|
agents/*.md # 主代理(extract / revise / query),frontmatter 含权限块
|
|
21
21
|
skills/<name>/SKILL.md # 技能定义
|
|
22
22
|
skills/<name>/references/ # 工作流:*.md(LLM 指令)、*.js(ESM 辅助脚本)、*.json5(schema)
|
|
23
|
+
commands/*.md # opencode 命令(/tl 翻译)
|
|
24
|
+
package.json # scripts.opencode:pnpm run opencode 启动(设置 OPENCODE_CONFIG_DIR)
|
|
23
25
|
tests/unit/ # 单元测试(ESM)
|
|
24
26
|
tests/e2e/ # E2E 测试(CommonJS,真实调用 opencode run)
|
|
25
27
|
readme/ # 分模块文档(发布 / 测试 / 开发)
|
|
@@ -28,8 +30,8 @@ readme/ # 分模块文档(发布 / 测试 / 开发)
|
|
|
28
30
|
## 约定
|
|
29
31
|
|
|
30
32
|
- 开发与改动约定的权威说明见 `AGENTS.md`(文件格式 ESM/CJS 边界、技能工作流、schema 校验、无网络等约束)。
|
|
31
|
-
- 两种引入方式:**插件模式**仅注册技能(`plugin.js` 经 `config.skills.paths`);**环境变量模式**(`OPENCODE_CONFIG_DIR`
|
|
32
|
-
- 新增技能只需在 `skills/` 添加目录,新增代理只需在 `agents/` 添加 `.md` 文件,均无需改 `plugin.js`。
|
|
33
|
+
- 两种引入方式:**插件模式**仅注册技能(`plugin.js` 经 `config.skills.paths`);**环境变量模式**(`OPENCODE_CONFIG_DIR` 指向包目录)原生发现代理、技能与命令。两者二选一,避免技能重复扫描。
|
|
34
|
+
- 新增技能只需在 `skills/` 添加目录,新增代理只需在 `agents/` 添加 `.md` 文件,新增命令只需在 `commands/` 添加 `.md` 文件,均无需改 `plugin.js`。
|
|
33
35
|
- 新增 `revise`/`extract` 的 format 需同时提供 `<format>.md` 与 `<format>.schema.json5`(schema 为数组,`minItems: 1`)。
|
|
34
36
|
|
|
35
37
|
## 测试
|
package/readme/publish.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 发布 npm 包
|
|
2
2
|
|
|
3
|
-
发布配置已就绪:`package.json` 的 `files` 白名单(仅发布 `plugin.js`、`skills/`、`agents/`)、`prepublishOnly`(发布前自动跑单元测试)、`publishConfig.registry
|
|
3
|
+
发布配置已就绪:`package.json` 的 `files` 白名单(仅发布 `plugin.js`、`skills/`、`agents/`、`commands/`、`readme/`)、`prepublishOnly`(发布前自动跑单元测试)、`publishConfig.registry` + `access: public`(发布强制官方源、公开 scoped 包,安装仍走国内镜像)。
|
|
4
4
|
|
|
5
5
|
发布需在包目录 `packages/harness` 下执行 pnpm 命令:
|
|
6
6
|
|
|
@@ -23,15 +23,18 @@ pnpm publish
|
|
|
23
23
|
|
|
24
24
|
# 5. 验证
|
|
25
25
|
# 默认走仓库 .npmrc 的国内镜像(同步快,一般即可确认)
|
|
26
|
-
npm view harness version dist-tags.latest
|
|
26
|
+
npm view @wwkit/harness version dist-tags.latest
|
|
27
27
|
# 显式指定官方源确认发布成功
|
|
28
|
-
npm view harness version dist-tags.latest --registry=https://registry.npmjs.org/
|
|
28
|
+
npm view @wwkit/harness version dist-tags.latest --registry=https://registry.npmjs.org/
|
|
29
29
|
# 查看已发布的所有版本
|
|
30
|
-
npm view harness versions
|
|
30
|
+
npm view @wwkit/harness versions
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
## 注意事项
|
|
34
34
|
|
|
35
|
+
- 包名 `@wwkit/harness` 为 scoped 包,首次发布需 `publishConfig.access: public`(已配置),否则 npm 会当作私有包要求付费。
|
|
36
|
+
- 需先在 npmjs.org 注册 `wwkit` 组织(org),并把发布账号(如 `langcai`)加入其中,否则推送 `@wwkit/...` 会报 `Scope not found`。
|
|
37
|
+
|
|
35
38
|
- token 只写入 `~/.npmrc`(用户级),不要写进仓库的 `.npmrc` 或提交到 git。
|
|
36
39
|
- 仓库 `.npmrc` 指向国内镜像(淘宝 npmmirror),只影响安装;发布由 `publishConfig.registry` 强制走官方源。
|
|
37
40
|
- 包名在官方源首次发布前需未被占用;之后每次发布必须先 `pnpm version` 升版本(npm 不允许重复发布相同版本)。
|