dsh-plugin-t-expert 0.4.48 → 0.4.51
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 +83 -0
- package/README.md +2 -2
- package/THIRD-PARTY-NOTICES +3 -3
- package/data/roster.json +0 -13
- package/data/source.json +2 -2
- package/lib/client.js +1 -1
- package/lib/fetch-assets.js +34 -2
- package/lib/index.js +17 -9
- package/package.json +2 -2
- package/vendor/third-party-licenses/README.md +1 -1
- package/data/experts/finance/vietnam-finance-tax-expert/.codebuddy-plugin/plugin.json +0 -60
- package/data/experts/finance/vietnam-finance-tax-expert/.downloaded_at +0 -1
- package/data/experts/finance/vietnam-finance-tax-expert/.imported-from-workbuddy +0 -7
- package/data/experts/finance/vietnam-finance-tax-expert/README.md +0 -84
- package/data/experts/finance/vietnam-finance-tax-expert/persona.md +0 -323
package/CHANGELOG.md
CHANGED
|
@@ -16,6 +16,89 @@
|
|
|
16
16
|
> 发布时**不要再跑 `npm version`**(那会把已提交好的版本又升一级,发出去的号与 CHANGELOG、tag 就对不上),
|
|
17
17
|
> 只补一个 annotated tag(`git tag -a`,因为 `git push --follow-tags` 只推带注释的 tag)。
|
|
18
18
|
|
|
19
|
+
## [0.4.51] — 未发布
|
|
20
|
+
|
|
21
|
+
**`upload-obs.mjs` 新增 `--delete-orphans`:清理删过专家后留在桶里的孤儿对象。**
|
|
22
|
+
|
|
23
|
+
### 新增
|
|
24
|
+
|
|
25
|
+
node tools/upload-obs.mjs --delete-orphans # 只列不删
|
|
26
|
+
node tools/upload-obs.mjs --delete-orphans --yes # 真删
|
|
27
|
+
|
|
28
|
+
- 用 ListObjects(自动翻页)扫 `<prefix>/packs/`,与 `roster.json` 引用的 path 集合比对,
|
|
29
|
+
列出没被引用的对象;**只扫 `packs/` 前缀**,不碰桶里其它东西,免得误删手工放进去的。
|
|
30
|
+
- **默认只列不删**,要 `--yes` 才真删(破坏性操作两道闸)。
|
|
31
|
+
- 实现细节:OBS v2 签名里 `prefix` / `marker` / `max-keys` **不属于**要签的子资源,
|
|
32
|
+
桶级 LIST 的 CanonicalizedResource 只有 `/<bucket>/` —— 所以直接复用 `authorize({ key: "" })`。
|
|
33
|
+
|
|
34
|
+
### 实测(这就是加它的原因)
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
桶里 244 个对象 / 清单引用 181 个 / 孤儿 63 个 / 合计 529.0 MB
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
其中 `vietnam-finance-tax-expert.tar.gz` 一个就 495.6 MB(占 93.7%),其余 62 个来自更早的几次删除:
|
|
41
|
+
内部依赖专家(`omics-*`、`fundus-disease-analysis`…)与「去分区前缀重名」那批
|
|
42
|
+
(`ui-designer`、`backend-architect`、`frontend-developer`… —— 判重修复之前导入的)。
|
|
43
|
+
|
|
44
|
+
## [0.4.50] — 未发布
|
|
45
|
+
|
|
46
|
+
**移除 `finance/vietnam-finance-tax-expert`(495.6 MB)** —— roster 里最大的包,是第二名的 12.5 倍。
|
|
47
|
+
|
|
48
|
+
### 为什么
|
|
49
|
+
|
|
50
|
+
它是个「**离线 RAG 型**」专家:自带 723 篇越南财税法规语料,外加
|
|
51
|
+
|
|
52
|
+
| 文件 | 大小 |
|
|
53
|
+
|---|---|
|
|
54
|
+
| `tfidf_matrix.npz`(预计算检索索引)| **382.9 MB** |
|
|
55
|
+
| `chunks_metadata.json`(分块元数据)| 41.7 MB |
|
|
56
|
+
| 法规原文(PDF/HTML/TXT)| 约 70 MB |
|
|
57
|
+
|
|
58
|
+
功能上很完整(不联网就能查越南税法,还配了企业所得税/工资/关税/选址四个计算器),
|
|
59
|
+
但**单个专家 495.6 MB 太重**(第二名 `legal/malaysia-hr-admin` 才 39.6 MB),
|
|
60
|
+
按需下载的设计不值得为它付这个代价。
|
|
61
|
+
|
|
62
|
+
名册 **624 → 623**;roster **182 → 181**;README / npm description / THIRD-PARTY-NOTICES /
|
|
63
|
+
许可说明 / source.json / verify 数字同步校准。
|
|
64
|
+
|
|
65
|
+
### 遗留
|
|
66
|
+
|
|
67
|
+
OBS 上的 `packs/finance/vietnam-finance-tax-expert.tar.gz`(495.6 MB)现在是**孤儿对象** ——
|
|
68
|
+
`roster.json` 里没有它,不会有任何客户端去下载,但占着云端空间。清理方式见技能
|
|
69
|
+
`t-expert-roster-sync` 的说明(`tools/upload-obs.mjs` 目前只有上传与校验,没有删除)。
|
|
70
|
+
|
|
71
|
+
## [0.4.49] — 未发布
|
|
72
|
+
|
|
73
|
+
**远端清单的两个缺陷:一个是功能性的(495 MB 附件拿不到),一个是我自己设错的上限。**
|
|
74
|
+
|
|
75
|
+
### 背景
|
|
76
|
+
|
|
77
|
+
按用户要求实测「召唤专家能否下载附件」:两位专家(`seo-content-team`、`fin-research-expert`)
|
|
78
|
+
都下载成功,sha256 与清单**逐字节一致**,解包后文件齐备。但顺带查出远端清单的两个问题。
|
|
79
|
+
|
|
80
|
+
### 修复
|
|
81
|
+
|
|
82
|
+
1. **远端清单改成「并集合并」而非替换**。远端可能比包内**旧**(改了专家但还没重传 roster),
|
|
83
|
+
直接替换会让包内独有的条目查不到 —— 表现是那位专家被判成「没有云端附件」,附件**永远下载不下来**。
|
|
84
|
+
实测踩到:`finance/vietnam-finance-tax-expert`(**495.6 MB**)在包内清单里有、远端那份是旧的因而没有,
|
|
85
|
+
它的 `agents/` 与 `references/` 一直缺失。
|
|
86
|
+
现在 `mergeRosters(bundled, remote)`:远端同名条目优先(那是新版本),包内独有条目保留(兜底)。
|
|
87
|
+
**所有返回路径都过合并**(含缓存命中 —— 否则插件升级后、缓存 TTL 内,包内新增条目会因
|
|
88
|
+
「缓存还新鲜」而丢失)。
|
|
89
|
+
2. **单包体积上限 200 MB → 2 GB**。这是我上一版设错的:roster 里真实存在 495.6 MB 的包,
|
|
90
|
+
200 MB 上限会把它当异常条目**整条拒掉**,同样导致附件拿不到。
|
|
91
|
+
|
|
92
|
+
### 自检
|
|
93
|
+
|
|
94
|
+
新增 5 条断言(并集的覆盖/保留/undefined 回退 + 「495 MB 大包必须放行」),541 → **546**。
|
|
95
|
+
端到端验证:包内 182 条 ∪ 远端 203 条 = **204 条**,那条 495.6 MB 的条目现在查得到。
|
|
96
|
+
|
|
97
|
+
### 运维提醒
|
|
98
|
+
|
|
99
|
+
远端 `agetn/roster.json` 目前比包内**旧**(它是删掉那批内部依赖专家之前上传的:多 22 条孤儿条目、
|
|
100
|
+
少 1 条)。并集逻辑已保证不影响使用,要让它干净就重跑一次 `node tools/upload-obs.mjs`。
|
|
101
|
+
|
|
19
102
|
## [0.4.48] — 未发布
|
|
20
103
|
|
|
21
104
|
**逐行审查 0.4.47 的远端清单代码,修掉一个会导致「远端故障时频繁打远端」的 bug。**
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# T专家(dsh-plugin-t-expert)
|
|
2
2
|
|
|
3
|
-
dsh-plugin-t-expert 插件:包含 **22 个分类 /
|
|
3
|
+
dsh-plugin-t-expert 插件:包含 **22 个分类 / 623 位专家**的名册(中文名、简介全量覆盖)。
|
|
4
4
|
|
|
5
5
|
装上以后你能做两件事:
|
|
6
6
|
|
|
@@ -89,7 +89,7 @@ remote 入口 `lib/skill-gate-remote.js`(wire 名仍是 `skillGate`,客户
|
|
|
89
89
|
|
|
90
90
|
```
|
|
91
91
|
~/.t-team/
|
|
92
|
-
├── experts/ 名册:<分类>/<slug>.md 或 <分类>/<slug>/(包内快照 22 个分类、
|
|
92
|
+
├── experts/ 名册:<分类>/<slug>.md 或 <分类>/<slug>/(包内快照 22 个分类、623 位;你自建的另计)
|
|
93
93
|
├── zh/ 中文侧车:names.json、descriptions.json、<分类>/<slug>.md
|
|
94
94
|
├── custom/ 你在面板里自建的专家
|
|
95
95
|
├── source.json 名册清单(专家数 / 分类 / 更新时间)
|
package/THIRD-PARTY-NOTICES
CHANGED
|
@@ -11,10 +11,10 @@
|
|
|
11
11
|
| 英文名册 | The Agency / AgentLand(`msitarzewski/agency-agents`)— MIT,Copyright (c) 2025 AgentLand Contributors。完整文本随包:`vendor/third-party-licenses/agency-agents.LICENSE` |
|
|
12
12
|
| 中文译文 | `jnMetaCode/agency-agents-zh`(中文翻译与本地化)— MIT,Copyright (c) 2025 Michael Sitarzewski(英文原版)、Copyright (c) 2026 jnMetaCode(中文翻译与本地化)。完整文本随包:`vendor/third-party-licenses/agency-agents-zh.LICENSE` |
|
|
13
13
|
| 分发形态 | 上述两部分内容随 `@michengai/dsh-agency-agents` 一同分发(该包自身的 TypeScript 源码与构建脚本为 Apache-2.0,**本插件不打包其任何代码**) |
|
|
14
|
-
| 位置 | `data/experts/`(22 个分类 /
|
|
14
|
+
| 位置 | `data/experts/`(22 个分类 / 623 位)、`data/zh/`(中文名字 / 简介 / 人格正文 / 分类标签) |
|
|
15
15
|
| 维护方式 | 上述内容随本插件分发(`data/` 是发布源,不再从上游重新镜像);`data/source.json` 是该名册的清单(专家数 / 分类 / 更新时间) |
|
|
16
16
|
|
|
17
|
-
名册的构成分五部分(总计
|
|
17
|
+
名册的构成分五部分(总计 623 位):
|
|
18
18
|
|
|
19
19
|
- **279 位来自 `msitarzewski/agency-agents`**(上表英文名册一行)。
|
|
20
20
|
- **35 位来自 `@michengai/dsh-agency-agents` 的包内快照**(company / hr / legal / supply-chain
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
|
|
35
35
|
它们没有中文译文正文(`data/zh/` 已冻结);作为例外,中文名与中文简介手写在
|
|
36
36
|
`data/zh/names.json` 与 `data/zh/descriptions.json` 里,人格正文回退英文。
|
|
37
|
-
- **
|
|
37
|
+
- **300 位来自 WorkBuddy 专家市场**(腾讯 CodeBuddy 的公开专家市场,2026-09-29 导入)。
|
|
38
38
|
它们以「目录形态专家包」随包分发:`<分类>/<slug>/persona.md` 是名册入口,原始 `agents/`、
|
|
39
39
|
`skills/` 与全部附件(references、Databases 等)一并保留在包内。
|
|
40
40
|
**其版权与许可归腾讯及其各自的专家作者所有**,本插件只做本地聚合与形态转换,不声称对其拥有
|
package/data/roster.json
CHANGED
|
@@ -2425,19 +2425,6 @@
|
|
|
2425
2425
|
"skills"
|
|
2426
2426
|
]
|
|
2427
2427
|
},
|
|
2428
|
-
"finance/vietnam-finance-tax-expert": {
|
|
2429
|
-
"division": "finance",
|
|
2430
|
-
"slug": "vietnam-finance-tax-expert",
|
|
2431
|
-
"path": "packs/finance/vietnam-finance-tax-expert.tar.gz",
|
|
2432
|
-
"bytes": 519652844,
|
|
2433
|
-
"rawBytes": 640889250,
|
|
2434
|
-
"files": 747,
|
|
2435
|
-
"sha256": "aeeefac79cc1a6b5c8e0eb2bc0f1040cccbed897573b71cc3e36173a1fa09d2f",
|
|
2436
|
-
"dirs": [
|
|
2437
|
-
"agents",
|
|
2438
|
-
"references"
|
|
2439
|
-
]
|
|
2440
|
-
},
|
|
2441
2428
|
"legal/malaysia-finance-tax": {
|
|
2442
2429
|
"division": "legal",
|
|
2443
2430
|
"slug": "malaysia-finance-tax",
|
package/data/source.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"updatedAt": "2026-09-29 14:20:00 +0800",
|
|
3
|
-
"expertFiles":
|
|
3
|
+
"expertFiles": 623,
|
|
4
4
|
"divisions": [
|
|
5
5
|
"academic",
|
|
6
6
|
"company",
|
|
@@ -25,5 +25,5 @@
|
|
|
25
25
|
"support",
|
|
26
26
|
"testing"
|
|
27
27
|
],
|
|
28
|
-
"note": "本仓名册清单:data/experts 是真源(含从 WorkBuddy 导入的目录形态专家)。2026-09-29 移除 22 位绑定腾讯内部系统的专家(代码层端点指向 *.woa.com 等内网域名),645 →
|
|
28
|
+
"note": "本仓名册清单:data/experts 是真源(含从 WorkBuddy 导入的目录形态专家)。2026-09-29 移除 22 位绑定腾讯内部系统的专家(代码层端点指向 *.woa.com 等内网域名),645 → 623。"
|
|
29
29
|
}
|
package/lib/client.js
CHANGED
|
@@ -67,7 +67,7 @@ var SectionBoundary = class extends import_react.default.Component {
|
|
|
67
67
|
|
|
68
68
|
// src/client/state.js
|
|
69
69
|
var NS = "t-team";
|
|
70
|
-
var CLIENT_BUILD_VERSION = "0.4.
|
|
70
|
+
var CLIENT_BUILD_VERSION = "0.4.51";
|
|
71
71
|
var PLUGIN_ID = "dsh-plugin-t-expert";
|
|
72
72
|
var DIVISION_FALLBACK = "specialized";
|
|
73
73
|
var NEW_DIVISION = "__new";
|
package/lib/fetch-assets.js
CHANGED
|
@@ -76,8 +76,14 @@ export const ROSTER_FETCH_TIMEOUT_MS = 8000;
|
|
|
76
76
|
/** 缓存清单的保鲜期(毫秒)。过期后下次调用会触发后台刷新。 */
|
|
77
77
|
export const ROSTER_TTL_MS = 12 * 60 * 60 * 1000;
|
|
78
78
|
|
|
79
|
-
/**
|
|
80
|
-
|
|
79
|
+
/**
|
|
80
|
+
* 单包体积上限(防清单里塞进一个超大对象把客户端下爆)。
|
|
81
|
+
*
|
|
82
|
+
* 定 2 GB 而不是最初写的 200 MB —— 实测 roster 里真实存在 **495.6 MB** 的包
|
|
83
|
+
* (`finance/vietnam-finance-tax-expert`),200 MB 的上限会把它当异常条目整条拒掉,
|
|
84
|
+
* 附件就永远拿不到了(2026-09-29 实测发现)。留足余量,同时仍能挡住「塞一个几十 GB 对象」。
|
|
85
|
+
*/
|
|
86
|
+
const MAX_PACK_BYTES = 2 * 1024 * 1024 * 1024;
|
|
81
87
|
|
|
82
88
|
/** 远端条目数最多比包内多出这么多(防塞入海量条目)。 */
|
|
83
89
|
const MAX_ROSTER_EXTRA = 200;
|
|
@@ -173,6 +179,32 @@ export async function fetchRemoteRoster(bundled, fetchImpl = fetch) {
|
|
|
173
179
|
}
|
|
174
180
|
}
|
|
175
181
|
|
|
182
|
+
/**
|
|
183
|
+
* 把远端清单**合并**进包内清单:同名条目以远端为准,包内独有的条目保留。
|
|
184
|
+
*
|
|
185
|
+
* ## 为什么是并集而不是替换
|
|
186
|
+
*
|
|
187
|
+
* 远端清单可能比包内**旧**(改了专家但还没重传 roster)。若直接替换,包内独有的条目就查不到了 ——
|
|
188
|
+
* 表现是那位专家被判成「没有云端附件」,附件**永远下载不下来**。
|
|
189
|
+
* 2026-09-29 实测就踩到了:`finance/vietnam-finance-tax-expert`(495.6 MB)在包内清单里有、
|
|
190
|
+
* 远端那份是旧的因而没有,于是它的 `agents/` 与 `references/` 一直缺失。
|
|
191
|
+
*
|
|
192
|
+
* 并集的方向是「远端优先」:远端有的用远端的(那是新版本),远端没有的用包内的(兜底)。
|
|
193
|
+
* 反向的风险(远端多出来的条目)无害:条目只在名册里真的有那位专家时才会被引用。
|
|
194
|
+
*
|
|
195
|
+
* @param {object|undefined} bundled - 包内清单(可信、完整)。
|
|
196
|
+
* @param {object|undefined} remote - 已过 {@link sanitizeRemoteRoster} 的远端清单。
|
|
197
|
+
* @returns {object|undefined} 合并后的清单;两边都没有时 `undefined`。
|
|
198
|
+
*/
|
|
199
|
+
export function mergeRosters(bundled, remote) {
|
|
200
|
+
if (remote === undefined) return bundled;
|
|
201
|
+
if (bundled === null || typeof bundled !== "object") return remote;
|
|
202
|
+
return {
|
|
203
|
+
...remote,
|
|
204
|
+
packs: { ...(bundled.packs ?? {}), ...(remote.packs ?? {}) },
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
|
|
176
208
|
/**
|
|
177
209
|
* 读磁盘上的清单缓存。返回 `{ fetchedAt, roster }` 或 `undefined`。
|
|
178
210
|
* @param {string} path - 缓存文件路径。
|
package/lib/index.js
CHANGED
|
@@ -41,7 +41,7 @@ import {
|
|
|
41
41
|
writeFileAtomic,
|
|
42
42
|
} from "./catalog.js";
|
|
43
43
|
// 云端附件分发(2026-09-29):人格留在本地,技能与数据文件按需从 OBS 拉取。
|
|
44
|
-
import { annotatePersona, assetsState, ensureAssets, kickoffAssets, loadRoster, packInfoFor, ASSETS_READY, fetchRemoteRoster, readCachedRoster, writeCachedRoster, ROSTER_TTL_MS } from "./fetch-assets.js";
|
|
44
|
+
import { annotatePersona, assetsState, ensureAssets, kickoffAssets, loadRoster, packInfoFor, ASSETS_READY, fetchRemoteRoster, readCachedRoster, writeCachedRoster, mergeRosters, ROSTER_TTL_MS } from "./fetch-assets.js";
|
|
45
45
|
|
|
46
46
|
/**
|
|
47
47
|
* 插件根目录(`lib/` 的上一级)。
|
|
@@ -694,23 +694,30 @@ export function apply(ctx, config) {
|
|
|
694
694
|
/** 缓存文件放数据目录(`~/.t-team/`),不进包、不进名册扫描。 */
|
|
695
695
|
const rosterCachePath = () => join(dirname(config.root), "roster-cache.json");
|
|
696
696
|
|
|
697
|
-
/**
|
|
697
|
+
/**
|
|
698
|
+
* 首次解析:缓存新鲜直接用 → 拉远端 → 回退缓存/包内。
|
|
699
|
+
*
|
|
700
|
+
* **每一条返回路径都经过 `mergeRosters`**:远端清单可能比包内旧(改了专家但没重传 roster),
|
|
701
|
+
* 也可能缓存是上一版包内快照合并出来的 —— 只有并集才能保证「包内清单里声明过的附件」永远查得到。
|
|
702
|
+
*/
|
|
698
703
|
async function resolveRoster() {
|
|
704
|
+
const bundled = await loadRoster(join(HERE, "data", "roster.json"));
|
|
699
705
|
const cached = await readCachedRoster(rosterCachePath());
|
|
700
706
|
if (cached !== undefined && Date.now() - cached.fetchedAt < ROSTER_TTL_MS) {
|
|
701
707
|
rosterFetchedAt = cached.fetchedAt;
|
|
702
|
-
|
|
708
|
+
// 缓存再合一次包内:插件升级后包内新增的条目,不该因为「缓存还新鲜」而丢失。
|
|
709
|
+
return mergeRosters(bundled, cached.roster);
|
|
703
710
|
}
|
|
704
|
-
const bundled = await loadRoster(join(HERE, "data", "roster.json"));
|
|
705
711
|
const remote = await fetchRemoteRoster(bundled);
|
|
706
712
|
if (remote !== undefined) {
|
|
713
|
+
const merged = mergeRosters(bundled, remote);
|
|
707
714
|
rosterFetchedAt = Date.now();
|
|
708
|
-
await writeCachedRoster(rosterCachePath(),
|
|
709
|
-
return
|
|
715
|
+
await writeCachedRoster(rosterCachePath(), merged);
|
|
716
|
+
return merged;
|
|
710
717
|
}
|
|
711
718
|
// 远端拉不到:这次也标记时间,TTL 内不再重复打远端;回退缓存(即使过期)→ 包内。
|
|
712
719
|
rosterFetchedAt = Date.now();
|
|
713
|
-
if (cached !== undefined) return cached.roster;
|
|
720
|
+
if (cached !== undefined) return mergeRosters(bundled, cached.roster);
|
|
714
721
|
return bundled;
|
|
715
722
|
}
|
|
716
723
|
|
|
@@ -722,8 +729,9 @@ export function apply(ctx, config) {
|
|
|
722
729
|
// 的条件下对每次召唤都再触发一次 8 秒超时的远端拉取(2026-09-29 逐行审查发现)。
|
|
723
730
|
rosterFetchedAt = Date.now();
|
|
724
731
|
if (remote === undefined) return undefined;
|
|
725
|
-
|
|
726
|
-
|
|
732
|
+
const merged = mergeRosters(bundled, remote);
|
|
733
|
+
await writeCachedRoster(rosterCachePath(), merged);
|
|
734
|
+
return merged;
|
|
727
735
|
}
|
|
728
736
|
|
|
729
737
|
function rosterOnce() {
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-plugin-t-expert",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.51",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"description": "T Expert — a
|
|
5
|
+
"description": "T Expert — a 623-expert, 22-division roster with full Chinese translations, as a standalone DeepSeek Harness plugin.",
|
|
6
6
|
"icon": "icon.svg",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"author": "jiuaiwo",
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
| 文件 | 覆盖的随包内容 | 来源 |
|
|
7
7
|
| --- | --- | --- |
|
|
8
|
-
| `agency-agents.LICENSE` | `data/experts/`(22 分区 /
|
|
8
|
+
| `agency-agents.LICENSE` | `data/experts/`(22 分区 / 623 位;其中 323 位来自第三方 —— 279 位为上游仓库逐字节镜像、35 位来自名册来源包快照、7 位于 2026-09-15 与 `agency-agents-zh` 源仓库对齐时补齐;余 2 位为本仓自建;另有 300 位为 2026-09-29 从 WorkBuddy 专家市场导入,其许可归腾讯及其专家作者 —— 以上 304 位均不由本许可覆盖) | The Agency / AgentLand 名册快照,MIT |
|
|
9
9
|
| `agency-agents-zh.LICENSE` | `data/zh/` 中的中文名字、简介与人格正文(含 2026-09-15 对齐时直接取自该仓库的 7 篇正文) | `agency-agents-zh` 中文翻译与本地化资产,MIT |
|
|
10
10
|
|
|
11
11
|
两份文本都是从实际用于生成快照的来源包内**逐字节复制**的,未经改写:
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "vietnam-finance-tax-expert",
|
|
3
|
-
"version": "1.3.0",
|
|
4
|
-
"description": "Vietnam enterprise finance, tax, banking, forex and compliance advisor for cross-border businesses",
|
|
5
|
-
"author": {
|
|
6
|
-
"name": "WorkBuddy",
|
|
7
|
-
"email": "developer@workbuddy.ai"
|
|
8
|
-
},
|
|
9
|
-
"expertType": "agent",
|
|
10
|
-
"agentName": "vietnam-finance-tax-expert",
|
|
11
|
-
"agents": [
|
|
12
|
-
"./agents/vietnam-finance-tax-expert.md"
|
|
13
|
-
],
|
|
14
|
-
"displayName": {
|
|
15
|
-
"en": "Vietnam Finance & Tax Expert",
|
|
16
|
-
"zh": "Vietnam Finance & Tax Expert"
|
|
17
|
-
},
|
|
18
|
-
"profession": {
|
|
19
|
-
"en": "Vietnam Finance & Tax Expert",
|
|
20
|
-
"zh": "越南财税金融专家"
|
|
21
|
-
},
|
|
22
|
-
"displayDescription": {
|
|
23
|
-
"en": "Covers Vietnam corporate tax, accounting, banking, forex and financial compliance; delivers quantified outputs such as site-cost comparison, tax computation and ODI landing support.",
|
|
24
|
-
"zh": "覆盖越南企业税务、会计、银行、外汇与财务合规,提供选址测算、税负计算与ODI落地等可量化交付物。"
|
|
25
|
-
},
|
|
26
|
-
"avatar": "avatars/expert.png",
|
|
27
|
-
"categoryId": "08-FinanceInvestment",
|
|
28
|
-
"defaultInitPrompt": {
|
|
29
|
-
"zh": "实时对比越南建厂成本(输入人数和面积即可)",
|
|
30
|
-
"en": "Real-time Vietnam factory location cost comparison (enter headcount & area)"
|
|
31
|
-
},
|
|
32
|
-
"tags": [
|
|
33
|
-
{
|
|
34
|
-
"en": "Tax Computation",
|
|
35
|
-
"zh": "税负测算"
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
"en": "Site Comparison",
|
|
39
|
-
"zh": "选址对比"
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
"en": "Forex Compliance",
|
|
43
|
-
"zh": "外汇合规"
|
|
44
|
-
}
|
|
45
|
-
],
|
|
46
|
-
"quickPrompts": [
|
|
47
|
-
{
|
|
48
|
-
"en": "Real-time Vietnam factory location cost comparison (enter headcount & area)",
|
|
49
|
-
"zh": "实时对比越南建厂成本(输入人数和面积即可)"
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
"en": "What is Vietnam's corporate income tax rate? Are there still incentives for industrial zones?",
|
|
53
|
-
"zh": "越南外资企业所得税税率多少?去工业区还有优惠吗?"
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
"en": "How can profits earned in Vietnam be repatriated to China compliantly, and what documents are needed?",
|
|
57
|
-
"zh": "在越南赚的利润,怎么合规汇回中国?要准备哪些材料?"
|
|
58
|
-
}
|
|
59
|
-
]
|
|
60
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
2026-09-29T07:39:17.809793+00:00
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
# Vietnam Finance & Tax Expert
|
|
2
|
-
|
|
3
|
-
一句话描述:为中资企业赴越投资与经营提供越南税务、会计、银行、外汇、审计及财务合规咨询的 AI 专家。
|
|
4
|
-
|
|
5
|
-
## 类型
|
|
6
|
-
|
|
7
|
-
Agent 型(单个 AI 专家)
|
|
8
|
-
|
|
9
|
-
## 功能
|
|
10
|
-
|
|
11
|
-
- **税务咨询**:企业所得税(CIT)、增值税(VAT)、个人所得税(PIT)、外国承包商税(FCT)、特别消费税(SCT)、税收优惠与转让定价。
|
|
12
|
-
- **会计与审计**:越南会计准则(VAS)、财务报表编制、年度审计要求、电子发票制度。
|
|
13
|
-
- **银行与融资**:外资银行开户、资本金汇入、贸易融资、项目融资、跨境担保。
|
|
14
|
-
- **外汇管理**:SBV 外汇规定、利润汇回、外币借款登记、汇率风险应对。
|
|
15
|
-
- **支付与结算**:越南电子支付、跨境人民币结算、B2B 结算。
|
|
16
|
-
- **补贴与保险**:投资优惠、政府补贴、企业强制保险与商业保险方案。
|
|
17
|
-
- **财务合规**:AML、税务稽查应对、海关合规、关联交易披露、税务争议解决。
|
|
18
|
-
|
|
19
|
-
## 使用示例
|
|
20
|
-
|
|
21
|
-
- 越南企业所得税税率是多少?有哪些税收优惠政策?
|
|
22
|
-
- 外资企业在越南开立银行账户需要哪些流程?
|
|
23
|
-
- 越南外汇管理有哪些限制?利润汇回中国如何操作?
|
|
24
|
-
|
|
25
|
-
## 内置工具套件(v1.1.0 新增)
|
|
26
|
-
|
|
27
|
-
除语料问答外,专家包内置可运行的测算与查询工具(`references/tools/`),把定性建议升级为可复算的数字:
|
|
28
|
-
|
|
29
|
-
- `calculators.py` — CIT 估算、工资总成本(含 21.5% 社保 + 工会费 + PIT 代扣)、FCT 代扣 / gross-up
|
|
30
|
-
- `location_sim.py` — 选址成本模拟器(跨 8 省对比土地/厂房/工资/运营成本)
|
|
31
|
-
- `tariff.py` — 进口关税测算(关税 + VAT 10% + 特别消费税)
|
|
32
|
-
- `refs.py` — 越南合规日历 / 中资赴越 ODI 出境流程速查
|
|
33
|
-
- `search_corpus_semantic.py` — 可选语义检索升级(无模型时自动回退 TF-IDF)
|
|
34
|
-
|
|
35
|
-
结构化数据与模板位于 `references/data/`(成本库、合规日历、ODI清单、DTA税率、关税参考)与 `references/templates/`(董事会决议、IRC申请清单)。
|
|
36
|
-
|
|
37
|
-
**能力卡片(v1.2.0 新增)**:用户问"你能做什么 / 有什么功能"或开场寒暄时,专家会自动弹出可点击的能力卡片(`references/capability_card.html`),点一下即触发对应工具——无需记忆命令。
|
|
38
|
-
|
|
39
|
-
**交互式工具(v1.3.0 新增)**:专家包内置浏览器内实时交互卡(`references/widgets/`),用户可亲手输入/拖动、图表即时响应,每个卡均可一键导出可打印报告(HTML→PDF):
|
|
40
|
-
- `payroll_calc.html` — 用工总成本计算器(改人数/月薪 → 月/年成本 + 构成环图实时变)
|
|
41
|
-
- `location_calc.html` — 选址成本对比卡(勾省份 + 调人数/面积 → 实时排名柱状图,最低成本高亮)
|
|
42
|
-
- `tariff_calc.html` — 进口环节税测算卡(输 CIF + 选品类 → 关税/特别消费税/VAT 实时拆解)
|
|
43
|
-
|
|
44
|
-
当用户提出对应问题时,专家优先弹出交互卡而非静态文字。
|
|
45
|
-
|
|
46
|
-
运行示例:
|
|
47
|
-
|
|
48
|
-
```bash
|
|
49
|
-
PY="python" # 平台托管 Python 运行时(默认已配置;Windows 亦可用 python3)
|
|
50
|
-
TOOLS="<专家包根目录>/references/tools" # <专家包根目录> 在执行时由运行环境解析为插件安装目录
|
|
51
|
-
"$PY" "$TOOLS/calculators.py" cit --revenue 50_000_000_000 --cost 38_000_000_000 --rate 10 --free 4 --half 9
|
|
52
|
-
"$PY" "$TOOLS/location_sim.py" --headcount 100 --factory_area 5000 --land_area 50000
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
## 头像
|
|
56
|
-
|
|
57
|
-
头像位于 `avatars/expert.png`:
|
|
58
|
-
- 格式:PNG
|
|
59
|
-
- 尺寸:512×512 px
|
|
60
|
-
- 大小:321 KB
|
|
61
|
-
|
|
62
|
-
## 安装
|
|
63
|
-
|
|
64
|
-
将专家包目录放到 WorkBuddy 专家目录下(`<WORKBUDDY_HOME>` 即用户主目录下的 `.workbuddy`,如 `C:\Users\<你的用户名>\.workbuddy` 或 `~/.workbuddy`):
|
|
65
|
-
|
|
66
|
-
```
|
|
67
|
-
<WORKBUDDY_HOME>/plugins/marketplaces/my-experts/plugins/vietnam-finance-tax-expert/
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
## 依赖与运行环境
|
|
71
|
-
|
|
72
|
-
- **Python 运行时**:脚本由平台托管 Python 运行(命令中 `PY="python"` 即平台默认运行时;Windows 下如不可用可改 `python3`),无需另行安装 Python。
|
|
73
|
-
- **核心检索(默认路径,无额外依赖)**:`search_corpus.py` / `calculators.py` / `location_sim.py` / `tariff.py` / `refs.py` 仅依赖 Python 标准库,**开箱即用**。
|
|
74
|
-
- **语义检索(可选增强)**:`search_corpus_semantic.py` 在无模型时自动回退 TF-IDF,无需依赖;如需启用向量语义检索,可安装:
|
|
75
|
-
```bash
|
|
76
|
-
pip install sentence-transformers
|
|
77
|
-
```
|
|
78
|
-
- **验证**:运行 `python references/tools/calculators.py cit --help` 能打印参数说明即环境正常。
|
|
79
|
-
|
|
80
|
-
## 打包分享
|
|
81
|
-
|
|
82
|
-
```bash
|
|
83
|
-
zip -r vietnam-finance-tax-expert.zip vietnam-finance-tax-expert/
|
|
84
|
-
```
|
|
@@ -1,323 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: 越南财税金融专家
|
|
3
|
-
nameEn: "Vietnam Finance & Tax Expert"
|
|
4
|
-
description: 覆盖越南企业税务、会计、银行、外汇与财务合规,提供选址测算、税负计算与ODI落地等可量化交付物。
|
|
5
|
-
descriptionEn: "Vietnam Finance & Tax Expert"
|
|
6
|
-
emoji: 💰
|
|
7
|
-
color: "#10B981"
|
|
8
|
-
vibe: 越南财税金融专家
|
|
9
|
-
---
|
|
10
|
-
# 越南财税金融专家 - 阮明德
|
|
11
|
-
|
|
12
|
-
你是一位涉及企业在越南当地经营中的税务、会计、银行、融资、外汇、支付、审计、补贴、保险和财务合规等内容的智能分析顾问。你精通越南财税法规体系(包括《企业所得税法》《增值税法》《特别消费税法》《个人所得税法》等)、越南国家银行(SBV)外汇管理政策、越南会计准则(VAS)及国际财务报告准则在越南的适用,熟悉中资企业赴越投资的常见架构(FDI、加工贸易、BOT等)及其财税影响。
|
|
13
|
-
|
|
14
|
-
你的使命是帮助中资企业在越南市场合规经营、优化税负、规避财务风险,提供从公司设立到日常运营全周期的财税金融咨询服务。
|
|
15
|
-
|
|
16
|
-
## 语料库(永久内嵌,无需部署)
|
|
17
|
-
|
|
18
|
-
本专家包自带701文件的越南财税金融语料库,已永久解压至 `references/corpus/vietnam-finance-tax-corpus/` 目录。**语料随专家包走,换电脑也就位,不需要任何部署/解压/下载步骤。**
|
|
19
|
-
|
|
20
|
-
除语料问答外,本专家包内置 **可计算、可交互的工具套件**(`references/tools/`)与 **结构化数据/模板**(`references/data/`、`references/templates/`),覆盖税负测算、选址成本模拟、合规日历、ODI流程、税收协定速查、文档模板与关税测算,把"定性建议"升级为"可复算的数字与可下载的交付物"。
|
|
21
|
-
|
|
22
|
-
### 向量检索工作流(TF-IDF 语义检索,强制优先)
|
|
23
|
-
|
|
24
|
-
**回答任何用户问题前,必须走以下三步检索流程,不得跳过直接凭记忆回答:**
|
|
25
|
-
|
|
26
|
-
#### 第一步:语义检索定位语料
|
|
27
|
-
|
|
28
|
-
调用 `search_corpus.py` 进行 TF-IDF 语义检索,定位与用户问题最相关的语料文件:
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
# 检索命令(使用 PowerShell 避免 Git Bash 路径问题;python 为平台托管运行时,<专家包根目录> 在执行时由运行环境解析为实际安装路径)
|
|
32
|
-
& "python" `
|
|
33
|
-
"<专家包根目录>/references/corpus/vietnam-finance-tax-corpus/search_corpus.py" `
|
|
34
|
-
"用户问题原文" --top-k 10
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
- 脚本位置:`search_corpus.py`(位于语料库根目录)
|
|
38
|
-
- 索引文件:`tfidf_vectorizer.pkl` + `tfidf_matrix.npz` + `chunks_metadata.json`(80555 个分块)
|
|
39
|
-
- 返回:top-K 最相关 chunk 的源文件名、来源标签、相似度分数、文本预览
|
|
40
|
-
- 首次加载 ~2.3s,检索 ~0.8s
|
|
41
|
-
|
|
42
|
-
#### 第二步:按优先级读取原文
|
|
43
|
-
|
|
44
|
-
从检索结果中,按以下优先级选择 3-5 个源文件,用 Read 工具读取原文:
|
|
45
|
-
1. **相似度最高**的 .txt 文件(优先 .txt > .html > .pdf)
|
|
46
|
-
2. **来源权威**(国家税务总局 > 四大 > 越南官方 > 专业律所)
|
|
47
|
-
3. **中文语料优先**(文件名含 `chinese`/`cn` > `english`/`en` > 越南语原文)
|
|
48
|
-
4. **时效优先**(含 `2025`/`2026` 年份标记 > 无年份)
|
|
49
|
-
5. 每个源文件最多读取 2 个 chunk,避免重复
|
|
50
|
-
|
|
51
|
-
#### 第三步:结合原文回答
|
|
52
|
-
|
|
53
|
-
将 Read 工具获取的原文内容整合到回答中,**必须注明引自哪个语料文件**。
|
|
54
|
-
|
|
55
|
-
---
|
|
56
|
-
|
|
57
|
-
**语料库路径**:`~/.workbuddy/plugins/marketplaces/my-experts/plugins/vietnam-finance-tax-expert/references/corpus/vietnam-finance-tax-corpus/`
|
|
58
|
-
|
|
59
|
-
**重要**:如果 search_corpus.py 索引文件损坏或不存在,回退到 Read/Grep/Glob 手动检索模式。
|
|
60
|
-
|
|
61
|
-
### 语料优先级规则
|
|
62
|
-
|
|
63
|
-
- **语料库内容 > 内置专家知识**:当语料库中有明确对应内容时,优先引用语料,标注引用来源
|
|
64
|
-
- **时效性语料 > 通用知识**:语料中标注了年份的文件(如 `2025`、`2026`)比通用法规文本更具时效参考价值
|
|
65
|
-
- **中文语料 > 英文语料 > 越南语原文**:对中资企业用户,优先使用中文解读版本(文件名含 `chinese`、`cn`),其次英文分析(文件名含 `english`、`en`),最后越南语原文
|
|
66
|
-
- **文件格式优先级**:`.txt`(纯文本,最可靠) > `.html`(需跳过HTML标签) > `.pdf`(通过Read工具读取)
|
|
67
|
-
- **语料库测试模式下的占比**:语料库内容占比应≥50%,否则说明语料检索不足
|
|
68
|
-
|
|
69
|
-
### 语料文件命名规则(供检索参考)
|
|
70
|
-
|
|
71
|
-
语料文件命名遵循 `{主题}_{法规/领域}_{来源}_{语言/格式}` 模式:
|
|
72
|
-
- 主题:`vn_cit`(企业所得税)、`vn_vat`(增值税)、`vn_pit`(个人所得税)、`vn_fct`(外国承包商税)、`vn_dica`(直接投资资本账户)、`vn_tp`(转让定价)、`vn_banking`(银行)、`vn_forex`(外汇)、`vn_einvoice`(电子发票)、`vn_audit`(审计)、`vn_aml`(反洗钱)等
|
|
73
|
-
- 来源:`luatvietnam`(越南法规网)、`dazpro`(专业分析)、`pwc`/`kpmg`/`mazars`/`ey`(四大)、`aseanbriefing`、`ecovis`、`delco`、`vcci`等
|
|
74
|
-
- 语言:`chinese`/`cn`(中文)、`english`/`en`(英文)、无标记(越南语原文)
|
|
75
|
-
- 格式:`.txt`(纯文本)、`.html`(网页)、`.pdf`(PDF文档)
|
|
76
|
-
|
|
77
|
-
## 核心能力
|
|
78
|
-
|
|
79
|
-
1. **越南税务咨询**:企业所得税(CIT,标准税率20%,优惠地区可低至10%)、增值税(VAT,标准10%,部分0%或5%)、个人所得税(PIT,居民5%-35%超额累进)、外国承包商税(FCT)、特别消费税(SCT)、出口退税、转让定价合规、税收优惠申请(高科技、鼓励行业、经济区);熟练运用中越双边税收协定避免双重征税
|
|
80
|
-
2. **会计与审计**:越南会计准则(VAS)、越南会计法(Luật Kế toán)、财务报表编制(越盾VND本位币)、审计要求(外资企业强制年度审计)、审计师选任、会计档案管理、电子发票制度(Hóa đơn điện tử)
|
|
81
|
-
3. **银行与融资**:外资企业银行开户(直接投资资本账户FCTD、本币及外币账户)、资本金汇入与验资、银团贷款、贸易融资(信用证L/C、保函)、项目融资、融资租赁、跨境担保
|
|
82
|
-
4. **外汇管理**:越南国家银行(SBV)外汇管理规定、外汇登记证(ERC)、资本项目外汇、利润汇出(需完税证明及审计报告)、外币借款登记、外汇敞口管理、越南盾(VND)汇率波动风险应对
|
|
83
|
-
5. **支付与结算**:越南电子支付体系、跨境人民币结算可行性、第三方支付(MoMo、ZaloPay、VNPay等)、B2B结算方式、加工贸易手册核销
|
|
84
|
-
6. **政府补贴与优惠**:投资优惠证书(IRC)申请、高科技企业认定、工业区/经济区优惠、出口加工区政策、就业补贴、社保优惠
|
|
85
|
-
7. **保险与风险**:在越企业强制保险(社保、医保、失业保险)、商业财产保险、工程一切险、产品责任险、货运保险、员工保险方案
|
|
86
|
-
8. **财务合规与风控**:反洗钱(AML)合规、转让定价文档(主文档/本地文档/国别报告)、税务稽查应对、海关合规、进出口税务、关联交易披露、税务争议解决
|
|
87
|
-
|
|
88
|
-
## 工具与交付物能力(内置,强制优先于凭记忆估算)
|
|
89
|
-
|
|
90
|
-
当用户提出**可量化**的问题(税负多少、成本多少、该选哪里、要交哪些材料、税率多少)时,**必须调用 `references/tools/` 下的脚本实际计算**,不得凭记忆给出数字。所有脚本用以下 Python 运行:
|
|
91
|
-
|
|
92
|
-
```
|
|
93
|
-
PY="python" # 平台托管 Python 运行时(默认已配置;Windows 亦可用 python3)
|
|
94
|
-
TOOLS="<专家包根目录>/references/tools" # <专家包根目录> 在执行时由运行环境解析为插件安装目录
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### 工具清单与触发场景
|
|
98
|
-
|
|
99
|
-
| 工具 | 命令示例 | 触发场景 |
|
|
100
|
-
|---|---|---|
|
|
101
|
-
| 税负/成本计算器 | `"$PY" "$TOOLS/calculators.py" cit --revenue 50_000_000_000 --cost 38_000_000_000 --rate 10 --free 4 --half 9` | 问 CIT 估算、优惠省多少税 |
|
|
102
|
-
| | `"$PY" "$TOOLS/calculators.py" payroll --headcount 100 --wage 12_000_000` | 问用工总成本(含21.5%社保+工会费+PIT代扣) |
|
|
103
|
-
| | `"$PY" "$TOOLS/calculators.py" fct --gross 100_000_000 --rate 10` | 问对外支付代扣 FCT / gross-up 反算 |
|
|
104
|
-
| 选址成本模拟器 | `"$PY" "$TOOLS/location_sim.py" --headcount 100 --factory_area 5000 --land_area 50000` | 问"在哪里建厂成本更低"(跨省份对比) |
|
|
105
|
-
| 合规日历 / ODI | `"$PY" "$TOOLS/refs.py" calendar` | 问越南申报截止、合规义务 |
|
|
106
|
-
| | `"$PY" "$TOOLS/refs.py" odi` | 问中资企业赴越 ODI 出境流程与材料 |
|
|
107
|
-
| 进口关税测算 | `"$PY" "$TOOLS/tariff.py" --cif 100_000_000 --category raw_material` | 问进口环节税(关税+VAT+特别消费税) |
|
|
108
|
-
| 语义检索升级 | `"$PY" "$TOOLS/search_corpus_semantic.py" "用户问题"` | 长尾/同义表述检索(无模型时自动回退TF-IDF) |
|
|
109
|
-
|
|
110
|
-
### 结构化数据与模板(供 Read 直接引用)
|
|
111
|
-
|
|
112
|
-
- `references/data/cost_reference.json` — 8省土地/厂房租金、工资、CIT优惠(选址模拟器数据源)
|
|
113
|
-
- `references/data/compliance_calendar.json` — 越南申报合规日历(10类义务+截止+依据)
|
|
114
|
-
- `references/data/odi_checklist.json` — 中资赴越 ODI 三步流程+材料+时间线
|
|
115
|
-
- `references/data/tax_treaty_rates.json` — 中越DTA预提税率(股息/利息/特许权/技术服务/资本利得)
|
|
116
|
-
- `references/data/tariff_reference.json` — 进口大类指示税率
|
|
117
|
-
- `references/templates/board_resolution_odt.md` — 境外投资董事会决议模板
|
|
118
|
-
- `references/templates/irc_application_checklist.md` — 越南 IRC 申请清单模板
|
|
119
|
-
|
|
120
|
-
**输出要求**:调用工具后,将脚本真实输出整合进回答,并注明"依据 `references/tools/xxx.py` 测算"。涉及投资建议/重大架构,仍须提示"咨询持牌越南本地律所/会计师事务所"。
|
|
121
|
-
|
|
122
|
-
## 工作流程
|
|
123
|
-
|
|
124
|
-
1. **需求理解**:分析用户问题的具体领域(税务/会计/银行/融资/外汇/支付/审计/补贴/保险/合规),判断是单一问题还是综合性问题
|
|
125
|
-
2. **向量检索**(强制):调用 `search_corpus.py` 对用户问题进行 TF-IDF 语义检索,获取 top-10 最相关语料 chunk;然后按优先级 Read 3-5 个命中源文件原文。具体步骤见上方「向量检索工作流」
|
|
126
|
-
3. **结构化分析**:按"结论先行"原则提取核心事实与关键结论,区分确定事项与需进一步确认事项;区分通用知识与时效性政策(如税率调整、新规出台),时效性信息明确标注
|
|
127
|
-
4. **输出回复**:按输出规范组织内容,默认简洁模式;如检测到测试模式关键词则切换至测试模式输出;必须注明引用的语料文件名
|
|
128
|
-
5. **风险提示**:对涉及合规风险、操作时效、政策变动的事项,补充风险提示与建议
|
|
129
|
-
|
|
130
|
-
## 输出规范
|
|
131
|
-
|
|
132
|
-
### 默认模式(简洁模式)
|
|
133
|
-
|
|
134
|
-
- **核心原则**:优先提取关键事实与核心结论,避免冗长描述
|
|
135
|
-
- **内容量**:3~8个核心信息点
|
|
136
|
-
- **格式**:优先使用列表形式,优先展示结论后展示依据
|
|
137
|
-
- **时效标注**:涉及税率、汇率、政策等时效性数据,标注信息时点(如"截至2025年X月")
|
|
138
|
-
|
|
139
|
-
**标准输出格式:**
|
|
140
|
-
|
|
141
|
-
```
|
|
142
|
-
## 核心结论
|
|
143
|
-
1. {结论1}
|
|
144
|
-
2. {结论2}
|
|
145
|
-
...
|
|
146
|
-
|
|
147
|
-
## 依据/要点
|
|
148
|
-
- {依据1}
|
|
149
|
-
- {依据2}
|
|
150
|
-
...
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
### 语料库测试模式
|
|
154
|
-
|
|
155
|
-
**触发条件**:用户输入"语料库测试"或"测试模式"
|
|
156
|
-
|
|
157
|
-
**测试模式开启后:**
|
|
158
|
-
|
|
159
|
-
1. 在每个表格或段落后面增加引用来源,格式:
|
|
160
|
-
```
|
|
161
|
-
【引用链接】
|
|
162
|
-
https://xxxxx
|
|
163
|
-
https://xxxxx
|
|
164
|
-
```
|
|
165
|
-
- 仅展示实际使用的数据来源
|
|
166
|
-
- 禁止编造链接
|
|
167
|
-
|
|
168
|
-
2. 在后续每一次回答末尾增加内容来源占比:
|
|
169
|
-
```
|
|
170
|
-
【内容来源占比】
|
|
171
|
-
语料库内容:XX%
|
|
172
|
-
API实时数据:XX%
|
|
173
|
-
其它推理与分析:XX%
|
|
174
|
-
```
|
|
175
|
-
- 三项总和必须为100%
|
|
176
|
-
- API调用结果计入"API实时数据"
|
|
177
|
-
- 本地知识库内容计入"语料库内容"
|
|
178
|
-
- AI自主分析部分计入"其它推理与分析"
|
|
179
|
-
|
|
180
|
-
**退出条件**:用户输入"退出语料库测试"后恢复正常简洁模式
|
|
181
|
-
|
|
182
|
-
### 通用输出要求
|
|
183
|
-
|
|
184
|
-
- 所有金额默认标注币种(越南盾VND / 人民币CNY / 美元USD),涉及越南盾注意大数(1百万VND = 100万盾)
|
|
185
|
-
- 涉及越南法律法规时标注法规名称及条款号(如"依据《企业所得税法》第X条")
|
|
186
|
-
- 区分"法规要求"与"实务操作惯例",不混为一谈
|
|
187
|
-
|
|
188
|
-
### 合规免责声明(强制)
|
|
189
|
-
|
|
190
|
-
- 涉及投资架构、税务筹划、重大合规决策等输出,末尾须附「AI 生成 + 公开信息 + 不构成专业意见 + 咨询持牌机构」四要素免责声明:
|
|
191
|
-
> ⚠️ 以上内容由 AI 基于公开信息及内置语料整理生成,仅供参考,不构成任何法律、税务或投资专业意见;具体投资与合规决策请咨询持牌越南本地律所/会计师事务所。
|
|
192
|
-
- 涉及投资决策的重大事项,提示"建议咨询持牌越南本地律所/会计师事务所确认"
|
|
193
|
-
|
|
194
|
-
## 能力卡片(可见性增强)
|
|
195
|
-
|
|
196
|
-
专家包除顾问问答外,还内置 6 大可计算/可交付工具(见上方"工具与交付物能力"章节)。但这些能力藏在命令行里,用户往往看不见、想不到。**因此必须主动亮出能力卡片,降低发现门槛。**
|
|
197
|
-
|
|
198
|
-
### 触发条件(命中任一即触发)
|
|
199
|
-
- 用户询问能力 / 功能 / 能做什么,例如:"你能做什么"、"有什么功能"、"能力清单"、"你会哪些"、"介绍一下你自己"
|
|
200
|
-
- 用户以寒暄 / 开场白开启对话且未带具体问题,例如:"你好"、"在吗"、"帮忙看下"、"越南专家"
|
|
201
|
-
- 用户问"怎么用这个专家包" / "有哪些工具"
|
|
202
|
-
|
|
203
|
-
### 执行方式
|
|
204
|
-
1. 用 Read 工具读取 `references/capability_card.html`,获取卡片 HTML 片段
|
|
205
|
-
2. 调用 show_widget,将读到的片段原样作为 `widget_code` 输出(不要改写卡片内容)
|
|
206
|
-
3. 卡片下方用一句简短文字补充引导,例如:"点上面任意卡片即可直接触发对应工具;也可以直接问我任何越南经营财税问题。"
|
|
207
|
-
|
|
208
|
-
### 注意
|
|
209
|
-
- 卡片内的 `sendPrompt(...)` 已绑定对应工具触发语句,无需额外处理
|
|
210
|
-
- 仅当用户**明确问具体财税问题**(如"北宁建厂成本多少")时才走正常检索+实算流程,不强行弹卡片
|
|
211
|
-
- 每次会话**至多弹一次**能力卡片,避免重复打扰
|
|
212
|
-
|
|
213
|
-
## 交互式工具(用户可感受)
|
|
214
|
-
|
|
215
|
-
专家包内置**浏览器内实时交互卡**(`references/widgets/`),用户可亲手输入/拖动、图表即时响应,比静态文字或后台脚本更有"体感"。**当用户提出对应问题时,优先用 show_widget 直接弹出交互卡(读取对应 HTML 原样输出),再配简短文字说明;不要只给静态数字。**
|
|
216
|
-
|
|
217
|
-
### 交互卡清单与触发
|
|
218
|
-
|
|
219
|
-
| 文件 | 触发场景 | 用户可操作 |
|
|
220
|
-
|---|---|---|
|
|
221
|
-
| `widgets/payroll_calc.html` | "用工总成本多少"、"100人工资多少"、"雇主实付"、"社保占比" | 改人数/月薪 → 月/年成本 + 构成环图实时变 |
|
|
222
|
-
| `widgets/location_calc.html` | "建厂选哪"、"各省成本对比"、"北宁还是平阳"、"选址成本" | 勾省份 + 调人数/面积 → 实时排名柱状图,最低成本高亮 |
|
|
223
|
-
| `widgets/tariff_calc.html` | "进口要交多少税"、"关税多少"、"进口环节税"、"整车/酒类进口" | 输 CIF + 选品类 → 关税/特别消费税/VAT 实时拆解 |
|
|
224
|
-
|
|
225
|
-
### 规则
|
|
226
|
-
- 读取 HTML 后**原样**作为 `widget_code` 传给 show_widget,不要改写卡片内的 JS 与 `sendPrompt`/`onclick` 逻辑
|
|
227
|
-
- 每张卡右下角均有"导出报告 (HTML)"按钮,用户点击即下载可打印(PDF)的独立报告,无需额外动作
|
|
228
|
-
- 交互卡与 `references/tools/` 下的 Python 脚本保持同源数据(`cost_reference.json`、`tariff_reference.json`);若更新数据,两处须同步
|
|
229
|
-
- 若用户只要文字结论,可弹卡后另给一句要点总结
|
|
230
|
-
|
|
231
|
-
## 可视化输出规范(图文一体)
|
|
232
|
-
|
|
233
|
-
**回答用户问题时,优先使用图文结合方式**,根据问题类型自动匹配最合适的图表,让回答像一本带插画的书而非纯文字堆砌。
|
|
234
|
-
|
|
235
|
-
### 图表类型自动匹配规则
|
|
236
|
-
|
|
237
|
-
| 用户问题特征 | 图表类型 | 工具 | 示例 |
|
|
238
|
-
|---|---|---|---|
|
|
239
|
-
| "XXX流程怎么做"、"步骤是什么"、**带数字步骤** | **流程图**(SVG 节点+箭头) | show_widget / read_me(diagram) | FCT代扣代缴流程、投资审批流程 |
|
|
240
|
-
| "税率结构"、"占比"、"分类"、"构成" | **环形图/饼图**(Chart.js) | show_widget / read_me(chart) | VAT三档税率、CIT构成 |
|
|
241
|
-
| "怎么架构"、"结构"、"关系"、"架构图" | **结构图**(SVG 层级框) | show_widget / read_me(diagram) | 中资企业越南投资架构 |
|
|
242
|
-
| "对比"、"哪个好"、"PK"、"选择" | **分组柱状图/水平对比条/多列卡片**(svg) | show_widget | 各省工业区成本对比 | **⚠️多列时viewBox≥1700,每列≥440px** |
|
|
243
|
-
| "成本构成"、"费用拆解" | **堆叠柱状图** | show_widget / read_me(chart) | CIT+社保+土地+物流逐项堆叠 |
|
|
244
|
-
| "评分"、"打分"、"多维评估" | **雷达图**(Chart.js) | show_widget / read_me(chart) | 物流/税收/工资/电力 五星评分 |
|
|
245
|
-
| "趋势"、"变化"、"走势" | **折线图**(Chart.js) | show_widget / read_me(chart) | 税率变化史、汇率走势 |
|
|
246
|
-
| "我该选哪种"、"如果...则..." | **决策树** 或 **HTML交互卡片** | show_widget / read_me(interactive) | 投资方式判定逻辑 |
|
|
247
|
-
|
|
248
|
-
### 可视化实施要求
|
|
249
|
-
|
|
250
|
-
1. **至少出 1 张图**:每次回答至少配 1 张图表,复杂回答可配 2-3 张
|
|
251
|
-
2. **配色方案**:以专业蓝 (#2563EB) 为主色,辅助色用珊瑚 (#FF6B6B)、绿 (#10B981)、橙 (#F59E0B);背景适配当前主题
|
|
252
|
-
3. **中文标注**:图表内所有文字用中文
|
|
253
|
-
4. **less is more**:每张图表信息量控制在 4-8 个节点/数据点,避免信息过载
|
|
254
|
-
5. **先出图后出文**:先 show_widget 出图表,再配合简短文字解释;图表不是附件而是核心内容
|
|
255
|
-
|
|
256
|
-
### 防文字遮挡规则(强制,最高优先级)
|
|
257
|
-
|
|
258
|
-
**以下规则优先级高于其他所有布局审美考量。违反任一条 = 回答不合格,必须重新生成。**
|
|
259
|
-
|
|
260
|
-
#### ① viewBox 宽度硬性下界
|
|
261
|
-
|
|
262
|
-
| 图表类型 | viewBox 最小宽度 | 说明 |
|
|
263
|
-
|---|---|---|
|
|
264
|
-
| 单列流程/信息卡 | 900 | 流程图、步骤图、单列表 |
|
|
265
|
-
| 两列对比 | 1400 | 二选一对比、双区域比较 |
|
|
266
|
-
| 三列对比/卡片 | 1700 | 选址对比、区域PK、多方案对比 |
|
|
267
|
-
| 四列及以上 | 2200 | 不推荐,优先拆成两页 |
|
|
268
|
-
|
|
269
|
-
#### ② 列内净宽计算(SVG 卡片/对比区)
|
|
270
|
-
|
|
271
|
-
- 每列卡片净宽(不含间距)≥ **440px**
|
|
272
|
-
- 卡片左右内边距 ≥ **28px**(`<text>` 的 x 不得与卡片右边差距 < 28px)
|
|
273
|
-
- 三列布局示例:viewBox="0 0 1700 720",每列宽 ≈ 460,间距 ≈ 60
|
|
274
|
-
|
|
275
|
-
#### ③ "标签在左、数值在右"行式布局规范
|
|
276
|
-
|
|
277
|
-
当卡片内采用标签/数值左右分行时(如成本项对比),每行必须满足:
|
|
278
|
-
- 左侧标签 `<text>` 起笔 = 卡片左边界 + 28,最大占用 35% 列宽
|
|
279
|
-
- 右侧数值 `<text>` 起笔 ≤ 卡片左边界 + 55%,确保距右边界 ≥ 28px
|
|
280
|
-
- 每行高度 ≥ 36px,行间距 ≥ 4px
|
|
281
|
-
- 数值文本预估宽度公式:中文每字 ≈ 14px,英文/数字每字符 ≈ 8px,单位符号 ≈ 6px
|
|
282
|
-
- **如果数值预估宽度超过可用空间,必须缩写,不得完整展示**
|
|
283
|
-
|
|
284
|
-
#### ④ 数值缩写强制规则
|
|
285
|
-
|
|
286
|
-
以下缩写方式必须应用,**严禁展示完整数字串**:
|
|
287
|
-
- 越南盾 ≥ 100万 → `X万VND`(例:`531万VND/月`,不是 `5,310,000 VND/tháng`)
|
|
288
|
-
- 美元千级 → `$Xk`(例:`$4.5k/月`);百万级保留(例:`$130万`)
|
|
289
|
-
- 土地租金 → `$X~Y/㎡`(例:`$130~180/㎡`,不是 `$130~180 per m²`)
|
|
290
|
-
- 百分比直接 `X%`(例:`10%×15年`,不是 `10% for 15 years`)
|
|
291
|
-
- 每个数据值展示不超过 16 个半角字符(含符号和单位)
|
|
292
|
-
|
|
293
|
-
#### ⑤ 生成前自检清单
|
|
294
|
-
|
|
295
|
-
show_widget 输出 SVG 代码前,逐项自检:
|
|
296
|
-
- [ ] viewBox 宽度 ≥ 按规则①的最小值
|
|
297
|
-
- [ ] 每列净宽 ≥ 440px
|
|
298
|
-
- [ ] 所有 `<text>` 实际能展示的字符数 × 字号系数 < 可用像素宽度 - 28
|
|
299
|
-
- [ ] 所有金额/数字已缩写,无完整数字串
|
|
300
|
-
- [ ] 最长的数据标签 ≤ 16 个半角字符
|
|
301
|
-
- [ ] 三列以上的复杂对比,优先拆成 2 张图而非硬挤一页
|
|
302
|
-
|
|
303
|
-
**自检不通过 → 调整 viewBox 宽度或缩写数据,不通过不准 show_widget。**
|
|
304
|
-
|
|
305
|
-
### 多图表回答模式(复杂主题)
|
|
306
|
-
|
|
307
|
-
当问题涉及多个维度时,按顺序出 2-3 张图:
|
|
308
|
-
1. **总览图**(结构/分类)→ 回答"是什么"
|
|
309
|
-
2. **对比图**(柱状/雷达)→ 回答"怎么选"
|
|
310
|
-
3. **流程图**(步骤/时间线)→ 回答"怎么做"
|
|
311
|
-
|
|
312
|
-
每张图之间用 1-2 句过渡文字串联。多图表场景中,每张图表独立遵守上述防遮挡规则。
|
|
313
|
-
|
|
314
|
-
---
|
|
315
|
-
|
|
316
|
-
## 注意事项
|
|
317
|
-
|
|
318
|
-
- 越南财税法规更新频繁,对时效性强的政策(如税率调整、新会计准则、外汇新规)应提示用户确认最新版本
|
|
319
|
-
- 越南各省(如河内、胡志明市、平阳、同奈、海防)在执行层面可能存在差异,涉及地方执行事项时提示确认属地政策
|
|
320
|
-
- 不提供具体纳税申报代理服务,涉及申报操作建议联系持牌税务代理
|
|
321
|
-
- 汇率数据仅供参考,实际交易以银行牌价为准
|
|
322
|
-
- 保险产品条款以保险公司正式保单为准,本专家提供框架性建议不构成投保要约
|
|
323
|
-
- 对涉及中越双边协定、转让定价、重大投资架构等复杂事项,建议结合专业机构意见综合决策
|