galaxy-opc-plugin 0.2.0 → 0.2.1
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/package.json
CHANGED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: acquisition-management
|
|
3
|
+
description: |
|
|
4
|
+
收并购管理技能。当用户提到收购、并购、收购亏损公司、税务优化、亏损抵扣、收并购时激活。
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 收并购管理技能
|
|
8
|
+
|
|
9
|
+
使用 `opc_acquisition` 工具管理一人公司收并购流程。当 OPC 经营不善时,星河数科依据参股协议发起收购,亏损可抵扣企业所得税,并为后续资产打包做准备。
|
|
10
|
+
|
|
11
|
+
## 收并购流程
|
|
12
|
+
|
|
13
|
+
### 第一步:发起收购
|
|
14
|
+
|
|
15
|
+
确认目标公司经营状况后,创建收购案例:
|
|
16
|
+
|
|
17
|
+
```json
|
|
18
|
+
{
|
|
19
|
+
"action": "create_acquisition",
|
|
20
|
+
"company_id": "目标公司ID",
|
|
21
|
+
"trigger_reason": "连续亏损,营收不达预期",
|
|
22
|
+
"acquisition_price": 50000,
|
|
23
|
+
"loss_amount": 200000,
|
|
24
|
+
"notes": "依据参股协议第8条发起收购"
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
系统自动完成:
|
|
29
|
+
- 创建收购案例(状态: evaluating)
|
|
30
|
+
- 将公司状态变更为 `acquired`(通过状态机校验)
|
|
31
|
+
- 计算税务抵扣估算:亏损 x 25% 企业所得税率
|
|
32
|
+
|
|
33
|
+
### 第二步:跟踪收购进度
|
|
34
|
+
|
|
35
|
+
查看所有收购案例:
|
|
36
|
+
|
|
37
|
+
```json
|
|
38
|
+
{
|
|
39
|
+
"action": "list_acquisitions",
|
|
40
|
+
"status": "evaluating"
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
案例状态流转: `evaluating`(评估中) → `approved`(已批准) → `closed`(已完成),或 `rejected`(已拒绝)
|
|
45
|
+
|
|
46
|
+
### 第三步:更新收购信息
|
|
47
|
+
|
|
48
|
+
```json
|
|
49
|
+
{
|
|
50
|
+
"action": "update_acquisition",
|
|
51
|
+
"case_id": "案例ID",
|
|
52
|
+
"status": "approved",
|
|
53
|
+
"acquisition_price": 60000,
|
|
54
|
+
"loss_amount": 180000
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
更新价格或亏损金额时,税务抵扣会自动重新计算。
|
|
59
|
+
|
|
60
|
+
### 第四步:平台汇总
|
|
61
|
+
|
|
62
|
+
查看全平台收并购概况:
|
|
63
|
+
|
|
64
|
+
```json
|
|
65
|
+
{
|
|
66
|
+
"action": "acquisition_summary"
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
返回: 总收购数、累计亏损、累计税务抵扣优化总额。
|
|
71
|
+
|
|
72
|
+
## 税务优化说明
|
|
73
|
+
|
|
74
|
+
- 亏损抵扣公式: 亏损金额 x 25%(企业所得税率)
|
|
75
|
+
- 小微企业优惠税率下实际可抵扣更多
|
|
76
|
+
- 收购完成后可进入资产打包流程(使用 `opc_asset_package` 工具)
|
|
77
|
+
|
|
78
|
+
## 使用建议
|
|
79
|
+
|
|
80
|
+
1. 收购前先通过 `opc_manage` 查看公司财务状况
|
|
81
|
+
2. 确认亏损金额后发起收购
|
|
82
|
+
3. 收购完成后,将公司加入资产包(`opc_asset_package.add_company_to_package`)
|
|
83
|
+
4. 定期查看 `acquisition_summary` 了解平台整体税务优化效果
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ai-staff
|
|
3
|
+
description: |
|
|
4
|
+
AI 员工配置技能。当用户提到AI员工、AI团队、虚拟员工、配置员工、一人团队、AI助手角色时激活。
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# AI 员工配置技能
|
|
8
|
+
|
|
9
|
+
使用 `opc_staff` 工具为一人公司配置 AI 员工团队,实现"一人 = AI 团队"的核心理念。每个 AI 员工拥有独立的角色定位和专业提示词。
|
|
10
|
+
|
|
11
|
+
## 快速上手
|
|
12
|
+
|
|
13
|
+
### 一键初始化默认团队
|
|
14
|
+
|
|
15
|
+
为公司快速创建 6 个标准 AI 岗位:
|
|
16
|
+
|
|
17
|
+
```json
|
|
18
|
+
{
|
|
19
|
+
"action": "init_default_staff",
|
|
20
|
+
"company_id": "公司ID"
|
|
21
|
+
}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
默认团队包含:
|
|
25
|
+
- **行政助理** — 日程管理、文件归档、会议安排
|
|
26
|
+
- **HR 专员** — 招聘、入职、薪酬核算、社保公积金
|
|
27
|
+
- **财务顾问** — 账务、发票、税务申报、现金流分析
|
|
28
|
+
- **法务顾问** — 合同审查、知识产权、劳动法务
|
|
29
|
+
- **营销专员** — 内容创作、社交媒体运营、品牌推广
|
|
30
|
+
- **运营经理** — 项目管理、供应链协调、数据分析
|
|
31
|
+
|
|
32
|
+
## 自定义员工
|
|
33
|
+
|
|
34
|
+
### 配置/更新 AI 员工
|
|
35
|
+
|
|
36
|
+
```json
|
|
37
|
+
{
|
|
38
|
+
"action": "configure_staff",
|
|
39
|
+
"company_id": "公司ID",
|
|
40
|
+
"role_id": "product_manager",
|
|
41
|
+
"name": "产品经理",
|
|
42
|
+
"system_prompt": "你是公司产品经理,负责需求分析、产品规划、用户体验优化和竞品调研。善于用数据驱动产品决策。",
|
|
43
|
+
"skills": "requirement-analysis,user-research,roadmap"
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### 查看内置角色模板
|
|
48
|
+
|
|
49
|
+
```json
|
|
50
|
+
{
|
|
51
|
+
"action": "list_builtin_roles"
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
可用内置角色: admin(行政), hr(HR), finance(财务), legal(法务), marketing(营销), operations(运营)
|
|
56
|
+
|
|
57
|
+
### 查看已配置的员工
|
|
58
|
+
|
|
59
|
+
```json
|
|
60
|
+
{
|
|
61
|
+
"action": "list_staff",
|
|
62
|
+
"company_id": "公司ID"
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### 启用/禁用员工
|
|
67
|
+
|
|
68
|
+
```json
|
|
69
|
+
{
|
|
70
|
+
"action": "toggle_staff",
|
|
71
|
+
"company_id": "公司ID",
|
|
72
|
+
"role_id": "marketing",
|
|
73
|
+
"enabled": false
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## 工作原理
|
|
78
|
+
|
|
79
|
+
配置 AI 员工后,当用户进入公司 Agent 对话时:
|
|
80
|
+
1. 系统自动注入所有已启用员工的角色信息
|
|
81
|
+
2. AI 可根据问题类型自动"调度"对应岗位的专业知识
|
|
82
|
+
3. 每个员工的 system_prompt 定义了其专业能力边界
|
|
83
|
+
|
|
84
|
+
## 使用建议
|
|
85
|
+
|
|
86
|
+
1. 新公司注册后,先运行 `init_default_staff` 一键配置
|
|
87
|
+
2. 根据公司实际业务,添加自定义岗位(如产品经理、技术总监)
|
|
88
|
+
3. 暂时不需要的岗位可以 `toggle_staff` 禁用,无需删除
|
|
89
|
+
4. 定期更新员工的 system_prompt 以匹配公司最新业务方向
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: asset-package
|
|
3
|
+
description: |
|
|
4
|
+
资产打包与城投转让技能。当用户提到资产包、资产打包、城投、城投转让、科技贷、融资服务费、资金闭环时激活。
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 资产打包与城投转让技能
|
|
8
|
+
|
|
9
|
+
使用 `opc_asset_package` 工具完成资金闭环的后半段:将收购的公司打包为科技资产包,转让给城投公司,申请科技贷款,收取融资服务费。
|
|
10
|
+
|
|
11
|
+
## 资金闭环全流程
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
孵化 OPC → 经营不善 → 收购(opc_acquisition) → 资产打包 → 城投转让 → 科技贷 → 服务费
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## 资产包管理
|
|
18
|
+
|
|
19
|
+
### 创建资产包
|
|
20
|
+
|
|
21
|
+
```json
|
|
22
|
+
{
|
|
23
|
+
"action": "create_asset_package",
|
|
24
|
+
"name": "2025年第一批科技资产包",
|
|
25
|
+
"description": "含3家AI领域一人公司"
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
资产包状态: `assembling`(组装中) → `submitted`(已提交) → `approved`(已审批) → `transferred`(已转让)
|
|
30
|
+
|
|
31
|
+
### 添加公司到资产包
|
|
32
|
+
|
|
33
|
+
将已收购的公司加入资产包:
|
|
34
|
+
|
|
35
|
+
```json
|
|
36
|
+
{
|
|
37
|
+
"action": "add_company_to_package",
|
|
38
|
+
"package_id": "资产包ID",
|
|
39
|
+
"company_id": "已收购的公司ID",
|
|
40
|
+
"valuation": 500000
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
系统自动更新资产包总估值和公司数量。
|
|
45
|
+
|
|
46
|
+
### 查看资产包详情
|
|
47
|
+
|
|
48
|
+
```json
|
|
49
|
+
{
|
|
50
|
+
"action": "get_package_detail",
|
|
51
|
+
"package_id": "资产包ID"
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
返回: 资产包信息 + 包含的公司列表 + 关联的城投转让记录。
|
|
56
|
+
|
|
57
|
+
## 城投转让
|
|
58
|
+
|
|
59
|
+
### 发起城投转让
|
|
60
|
+
|
|
61
|
+
```json
|
|
62
|
+
{
|
|
63
|
+
"action": "create_ct_transfer",
|
|
64
|
+
"package_id": "资产包ID",
|
|
65
|
+
"ct_company_name": "仁和区城市建设投资有限公司",
|
|
66
|
+
"target_loan_amount": 10000000,
|
|
67
|
+
"interest_rate": 3.5,
|
|
68
|
+
"loan_term_months": 36,
|
|
69
|
+
"notes": "科技贷款申请"
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
转让状态: `negotiating`(洽谈中) → `signed`(已签约) → `loan_approved`(贷款已批) → `completed`(已完成)
|
|
74
|
+
|
|
75
|
+
### 更新转让进度
|
|
76
|
+
|
|
77
|
+
```json
|
|
78
|
+
{
|
|
79
|
+
"action": "update_ct_transfer",
|
|
80
|
+
"transfer_id": "转让ID",
|
|
81
|
+
"status": "loan_approved",
|
|
82
|
+
"actual_loan_amount": 8000000
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### 查看转让列表
|
|
87
|
+
|
|
88
|
+
```json
|
|
89
|
+
{
|
|
90
|
+
"action": "list_ct_transfers",
|
|
91
|
+
"status": "completed"
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## 融资服务费
|
|
96
|
+
|
|
97
|
+
### 记录服务费
|
|
98
|
+
|
|
99
|
+
贷款完成后,按比例收取融资服务费:
|
|
100
|
+
|
|
101
|
+
```json
|
|
102
|
+
{
|
|
103
|
+
"action": "record_financing_fee",
|
|
104
|
+
"transfer_id": "转让ID",
|
|
105
|
+
"fee_base": 8000000,
|
|
106
|
+
"fee_rate": 2.5
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
系统自动计算: 8,000,000 x 2.5% = 200,000 元服务费。
|
|
111
|
+
|
|
112
|
+
### 更新服务费状态
|
|
113
|
+
|
|
114
|
+
```json
|
|
115
|
+
{
|
|
116
|
+
"action": "update_financing_fee",
|
|
117
|
+
"fee_id": "服务费ID",
|
|
118
|
+
"invoice_status": "invoiced",
|
|
119
|
+
"payment_status": "paid"
|
|
120
|
+
}
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## 闭环总览
|
|
124
|
+
|
|
125
|
+
查看全平台资金闭环汇总:
|
|
126
|
+
|
|
127
|
+
```json
|
|
128
|
+
{
|
|
129
|
+
"action": "closure_summary"
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
返回: 所有资产包 + 城投转让 + 服务费的完整闭环数据。
|
|
134
|
+
|
|
135
|
+
## 使用建议
|
|
136
|
+
|
|
137
|
+
1. 先通过 `opc_acquisition` 完成收购,确保公司状态为 `acquired`
|
|
138
|
+
2. 创建资产包,将多家已收购公司打包
|
|
139
|
+
3. 资产包提交审批后,申请科技资产认定
|
|
140
|
+
4. 与城投公司洽谈转让,发起科技贷申请
|
|
141
|
+
5. 贷款到账后记录融资服务费
|
|
142
|
+
6. 定期查看 `closure_summary` 掌握整体闭环进度
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: opb-canvas
|
|
3
|
+
description: |
|
|
4
|
+
OPB 商业画布技能。当用户提到商业画布、OPB画布、商业模式、一人企业方法论、战略规划、商业设计时激活。
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# OPB 商业画布技能
|
|
8
|
+
|
|
9
|
+
使用 `opc_opb` 工具基于《一人企业方法论 2.0》创建和维护 16 模块的 OPB Canvas,帮助创始人系统化设计一人公司的战略蓝图。
|
|
10
|
+
|
|
11
|
+
## 画布 16 模块
|
|
12
|
+
|
|
13
|
+
| 模块 | 字段名 | 核心问题 |
|
|
14
|
+
|------|--------|---------|
|
|
15
|
+
| 赛道 | track | 你在哪个行业/细分市场? |
|
|
16
|
+
| 目标客户 | target_customer | 谁是你的理想客户? |
|
|
17
|
+
| 核心痛点 | pain_point | 客户最大的痛点是什么? |
|
|
18
|
+
| 解决方案 | solution | 你如何解决这个痛点? |
|
|
19
|
+
| 独特价值 | unique_value | 你的 USP(独特卖点)是什么? |
|
|
20
|
+
| 获客渠道 | channels | 怎样获得客户? |
|
|
21
|
+
| 收入模式 | revenue_model | 怎样赚钱? |
|
|
22
|
+
| 成本结构 | cost_structure | 主要成本有哪些? |
|
|
23
|
+
| 关键资源 | key_resources | 需要什么核心资源? |
|
|
24
|
+
| 关键活动 | key_activities | 每天做什么关键动作? |
|
|
25
|
+
| 关键伙伴 | key_partners | 需要哪些合作伙伴? |
|
|
26
|
+
| 不公平优势 | unfair_advantage | 别人无法轻易复制的优势? |
|
|
27
|
+
| 关键指标 | metrics | 用什么指标衡量成功? |
|
|
28
|
+
| 非竞争策略 | non_compete | 如何避免正面竞争? |
|
|
29
|
+
| 规模化路径 | scaling_strategy | 如何从一人扩展到更大? |
|
|
30
|
+
| 备注 | notes | 其他补充信息 |
|
|
31
|
+
|
|
32
|
+
## 使用流程
|
|
33
|
+
|
|
34
|
+
### 第一步:初始化画布
|
|
35
|
+
|
|
36
|
+
```json
|
|
37
|
+
{
|
|
38
|
+
"action": "canvas_init",
|
|
39
|
+
"company_id": "公司ID"
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
每家公司只能有一个画布,重复初始化会提示已存在。
|
|
44
|
+
|
|
45
|
+
### 第二步:逐步填写
|
|
46
|
+
|
|
47
|
+
引导用户从赛道开始,逐一思考每个模块:
|
|
48
|
+
|
|
49
|
+
```json
|
|
50
|
+
{
|
|
51
|
+
"action": "canvas_update",
|
|
52
|
+
"company_id": "公司ID",
|
|
53
|
+
"track": "AI 应用开发",
|
|
54
|
+
"target_customer": "中小企业主,需要 AI 自动化但缺乏技术团队",
|
|
55
|
+
"pain_point": "AI 技术门槛高,定制开发费用昂贵",
|
|
56
|
+
"solution": "提供开箱即用的 AI 自动化工具包"
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
可以一次更新多个字段,也可以分多次逐步完善。
|
|
61
|
+
|
|
62
|
+
### 第三步:查看画布和完成度
|
|
63
|
+
|
|
64
|
+
```json
|
|
65
|
+
{
|
|
66
|
+
"action": "canvas_get",
|
|
67
|
+
"company_id": "公司ID"
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
返回所有模块内容及完成百分比(已填写模块数 / 16)。
|
|
72
|
+
|
|
73
|
+
## 引导对话建议
|
|
74
|
+
|
|
75
|
+
作为 AI 助手,可以用以下方式引导用户填写画布:
|
|
76
|
+
|
|
77
|
+
1. **赛道选择**: "你擅长什么?市场有什么机会?两者交集在哪里?"
|
|
78
|
+
2. **客户定义**: "描述你最理想的客户,越具体越好——他们的身份、痛点、预算"
|
|
79
|
+
3. **独特价值**: "如果客户只能记住你一句话,那句话是什么?"
|
|
80
|
+
4. **收入模式**: "一次性收费、订阅制、还是按效果付费?"
|
|
81
|
+
5. **不公平优势**: "你有什么是竞争对手短期内无法获得的?(经验、人脉、技术、数据)"
|
|
82
|
+
|
|
83
|
+
## 使用建议
|
|
84
|
+
|
|
85
|
+
1. 注册公司后尽早初始化画布,帮助理清商业思路
|
|
86
|
+
2. 不必一次填完所有模块,可以分多次迭代
|
|
87
|
+
3. 每月回顾一次画布,根据实际运营调整
|
|
88
|
+
4. 画布完成度低于 50% 时,重点引导用户补充核心模块(赛道、客户、痛点、方案、收入模式)
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
import { Type, type Static } from "@sinclair/typebox";
|
|
9
9
|
import type { OpenClawPluginApi } from "openclaw/plugin-sdk";
|
|
10
10
|
import type { OpcDatabase } from "../db/index.js";
|
|
11
|
+
import { CompanyManager } from "../opc/company-manager.js";
|
|
11
12
|
import { json, toolError } from "../utils/tool-helper.js";
|
|
12
13
|
|
|
13
14
|
const AcquisitionSchema = Type.Union([
|
|
@@ -43,6 +44,8 @@ const AcquisitionSchema = Type.Union([
|
|
|
43
44
|
type AcquisitionParams = Static<typeof AcquisitionSchema>;
|
|
44
45
|
|
|
45
46
|
export function registerAcquisitionTool(api: OpenClawPluginApi, db: OpcDatabase): void {
|
|
47
|
+
const manager = new CompanyManager(db);
|
|
48
|
+
|
|
46
49
|
api.registerTool(
|
|
47
50
|
{
|
|
48
51
|
name: "opc_acquisition",
|
|
@@ -75,11 +78,11 @@ export function registerAcquisitionTool(api: OpenClawPluginApi, db: OpcDatabase)
|
|
|
75
78
|
p.notes ?? "", now, now,
|
|
76
79
|
);
|
|
77
80
|
|
|
78
|
-
//
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
// 通过状态机将公司标记为 acquired
|
|
82
|
+
const transitioned = manager.transitionStatus(p.company_id, "acquired");
|
|
83
|
+
if (!transitioned) {
|
|
84
|
+
return toolError(`公司 ${p.company_id} 不存在或当前状态不允许收购`, "INVALID_STATUS");
|
|
85
|
+
}
|
|
83
86
|
|
|
84
87
|
const row = db.queryOne(
|
|
85
88
|
`SELECT a.*, c.name as company_name FROM opc_acquisition_cases a
|
|
@@ -135,7 +135,7 @@ export function registerMonitoringTool(api: OpenClawPluginApi, db: OpcDatabase):
|
|
|
135
135
|
) as { total_income: number; total_expense: number };
|
|
136
136
|
|
|
137
137
|
const employees = db.queryOne(
|
|
138
|
-
"SELECT COUNT(*) as count FROM
|
|
138
|
+
"SELECT COUNT(*) as count FROM opc_hr_records WHERE company_id = ? AND status = 'active'",
|
|
139
139
|
p.company_id,
|
|
140
140
|
) as { count: number };
|
|
141
141
|
|