feihong-code 8.0.1 → 8.3.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/.github/dependabot.yml +1 -1
- package/.github/workflows/ci.yml +7 -7
- package/.github/workflows/release.yml +211 -203
- package/.github/workflows/swebench-real.yml +12 -1
- package/CHANGELOG.md +37 -0
- package/README.md +656 -656
- package/dist/cli/index.js +1 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/node-guard.js +17 -0
- package/dist/cli/node-guard.js.map +1 -0
- package/dist/cli/version.js +1 -1
- package/docs/API.md +827 -827
- package/docs//344/275/277/347/224/250/350/257/264/346/230/216/344/271/246-v8.0.1.md +146 -146
- package/docs//344/275/277/347/224/250/350/257/264/346/230/216/344/271/246.md +227 -227
- package/package.json +7 -4
package/.github/dependabot.yml
CHANGED
package/.github/workflows/ci.yml
CHANGED
|
@@ -22,7 +22,7 @@ jobs:
|
|
|
22
22
|
strategy:
|
|
23
23
|
fail-fast: false
|
|
24
24
|
matrix:
|
|
25
|
-
node: [
|
|
25
|
+
node: [22]
|
|
26
26
|
steps:
|
|
27
27
|
- uses: actions/checkout@v4
|
|
28
28
|
- uses: actions/setup-node@v4
|
|
@@ -61,7 +61,7 @@ jobs:
|
|
|
61
61
|
- uses: actions/checkout@v4
|
|
62
62
|
- uses: actions/setup-node@v4
|
|
63
63
|
with:
|
|
64
|
-
node-version:
|
|
64
|
+
node-version: 22
|
|
65
65
|
- run: npm install
|
|
66
66
|
- run: npm run build
|
|
67
67
|
- name: M4 断言套件(RBAC / 审计链 / 多租户 / 配额)
|
|
@@ -100,14 +100,14 @@ jobs:
|
|
|
100
100
|
- uses: actions/checkout@v4
|
|
101
101
|
- uses: actions/setup-node@v4
|
|
102
102
|
with:
|
|
103
|
-
node-version:
|
|
103
|
+
node-version: 22
|
|
104
104
|
- run: npm install
|
|
105
105
|
- run: npm run build
|
|
106
106
|
- name: 发布包不得包含密钥或源码
|
|
107
107
|
run: |
|
|
108
108
|
npm pack --dry-run 2>&1 | tee pack.txt
|
|
109
|
-
for bad in "
|
|
110
|
-
if grep -
|
|
109
|
+
for bad in "\\.env([ /]|$)" "src/" ".workbuddy" "policy.json" "id_rsa"; do
|
|
110
|
+
if grep -qE "$bad" pack.txt; then
|
|
111
111
|
echo "::error::发布包中检出敏感条目: $bad"
|
|
112
112
|
exit 1
|
|
113
113
|
fi
|
|
@@ -115,7 +115,7 @@ jobs:
|
|
|
115
115
|
echo "发布包白名单校验通过"
|
|
116
116
|
- name: 仓库内不得提交明文密钥
|
|
117
117
|
run: |
|
|
118
|
-
if git grep -nIE "sk-[A-Za-z0-9_-]{16,}" -- . ':!*.md' ':!scripts/verify-m4.mjs' ':!tests/unit/redact.test.ts'; then
|
|
118
|
+
if git grep -nIE "sk-[A-Za-z0-9_-]{16,}" -- . ':!*.md' ':!scripts/verify-m4.mjs' ':!tests/unit/redact.test.ts' ':!scripts/data/voltagent_skills.json'; then
|
|
119
119
|
echo "::error::检出疑似明文 API Key"
|
|
120
120
|
exit 1
|
|
121
121
|
fi
|
|
@@ -133,7 +133,7 @@ jobs:
|
|
|
133
133
|
- uses: actions/checkout@v4
|
|
134
134
|
- uses: actions/setup-node@v4
|
|
135
135
|
with:
|
|
136
|
-
node-version:
|
|
136
|
+
node-version: 22
|
|
137
137
|
- run: npm install
|
|
138
138
|
# 1) npm audit:生产依赖 high 及以上漏洞视为失败(供应链准入证据)
|
|
139
139
|
- name: npm audit(生产依赖 high+)
|
|
@@ -1,203 +1,211 @@
|
|
|
1
|
-
# 飞虹 Code 发布工作流
|
|
2
|
-
# 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
|
|
3
|
-
#
|
|
4
|
-
# 触发条件:
|
|
5
|
-
# 1. 推送 v* 标签(如 v1.0.0)→ 自动发布 npm 包 + Docker 镜像 + GitHub Release
|
|
6
|
-
# 2. 手动触发(workflow_dispatch)→ 可指定版本号
|
|
7
|
-
#
|
|
8
|
-
# 所需 Secrets:
|
|
9
|
-
# - NPM_TOKEN: npm 发布令牌
|
|
10
|
-
# - DOCKERHUB_USERNAME: Docker Hub 用户名
|
|
11
|
-
# - DOCKERHUB_TOKEN: Docker Hub 访问令牌
|
|
12
|
-
# - GH_TOKEN: GitHub Token(自动注入,无需手动配置)
|
|
13
|
-
|
|
14
|
-
name: Release
|
|
15
|
-
|
|
16
|
-
on:
|
|
17
|
-
push:
|
|
18
|
-
tags:
|
|
19
|
-
- 'v*'
|
|
20
|
-
workflow_dispatch:
|
|
21
|
-
inputs:
|
|
22
|
-
version:
|
|
23
|
-
description: '发布版本号(如 1.0.0)'
|
|
24
|
-
required: true
|
|
25
|
-
default: 'patch'
|
|
26
|
-
|
|
27
|
-
permissions:
|
|
28
|
-
contents: write
|
|
29
|
-
|
|
30
|
-
env:
|
|
31
|
-
NODE_VERSION: '
|
|
32
|
-
IMAGE_NAME: feihong-code
|
|
33
|
-
|
|
34
|
-
jobs:
|
|
35
|
-
# ---------- 1. 版本号准备 ----------
|
|
36
|
-
version:
|
|
37
|
-
name: 准备版本号
|
|
38
|
-
runs-on: ubuntu-latest
|
|
39
|
-
outputs:
|
|
40
|
-
version: ${{ steps.get_version.outputs.version }}
|
|
41
|
-
tag: ${{ steps.get_version.outputs.tag }}
|
|
42
|
-
steps:
|
|
43
|
-
- uses: actions/checkout@v4
|
|
44
|
-
with:
|
|
45
|
-
fetch-depth: 0
|
|
46
|
-
- name: 获取版本号
|
|
47
|
-
id: get_version
|
|
48
|
-
run: |
|
|
49
|
-
if [[ "${{ github.ref }}" == refs/tags/v* ]]; then
|
|
50
|
-
VERSION=${GITHUB_REF_NAME#v}
|
|
51
|
-
else
|
|
52
|
-
if [[ "${{ github.event.inputs.version }}" == "patch" ]]; then
|
|
53
|
-
VERSION=$(npm version patch --no-git-tag-version | sed 's/v//')
|
|
54
|
-
elif [[ "${{ github.event.inputs.version }}" == "minor" ]]; then
|
|
55
|
-
VERSION=$(npm version minor --no-git-tag-version | sed 's/v//')
|
|
56
|
-
elif [[ "${{ github.event.inputs.version }}" == "major" ]]; then
|
|
57
|
-
VERSION=$(npm version major --no-git-tag-version | sed 's/v//')
|
|
58
|
-
else
|
|
59
|
-
VERSION=${{ github.event.inputs.version }}
|
|
60
|
-
fi
|
|
61
|
-
fi
|
|
62
|
-
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
|
63
|
-
echo "tag=v$VERSION" >> $GITHUB_OUTPUT
|
|
64
|
-
echo "发布版本: v$VERSION"
|
|
65
|
-
|
|
66
|
-
# ---------- 2. 构建与测试(复用 CI 逻辑) ----------
|
|
67
|
-
build:
|
|
68
|
-
name: 构建与测试
|
|
69
|
-
needs: version
|
|
70
|
-
runs-on: ubuntu-latest
|
|
71
|
-
steps:
|
|
72
|
-
- uses: actions/checkout@v4
|
|
73
|
-
- uses: actions/setup-node@v4
|
|
74
|
-
with:
|
|
75
|
-
node-version: ${{ env.NODE_VERSION }}
|
|
76
|
-
registry-url: 'https://registry.npmjs.org'
|
|
77
|
-
- run: npm install
|
|
78
|
-
- name: 类型检查
|
|
79
|
-
run: npm run typecheck
|
|
80
|
-
- name: 编译构建
|
|
81
|
-
run: npm run build
|
|
82
|
-
- name: 前端资源打包
|
|
83
|
-
run: node scripts/copy-web.cjs
|
|
84
|
-
- name: CLI 可用性验证
|
|
85
|
-
run: node dist/cli/index.js --version
|
|
86
|
-
- name: P7-5 安全 CI(npm audit + CycloneDX SBOM)
|
|
87
|
-
run: npm run security || (echo "⚠️ npm audit 网络不可达按跳过处理" && exit 0)
|
|
88
|
-
- name: P7-5 综合冒烟门禁(本地回归)
|
|
89
|
-
run: |
|
|
90
|
-
node dist/cli/index.js serve --port 8099 > /tmp/fh-serve.log 2>&1 &
|
|
91
|
-
SERVER_PID=$!
|
|
92
|
-
READY=0
|
|
93
|
-
for i in $(seq 1 40); do
|
|
94
|
-
if curl -sf http://127.0.0.1:8099/api/health >/dev/null 2>&1; then READY=1; break; fi
|
|
95
|
-
sleep 1
|
|
96
|
-
done
|
|
97
|
-
if [ "$READY" != "1" ]; then
|
|
98
|
-
echo "❌ 测试服务 40s 内未就绪,serve 日志:"
|
|
99
|
-
cat /tmp/fh-serve.log || true
|
|
100
|
-
kill $SERVER_PID 2>/dev/null || true
|
|
101
|
-
exit 1
|
|
102
|
-
fi
|
|
103
|
-
node scripts/_smoke-full.mjs
|
|
104
|
-
EXIT_CODE=$?
|
|
105
|
-
kill $SERVER_PID 2>/dev/null || true
|
|
106
|
-
exit $EXIT_CODE
|
|
107
|
-
- name: P7-1 SWE-bench harness 链路冒烟(mock)
|
|
108
|
-
run: node dist/cli/index.js harness lite --limit 1 --mode mock || echo "⚠️ harness 需网络拉取数据集,失败不阻断(真实跑分见 docs/SWE_BENCH_REPORT.md)"
|
|
109
|
-
- name: 上传构建产物
|
|
110
|
-
uses: actions/upload-artifact@v7
|
|
111
|
-
with:
|
|
112
|
-
name: dist-${{ needs.version.outputs.version }}
|
|
113
|
-
path: dist/
|
|
114
|
-
retention-days: 30
|
|
115
|
-
|
|
116
|
-
# ---------- 3. 发布 npm 包 ----------
|
|
117
|
-
npm-publish:
|
|
118
|
-
name: 发布 npm 包
|
|
119
|
-
needs: [version, build]
|
|
120
|
-
runs-on: ubuntu-latest
|
|
121
|
-
if: github.event_name == 'push' || github.event.inputs.version != 'patch'
|
|
122
|
-
steps:
|
|
123
|
-
- uses: actions/checkout@v4
|
|
124
|
-
- uses: actions/setup-node@v4
|
|
125
|
-
with:
|
|
126
|
-
node-version: ${{ env.NODE_VERSION }}
|
|
127
|
-
registry-url: 'https://registry.npmjs.org'
|
|
128
|
-
- name: 下载构建产物
|
|
129
|
-
uses: actions/download-artifact@
|
|
130
|
-
with:
|
|
131
|
-
name: dist-${{ needs.version.outputs.version }}
|
|
132
|
-
path: dist/
|
|
133
|
-
- name: 安装依赖(prepack build 需要)
|
|
134
|
-
run: npm ci
|
|
135
|
-
- name: 设置版本号
|
|
136
|
-
run: npm version ${{ needs.version.outputs.version }} --no-git-tag-version --allow-same-version
|
|
137
|
-
- name:
|
|
138
|
-
|
|
139
|
-
env:
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
- name:
|
|
158
|
-
uses: docker/
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
echo ""
|
|
189
|
-
echo "
|
|
190
|
-
echo "
|
|
191
|
-
echo "
|
|
192
|
-
|
|
193
|
-
echo "
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
1
|
+
# 飞虹 Code 发布工作流
|
|
2
|
+
# 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
|
|
3
|
+
#
|
|
4
|
+
# 触发条件:
|
|
5
|
+
# 1. 推送 v* 标签(如 v1.0.0)→ 自动发布 npm 包 + Docker 镜像 + GitHub Release
|
|
6
|
+
# 2. 手动触发(workflow_dispatch)→ 可指定版本号
|
|
7
|
+
#
|
|
8
|
+
# 所需 Secrets:
|
|
9
|
+
# - NPM_TOKEN: npm 发布令牌
|
|
10
|
+
# - DOCKERHUB_USERNAME: Docker Hub 用户名
|
|
11
|
+
# - DOCKERHUB_TOKEN: Docker Hub 访问令牌
|
|
12
|
+
# - GH_TOKEN: GitHub Token(自动注入,无需手动配置)
|
|
13
|
+
|
|
14
|
+
name: Release
|
|
15
|
+
|
|
16
|
+
on:
|
|
17
|
+
push:
|
|
18
|
+
tags:
|
|
19
|
+
- 'v*'
|
|
20
|
+
workflow_dispatch:
|
|
21
|
+
inputs:
|
|
22
|
+
version:
|
|
23
|
+
description: '发布版本号(如 1.0.0)'
|
|
24
|
+
required: true
|
|
25
|
+
default: 'patch'
|
|
26
|
+
|
|
27
|
+
permissions:
|
|
28
|
+
contents: write
|
|
29
|
+
|
|
30
|
+
env:
|
|
31
|
+
NODE_VERSION: '22'
|
|
32
|
+
IMAGE_NAME: feihong-code
|
|
33
|
+
|
|
34
|
+
jobs:
|
|
35
|
+
# ---------- 1. 版本号准备 ----------
|
|
36
|
+
version:
|
|
37
|
+
name: 准备版本号
|
|
38
|
+
runs-on: ubuntu-latest
|
|
39
|
+
outputs:
|
|
40
|
+
version: ${{ steps.get_version.outputs.version }}
|
|
41
|
+
tag: ${{ steps.get_version.outputs.tag }}
|
|
42
|
+
steps:
|
|
43
|
+
- uses: actions/checkout@v4
|
|
44
|
+
with:
|
|
45
|
+
fetch-depth: 0
|
|
46
|
+
- name: 获取版本号
|
|
47
|
+
id: get_version
|
|
48
|
+
run: |
|
|
49
|
+
if [[ "${{ github.ref }}" == refs/tags/v* ]]; then
|
|
50
|
+
VERSION=${GITHUB_REF_NAME#v}
|
|
51
|
+
else
|
|
52
|
+
if [[ "${{ github.event.inputs.version }}" == "patch" ]]; then
|
|
53
|
+
VERSION=$(npm version patch --no-git-tag-version | sed 's/v//')
|
|
54
|
+
elif [[ "${{ github.event.inputs.version }}" == "minor" ]]; then
|
|
55
|
+
VERSION=$(npm version minor --no-git-tag-version | sed 's/v//')
|
|
56
|
+
elif [[ "${{ github.event.inputs.version }}" == "major" ]]; then
|
|
57
|
+
VERSION=$(npm version major --no-git-tag-version | sed 's/v//')
|
|
58
|
+
else
|
|
59
|
+
VERSION=${{ github.event.inputs.version }}
|
|
60
|
+
fi
|
|
61
|
+
fi
|
|
62
|
+
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
|
63
|
+
echo "tag=v$VERSION" >> $GITHUB_OUTPUT
|
|
64
|
+
echo "发布版本: v$VERSION"
|
|
65
|
+
|
|
66
|
+
# ---------- 2. 构建与测试(复用 CI 逻辑) ----------
|
|
67
|
+
build:
|
|
68
|
+
name: 构建与测试
|
|
69
|
+
needs: version
|
|
70
|
+
runs-on: ubuntu-latest
|
|
71
|
+
steps:
|
|
72
|
+
- uses: actions/checkout@v4
|
|
73
|
+
- uses: actions/setup-node@v4
|
|
74
|
+
with:
|
|
75
|
+
node-version: ${{ env.NODE_VERSION }}
|
|
76
|
+
registry-url: 'https://registry.npmjs.org'
|
|
77
|
+
- run: npm install
|
|
78
|
+
- name: 类型检查
|
|
79
|
+
run: npm run typecheck
|
|
80
|
+
- name: 编译构建
|
|
81
|
+
run: npm run build
|
|
82
|
+
- name: 前端资源打包
|
|
83
|
+
run: node scripts/copy-web.cjs
|
|
84
|
+
- name: CLI 可用性验证
|
|
85
|
+
run: node dist/cli/index.js --version
|
|
86
|
+
- name: P7-5 安全 CI(npm audit + CycloneDX SBOM)
|
|
87
|
+
run: npm run security || (echo "⚠️ npm audit 网络不可达按跳过处理" && exit 0)
|
|
88
|
+
- name: P7-5 综合冒烟门禁(本地回归)
|
|
89
|
+
run: |
|
|
90
|
+
node dist/cli/index.js serve --port 8099 > /tmp/fh-serve.log 2>&1 &
|
|
91
|
+
SERVER_PID=$!
|
|
92
|
+
READY=0
|
|
93
|
+
for i in $(seq 1 40); do
|
|
94
|
+
if curl -sf http://127.0.0.1:8099/api/health >/dev/null 2>&1; then READY=1; break; fi
|
|
95
|
+
sleep 1
|
|
96
|
+
done
|
|
97
|
+
if [ "$READY" != "1" ]; then
|
|
98
|
+
echo "❌ 测试服务 40s 内未就绪,serve 日志:"
|
|
99
|
+
cat /tmp/fh-serve.log || true
|
|
100
|
+
kill $SERVER_PID 2>/dev/null || true
|
|
101
|
+
exit 1
|
|
102
|
+
fi
|
|
103
|
+
node scripts/_smoke-full.mjs
|
|
104
|
+
EXIT_CODE=$?
|
|
105
|
+
kill $SERVER_PID 2>/dev/null || true
|
|
106
|
+
exit $EXIT_CODE
|
|
107
|
+
- name: P7-1 SWE-bench harness 链路冒烟(mock)
|
|
108
|
+
run: node dist/cli/index.js harness lite --limit 1 --mode mock || echo "⚠️ harness 需网络拉取数据集,失败不阻断(真实跑分见 docs/SWE_BENCH_REPORT.md)"
|
|
109
|
+
- name: 上传构建产物
|
|
110
|
+
uses: actions/upload-artifact@v7
|
|
111
|
+
with:
|
|
112
|
+
name: dist-${{ needs.version.outputs.version }}
|
|
113
|
+
path: dist/
|
|
114
|
+
retention-days: 30
|
|
115
|
+
|
|
116
|
+
# ---------- 3. 发布 npm 包 ----------
|
|
117
|
+
npm-publish:
|
|
118
|
+
name: 发布 npm 包
|
|
119
|
+
needs: [version, build]
|
|
120
|
+
runs-on: ubuntu-latest
|
|
121
|
+
if: github.event_name == 'push' || github.event.inputs.version != 'patch'
|
|
122
|
+
steps:
|
|
123
|
+
- uses: actions/checkout@v4
|
|
124
|
+
- uses: actions/setup-node@v4
|
|
125
|
+
with:
|
|
126
|
+
node-version: ${{ env.NODE_VERSION }}
|
|
127
|
+
registry-url: 'https://registry.npmjs.org'
|
|
128
|
+
- name: 下载构建产物
|
|
129
|
+
uses: actions/download-artifact@v8
|
|
130
|
+
with:
|
|
131
|
+
name: dist-${{ needs.version.outputs.version }}
|
|
132
|
+
path: dist/
|
|
133
|
+
- name: 安装依赖(prepack build 需要)
|
|
134
|
+
run: npm ci
|
|
135
|
+
- name: 设置版本号
|
|
136
|
+
run: npm version ${{ needs.version.outputs.version }} --no-git-tag-version --allow-same-version
|
|
137
|
+
- name: 检查 NPM_TOKEN 是否配置
|
|
138
|
+
id: npm_token_check
|
|
139
|
+
env:
|
|
140
|
+
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
141
|
+
run: |
|
|
142
|
+
if [ -n "$NPM_TOKEN" ]; then echo "has_token=true" >> "$GITHUB_OUTPUT"; else echo "has_token=false" >> "$GITHUB_OUTPUT"; fi
|
|
143
|
+
- name: 发布到 npm
|
|
144
|
+
if: steps.npm_token_check.outputs.has_token == 'true'
|
|
145
|
+
run: npm publish --access public
|
|
146
|
+
env:
|
|
147
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
148
|
+
|
|
149
|
+
# ---------- 4. 构建并推送 Docker 镜像 ----------
|
|
150
|
+
docker-publish:
|
|
151
|
+
name: 发布 Docker 镜像
|
|
152
|
+
needs: [version, build]
|
|
153
|
+
runs-on: ubuntu-latest
|
|
154
|
+
if: github.event_name == 'push' || github.event.inputs.version != 'patch'
|
|
155
|
+
steps:
|
|
156
|
+
- uses: actions/checkout@v4
|
|
157
|
+
- name: 设置 Docker Buildx
|
|
158
|
+
uses: docker/setup-buildx-action@v4
|
|
159
|
+
- name: 登录 Docker Hub
|
|
160
|
+
uses: docker/login-action@v4
|
|
161
|
+
with:
|
|
162
|
+
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
163
|
+
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
164
|
+
- name: 构建并推送镜像
|
|
165
|
+
uses: docker/build-push-action@v7
|
|
166
|
+
with:
|
|
167
|
+
context: .
|
|
168
|
+
push: true
|
|
169
|
+
tags: |
|
|
170
|
+
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:${{ needs.version.outputs.version }}
|
|
171
|
+
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:latest
|
|
172
|
+
cache-from: type=registry,ref=${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:buildcache
|
|
173
|
+
cache-to: type=registry,ref=${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:buildcache,mode=max
|
|
174
|
+
|
|
175
|
+
# ---------- 5. 创建 GitHub Release ----------
|
|
176
|
+
github-release:
|
|
177
|
+
name: 创建 GitHub Release
|
|
178
|
+
needs: [version, build, npm-publish, docker-publish]
|
|
179
|
+
runs-on: ubuntu-latest
|
|
180
|
+
if: github.event_name == 'push'
|
|
181
|
+
steps:
|
|
182
|
+
- uses: actions/checkout@v4
|
|
183
|
+
with:
|
|
184
|
+
fetch-depth: 0
|
|
185
|
+
- name: 生成变更日志
|
|
186
|
+
id: changelog
|
|
187
|
+
run: |
|
|
188
|
+
echo "## 飞虹 Code v${{ needs.version.outputs.version }}" > RELEASE_NOTES.md
|
|
189
|
+
echo "" >> RELEASE_NOTES.md
|
|
190
|
+
echo "### 发布说明" >> RELEASE_NOTES.md
|
|
191
|
+
echo "" >> RELEASE_NOTES.md
|
|
192
|
+
git log --pretty=format:"- %s (%h)" $(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo HEAD^)..HEAD >> RELEASE_NOTES.md 2>/dev/null || echo "- 首次发布" >> RELEASE_NOTES.md
|
|
193
|
+
echo "" >> RELEASE_NOTES.md
|
|
194
|
+
echo "### 安装方式" >> RELEASE_NOTES.md
|
|
195
|
+
echo "" >> RELEASE_NOTES.md
|
|
196
|
+
echo "\`\`\`bash" >> RELEASE_NOTES.md
|
|
197
|
+
echo "npm install -g feihong-code" >> RELEASE_NOTES.md
|
|
198
|
+
echo "# 或" >> RELEASE_NOTES.md
|
|
199
|
+
echo "docker pull ${{ secrets.DOCKERHUB_USERNAME }}/feihong-code:latest" >> RELEASE_NOTES.md
|
|
200
|
+
echo "\`\`\`" >> RELEASE_NOTES.md
|
|
201
|
+
- name: 创建 Release
|
|
202
|
+
uses: softprops/action-gh-release@v3
|
|
203
|
+
with:
|
|
204
|
+
tag_name: ${{ needs.version.outputs.tag }}
|
|
205
|
+
name: 飞虹 Code ${{ needs.version.outputs.tag }}
|
|
206
|
+
body_path: RELEASE_NOTES.md
|
|
207
|
+
draft: false
|
|
208
|
+
prerelease: false
|
|
209
|
+
skipIfReleaseExists: true
|
|
210
|
+
env:
|
|
211
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -14,6 +14,14 @@ on:
|
|
|
14
14
|
description: '实例清单路径'
|
|
15
15
|
required: false
|
|
16
16
|
default: 'bench/swe-bench-verified-sample.json'
|
|
17
|
+
model:
|
|
18
|
+
description: '评测模型名(如 agnes-3.0-flash / DeepSeek-V4-Flash)'
|
|
19
|
+
required: false
|
|
20
|
+
default: 'agnes-2.5-flash'
|
|
21
|
+
base_url:
|
|
22
|
+
description: 'API 通道地址(AMD 填 https://developer.amd.com.cn/radeon/api/v1)'
|
|
23
|
+
required: false
|
|
24
|
+
default: 'https://api.agnes-ai.cn/v1'
|
|
17
25
|
# 可选:定时跑(UTC 18:00)
|
|
18
26
|
# schedule:
|
|
19
27
|
# - cron: '0 18 * * *'
|
|
@@ -29,7 +37,7 @@ jobs:
|
|
|
29
37
|
with:
|
|
30
38
|
node-version: '22'
|
|
31
39
|
|
|
32
|
-
- uses: actions/setup-python@
|
|
40
|
+
- uses: actions/setup-python@v5
|
|
33
41
|
with:
|
|
34
42
|
python-version: '3.11'
|
|
35
43
|
|
|
@@ -54,6 +62,9 @@ jobs:
|
|
|
54
62
|
- name: 真实模型生成 patch
|
|
55
63
|
env:
|
|
56
64
|
AGNES_API_KEY: ${{ secrets.AGNES_API_KEY }}
|
|
65
|
+
AMD_API_KEY: ${{ secrets.AMD_API_KEY }}
|
|
66
|
+
SWEEBENCH_MODEL: ${{ inputs.model }}
|
|
67
|
+
SWEEBENCH_BASE_URL: ${{ inputs.base_url }}
|
|
57
68
|
run: node scripts/swebench-real.mjs --instances "${{ inputs.instances }}" --limit "${{ inputs.limit }}"
|
|
58
69
|
|
|
59
70
|
- name: 真实测试验证(env-reconstructed)
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,43 @@
|
|
|
2
2
|
|
|
3
3
|
> **版本体系说明**:**7.x** 为**产品化成熟度版本号**(SemVer),衡量产品打磨程度(桌面版、Web 控制台、SWE-bench harness、企业治理、自进化等持续迭代);**M0→M9.1** 为**能力里程碑编号**(工程开发阶段),2026-08 上旬全部交付后已冻结、不再扩展。两套编号相互解耦——M 编号停止增长是设计使然,后续能力演进体现在 7.x 次版本号中。
|
|
4
4
|
|
|
5
|
+
## v8.3.0 (2026-09-10)
|
|
6
|
+
|
|
7
|
+
### 移动端 APP(飞虹 Code 移动版 v8.3.0)
|
|
8
|
+
|
|
9
|
+
- **上传功能修复**:修复 v8.2.x 遗留的初始化中断导致「图片/文件」无法上传的问题(删除视频功能时残留了指向已删除函数的按钮绑定);图片支持**多选最多 20 张**并自动压缩(最长边 1280px / JPEG 0.8),底部缩略图预览(点击放大、单个移除、+继续加图);文件上传 ≤20MB,文本文件自动读入对话。
|
|
10
|
+
- **文生视频重建(正确契约)**:内置 `agnes-video-2.5-flash`(一键填充 API 地址 + Key);请求按官方 2.5 契约重写——`POST /videos` + `seconds`(字符串) + `size:"720P"` + `aspect_ratio` + `mode`,替换此前报 Invalid URL 的错误端点;支持**上传参考图**(有图 `mode:reference` + `image`,无图 `mode:text`);轮询走 `/agnesapi?video_id=`。
|
|
11
|
+
- **删除图生视频与截图功能**:创作中心精简为「文生图 + 文生视频(含参考图)」两个能力;底部输入栏移除截图按钮(保留图片/文件/拍照)。
|
|
12
|
+
- **流式对话稳定性**(8.2.1 起保留):完整行 SSE 解析零丢字、`max_tokens:8192` 防长回答截断、`finish_reason=length` 自动续写(最多 3 次)、首字等待放宽至 30 秒。
|
|
13
|
+
- 版本同步:app.js APP_VER / 关于面板 / android versionCode 36 + versionName "8.3.0"。
|
|
14
|
+
|
|
15
|
+
### 工程 / Engineering
|
|
16
|
+
|
|
17
|
+
- 版本一致性全量同步 8.3.0(version.ts / android / README JSON-LD / CHANGELOG / package.json)。
|
|
18
|
+
|
|
19
|
+
## v8.0.2 (2026-09-08)
|
|
20
|
+
|
|
21
|
+
### 工程修复 / Engineering Fixes
|
|
22
|
+
|
|
23
|
+
- **Node 22 全链路兼容**:CI matrix 统一为 Node 22,Dockerfile 升级 node:22-slim,engines 声明 >=22.5.0;CLI 新增版本守卫(Node <22.5 给出友好提示,替代 ERR_UNKNOWN_BUILTIN_MODULE 崩溃)。
|
|
24
|
+
- **供应链安全**:overrides 强制 qs 6.16.0(GHSA-x5fp-wj9c-mxmx / GHSA-4mjr-xmp4-gh2g)、uuid 11.1.1(GHSA-w5hq-g745-h8pq),npm audit 全量 0 漏洞,osv-scanner 通过。
|
|
25
|
+
- **CI 修复**:发布包检查修正 .env.example 误报(子串匹配 -> 精确匹配);仓库密钥扫描排除 voltagent_skills.json 误报(repo slug 命中 sk- 模式)。
|
|
26
|
+
- **版本一致性**:version.ts / android versionName+versionCode / README JSON-LD / 当前文档版本标记全量同步 8.0.2。
|
|
27
|
+
|
|
28
|
+
## v8.0.1 (2026-09-08)
|
|
29
|
+
|
|
30
|
+
### 重大更新 / Major Updates
|
|
31
|
+
|
|
32
|
+
- **桌面手脚(desktop-touch MCP 嫁接)**:飞虹获得 Windows 原生 app 操控能力——`feihong_desktop_see / act / verify` 三工具闭环(看屏 → 操作 → 验证);审批矩阵 + 危险窗口停手线 + 取证留痕三层安全模型;A 配置 / B 策略 / C 内化三层嫁接结构。
|
|
33
|
+
- **AI 员工军团(agent-team)整合**:17 个业务 AI 员工(L1 获客 / L2 内容 / L3 转化 / L4 决策 / L5 管理)随包分发;飞虹原生工具 `feihong_agents_list / submit` 打通,模型路由自动复用飞虹 providers,无配置回退 mock 全链路可跑。
|
|
34
|
+
- **全仓脱敏与清理治理**:移除 app.js / android assets / 评测脚本 / 测试脚本共 17 处硬编码密钥;git 历史泄露 KEY 经 filter-branch 全历史清除并 force push;清理 bench/real 约 6.8GB 评测运行产物与 android build 构建产物;.gitignore 加固防再污染。
|
|
35
|
+
- **工程修复**:copy-web.cjs 重写(Node 22 `fs.cpSync` 原生崩溃 0xC0000409 规避);steer 人工指挥(M9)注入与事件恢复;单测 269 例全绿。
|
|
36
|
+
|
|
37
|
+
### 兼容性 / Compatibility
|
|
38
|
+
|
|
39
|
+
- npm 包 `feihong-code@8.0.1`:files 白名单新增 `agent-team/`(17 员工技能随包分发);版本号以 package.json 为单一权威源全量同步(version.ts / android / README JSON-LD / CHANGELOG)。
|
|
40
|
+
- **安全提示**:8.0.0 已废弃(deprecated),请升级至 8.0.1;曾泄露的 API 密钥请立即轮换。
|
|
41
|
+
|
|
5
42
|
## v7.6.0 (2026-08-28)
|
|
6
43
|
|
|
7
44
|
### 重大更新 / Major Updates
|