workbuddy
MEDIUM
maintainer Rainbowu
2 votes
scanned 2026-11-01 00:21:48.120785
Why flagged
The package downloads a prebuilt .deb from a non-whitelisted host (download.codebuddy.cn) with SKIP'd checksums, posing a supply-chain risk if the host is compromised or swapped.
Triggered rules
Medium
source=() URL on a non-standard host
source_untrusted_domain
One or more source=() URLs point to a host outside the trusted allowlist (github.com, gitlab.com, codeberg.org, pypi.org, …).
-
PKGBUILD:29
source_x86_64=("v${pkgver}-x86_64.deb::https://download.codebuddy.cn/workbuddy/saas/linux-x64-deb/WorkBuddy-linux-x64-deb-${pkgver//_/-}.deb")
Medium
AI review
llm_review
An AI model (qwen/qwen3-235b-a22b-2507) reviewed this and agrees it is MEDIUM (confidence 90%): The package downloads a prebuilt .deb from a non-whitelisted host (download.codebuddy.cn) with SKIP'd checksums, posing a supply-chain risk if the host is compromised or swapped.
PKGBUILD
1 offending line(s) highlighted
1
# Maintainer: Rongbo <wurongbo2012@hotmail.com>
2
3
pkgname=workbuddy
4
pkgver=5.5.6.38337834_5f969292
5
pkgrel=2
6
pkgdesc="腾讯云代码助手推出的 AI Agent 办公工具"
7
arch=('x86_64' 'aarch64')
8
url="https://www.workbuddy.cn/app"
9
license=('custom')
10
depends=('electron')
11
makedepends=('asar'
12
)
13
checkdepends=()
14
optdepends=(
15
'python-pip'
16
'nodejs-lts: frontend skills'
17
'imagemagick'
18
'gnome-shell-extension-appindicator'
19
)
20
provides=()
21
conflicts=()
22
_registry="https://registry.npmjs.org"
23
source=(
24
WorkBuddy.desktop
25
"${_registry}/better-sqlite3/-/better-sqlite3-13.0.3.tgz"
26
)
27
sha256sums=('SKIP'
28
'77e0513dc1a469fb3bceec4c7fb5ad3f403109787eda05be047ec17fd56868cb')
29
source_x86_64=("v${pkgver}-x86_64.deb::https://download.codebuddy.cn/workbuddy/saas/linux-x64-deb/WorkBuddy-linux-x64-deb-${pkgver//_/-}.deb")
30
source_aarch64=("v${pkgver}-aarch64.deb::https://download.codebuddy.cn/workbuddy/saas/linux-arm64-deb/WorkBuddy-linux-arm64-deb-${pkgver//_/-}.deb")
31
sha256sums_x86_64=('SKIP')
32
sha256sums_aarch64=('SKIP')
33
34
options=(!strip !debug)
35
pkgver() {
36
upstream=$(curl 'https://copilot.tencent.com/v2/update?platform=workbuddy-linux-x64-deb')
37
_nfile=$(awk -F '"' '{for(i=1;i<=NF;i++){if($i=="url"){print $(i+2)}}}' <<<$upstream |cut -d'-' -f7,8)
38
sed 's/-/_/' <<<${_nfile%.*}
39
}
40
41
prepare() {
42
tar xf data.tar.xz
43
}
44
45
_debloat_prompt() {
46
sed -i -e '/<content_policy>/,/<\/content_policy>/d' \
47
-e '/<working_modes>/,/<\/working_modes>/d' \
48
-e '/<personal_files_safety>/,/<\/personal_files_safety>/d' \
49
-e '/{% if IsWindows %}/,/{% endif %}/d' \
50
-e '/<final_answer_instructions>/,/<\/final_answer_instructions>/d' \
51
app.asar.unpacked/resources/templates/*prompt.tpl
52
}
53
54
build() {
55
cd opt/WorkBuddy/resources
56
rm -rf app.asar.unpacked/node_modules/better-sqlite3
57
mv ${srcdir}/package app.asar.unpacked/node_modules/better-sqlite3
58
asar e app.asar app.asar.unpacked || true
59
find app.asar.unpacked -type f -exec sed -i "s/process.resourcesPath/\'\/opt\/WorkBuddy\'/g" {} +
60
_debloat_prompt
61
}
62
63
package() {
64
install -d ${pkgdir}/opt/WorkBuddy
65
cp -a usr ${pkgdir}/
66
install -m644 WorkBuddy.desktop ${pkgdir}/usr/share/applications/workbuddy.desktop
67
cd opt/WorkBuddy/resources
68
cp -a app.asar.unpacked ${pkgdir}/opt/WorkBuddy/
69
# cp -r wb-guest-sdk/ ${pkgdir}/opt/WorkBuddy/
70
install -Dm 755 /dev/stdin "${pkgdir}/usr/bin/workbuddy" <<EOF
71
#!/usr/bin/bash
72
exec electron /opt/WorkBuddy/app.asar.unpacked "\$@"
73
EOF
74
}
75
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-11-01 00:21:48 | Medium | 2 |
| 2026-10-31 00:07:41 | Medium | 2 |
| 2026-10-30 00:29:30 | Medium | 2 |
| 2026-10-29 00:13:55 | Medium | 2 |
| 2026-10-28 00:06:54 | Medium | 2 |
| 2026-10-27 00:23:28 | Medium | 2 |
| 2026-10-26 00:12:40 | Medium | 2 |
| 2026-10-25 00:20:48 | Medium | 2 |
| 2026-10-24 00:14:55 | Medium | 2 |
| 2026-10-23 00:02:19 | Medium | 2 |
| 2026-10-22 00:13:10 | Medium | 2 |
| 2026-10-21 00:12:50 | Medium | 2 |
| 2026-10-20 00:10:31 | Medium | 2 |
| 2026-10-19 00:03:55 | Medium | 2 |
| 2026-10-18 00:06:55 | Medium | 2 |
| 2026-10-17 00:21:55 | Medium | 2 |
| 2026-10-16 00:12:47 | Medium | 2 |
| 2026-10-15 00:28:05 | Medium | 2 |
| 2026-10-14 17:20:19 | Medium | 2 |
| 2026-10-14 00:06:47 | Medium | 2 |