Doramagic 项目包 · 项目说明书
telecom-mas-agent 项目
一款由对话式 AI 驱动的电信多智能体系统,用于管理通话余额、推送通知、营销、目标用户定位与销售。
Overview and Getting Started
telecom-mas-agent 是一个零外部依赖的 Node.js 电信业务模拟库,以 TelecomMASAgent 类为核心,对外暴露用户通话余额管理、呼叫扣费、短信发送与推送通知四类异步操作接口。资料来源:[index.js:1-11]() 资料来源:[README.md:9-19]()。
继续阅读本节完整说明和来源证据。
项目概述与适用场景
telecom-mas-agent 是一个零外部依赖的 Node.js 电信业务模拟库,以 TelecomMASAgent 类为核心,对外暴露用户通话余额管理、呼叫扣费、短信发送与推送通知四类异步操作接口。资料来源:index.js:1-11 资料来源:README.md:9-19。
从实现上看,整个库仅使用内置的 Map 与数组作为内存存储,并通过 setTimeout 模拟网络延迟,因此其定位更接近教学/演示型的多代理系统骨架,而非可直接对接运营商计费或短信网关的生产组件。资料来源:index.js:4-6 资料来源:index.js:120-123。开发者可以将其作为多代理协同、Promise 流程编排等概念的练习载体,也可以在此骨架上扩展自有业务逻辑。资料来源:README.md:55-63。
需要特别注意的是,README.md 中提到的"AI 推理""AES-256 加密""SOX/GDPR/HIPAA 合规"等内容在当前 index.js 的源码中并未真正实现,调用方不应将其作为生产级安全或智能能力来依赖。资料来源:index.js:1-124。
核心数据模型
TelecomMASAgent 在构造时初始化了三块内部状态,所有公共方法都围绕它们进行读写:
| 字段 | 类型 | 作用 |
|---|---|---|
userBalances | Map<string, number> | 记录每个用户的通话分钟余额 |
sentMessages | Array<Object> | 累积所有已发送短信的日志 |
pushNotifications | Array<Object> | 累积所有已发送推送通知 |
资料来源:index.js:4-6。
每个写操作(initializeUser、makeCall、sendSMS、sendPushNotification)都会在执行前先调用私有方法 _simulateDelay(ms) 暂停一段随机毫秒数,再写入上述状态,从而模拟真实 API 的 I/O 等待。资料来源:index.js:120-123 资料来源:index.js:14-18 资料来源:index.js:48-54 资料来源:index.js:66-72。
快速开始
安装方式与典型 npm 包一致:
npm install telecom-mas-agent
资料来源:README.md:97-103。
随后在 Node 环境中引入并实例化即可使用,完整示例如下:
const TelecomMASAgent = require('telecom-mas-agent');
const agent = new TelecomMASAgent('My First Agent');
async function demo() {
// 初始化用户并预存 200 分钟
await agent.initializeUser('alice', 200);
// 查询余额
console.log(await agent.checkCallBalance('alice'));
// 模拟一次 30 分钟的通话,自动扣费
console.log(await agent.makeCall('alice', 30));
// 发送短信与推送通知
console.log(await agent.sendSMS('+8613800000000', 'Hello from MAS agent'));
console.log(await agent.sendPushNotification('alice', '账单已生成'));
// 查看历史记录
console.log(agent.getSentMessages());
console.log(agent.getPushNotifications('alice'));
// 代理自述
console.log(agent.introduce());
}
demo().catch(console.error);
资料来源:index.js:12-19 资料来源:index.js:22-28 资料来源:index.js:40-48 资料来源:index.js:57-65 资料来源:index.js:76-82 资料来源:index.js:85-89 资料来源:index.js:113-118。
API 方法一览
| 方法 | 签名 | 行为摘要 | 异常 |
|---|---|---|---|
initializeUser | (userId, initialBalance=100) | 将用户写入 userBalances,初始余额默认 100 分钟 | — |
checkCallBalance | (userId) | 返回余额描述字符串 | 用户不存在时抛错 |
makeCall | (userId, minutes) | 扣减余额并返回新余额 | 用户不存在或余额不足时抛错 |
sendSMS | (toNumber, message) | 追加一条带时间戳的日志到 sentMessages | — |
getSentMessages | () | 返回 sentMessages 全部内容 | — |
sendPushNotification | (userId, notification) | 追加一条带时间戳的日志到 pushNotifications | — |
getPushNotifications | (userId) | 过滤返回指定用户的推送记录 | — |
introduce | () | 返回代理自述字符串 | — |
资料来源:index.js:12-19 资料来源:index.js:22-28 资料来源:index.js:40-48 资料来源:index.js:57-65 资料来源:index.js:76-82 资料来源:index.js:85-89 资料来源:index.js:113-118。
常见使用注意事项
- 调用顺序:用户必须先调用
initializeUser才能被checkCallBalance、makeCall、getPushNotifications等方法识别,否则会抛出User ${userId} not found.异常。资料来源:index.js:24-26 资料来源:index.js:42-44。 - 余额不足保护:
makeCall在扣减前会先比较当前余额与通话分钟数,余额不足时直接抛错,避免出现负值。资料来源:index.js:44-47。 - 历史引用语义:
getSentMessages与getPushNotifications直接返回内部数组引用,调用方应避免原地修改;如需隔离副本可使用扩展运算符[...]或slice()。资料来源:index.js:85-89。 - 依赖与许可:项目无任何
dependencies字段,发布与再分发需遵循根目录MIT许可证。资料来源:README.md:142-144 资料来源:index.js:124。
See Also
- API Reference(API 详细参考) —— 后续可针对每个方法补充参数、返回值与错误码的完整说明。
资料来源:index.js:4-6。
API Reference
TelecomMASAgent 是一个零外部依赖、基于 Promise 的 Node.js 电信多智能体系统(Multi-Agent System)模拟器。它通过内存中的数据结构(Map 和 Array)来管理用户通话余额、SMS 发送记录与推送通知历史,并使用 simulateDelay 私有方法模拟异步网络延迟 资料来源:index.js:5-10。该 API 设计目标...
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
概述
TelecomMASAgent 是一个零外部依赖、基于 Promise 的 Node.js 电信多智能体系统(Multi-Agent System)模拟器。它通过内存中的数据结构(Map 和 Array)来管理用户通话余额、SMS 发送记录与推送通知历史,并使用 _simulateDelay 私有方法模拟异步网络延迟 资料来源:index.js:5-10。该 API 设计目标是为电信运营商与业务客户提供企业级集成接口,覆盖用户生命周期管理、通话扣费、消息分发与通知推送等核心场景 资料来源:README.md。
所有公开方法均遵循异步优先(async-first)原则:写操作返回 Promise<string>,读操作(如 getSentMessages、getPushNotifications)为同步方法,可直接获取状态快照 资料来源:index.js:48-76。
构造函数
`new TelecomMASAgent(agentName?)`
创建一个新的电信智能体实例。构造函数会初始化三个内部状态容器:
| 内部状态 | 数据结构 | 用途 |
|---|---|---|
userBalances | Map<string, number> | 存储用户 ID 与通话分钟数 |
sentMessages | Array<Object> | SMS 发送日志 |
pushNotifications | Array<Object> | 推送通知历史 |
参数 agentName 可选,默认值为 "Telecom MAS Agent",在 introduce() 方法中用于自报家门 资料来源:index.js:5-10。
用户与通话管理 API
用户管理 API 由两个核心方法构成,均为异步方法并通过 _simulateDelay 模拟 I/O 延迟。
`initializeUser(userId, initialBalance?)`
初始化用户通话余额。initialBalance 默认值为 100(分钟),调用成功后将用户写入 userBalances Map 资料来源:index.js:12-16。
`checkCallBalance(userId)`
查询用户剩余分钟数。若用户未通过 initializeUser 初始化,将抛出 Error("User {userId} not found.") 资料来源:index.js:21-27。
`makeCall(userId, minutes)`
模拟发起一次通话并扣减余额。该方法是整个 API 中业务规则最复杂的一处:
flowchart TD
A[makeCall userId, minutes] --> B{用户存在?}
B -- 否 --> X[抛出 Error: User not found]
B -- 是 --> C{余额 >= minutes?}
C -- 否 --> Y[抛出 Error: Insufficient balance]
C -- 是 --> D[userBalances.set userId, current - minutes]
D --> E[返回新余额确认信息]失败模式:
User {userId} not found.— 未调用initializeUser即尝试扣费Insufficient balance for user {userId}.— 余额小于本次通话分钟数
资料来源:index.js:32-43。
消息与通知 API
SMS 操作
sendSMS(toNumber, message) 接受任意格式的电话号码与消息内容,将日志条目 { to, message, timestamp } 推入 sentMessages 数组,时间戳使用 new Date().toISOString() 生成 资料来源:index.js:48-53。历史消息可通过同步方法 getSentMessages() 一次性拉取 资料来源:index.js:58-60。
推送通知操作
sendPushNotification(userId, notification) 会将 { userId, notification, timestamp } 三元组追加到 pushNotifications 数组 资料来源:index.js:65-69。getPushNotifications(userId) 通过 Array.filter 过滤出目标用户的所有通知,注意其返回的是引用副本(按需注意浅拷贝语义) 资料来源:index.js:74-76。
工具方法与安全语义
`introduce()`
同步方法,返回模板字符串 `Hello! I am ${this.agentName}, your telecom multi-agent system. How can I assist you today?`,常用于健康检查或 CLI 启动横幅 资料来源:index.js:81-83。
`introduce()` 与 `_simulateDelay` 的协作
所有写方法都先 await this._simulateDelay(N) 再修改状态,模拟值分别为:initializeUser 500ms、checkCallBalance 300ms、makeCall 400ms、sendSMS 200ms、sendPushNotification 300ms 资料来源:index.js:88-90。这种"先延迟后写入"的模式与 README 中宣称的"Promise-based async operations with security validation"保持一致 资料来源:README.md#security。
典型调用顺序
const TelecomMASAgent = require('telecom-mas-agent');
const agent = new TelecomMASAgent('Enterprise AI Agent');
(async () => {
await agent.initializeUser('enterprise_001', 500); // 初始化
console.log(await agent.checkCallBalance('enterprise_001'));
console.log(await agent.makeCall('enterprise_001', 30)); // 扣费
await agent.sendSMS('+1-800-BUSINESS', 'Hello from MAS');
await agent.sendPushNotification('enterprise_001', 'AI Insight ready');
console.log(agent.introduce());
})();
资料来源:README.md#ai-powered-quick-start。
常见失败模式速查
| 错误信息 | 触发条件 | 处理建议 |
|---|---|---|
User {id} not found. | 未初始化即查询或扣费 | 先调用 initializeUser |
Insufficient balance for user {id}. | 通话分钟数超过余额 | 在调用前调用 checkCallBalance 预检 |
资料来源:index.js:21-43。
See Also
- README.md — 项目总览、安装与企业集成说明
- package.json — 依赖与脚本配置(推测,仓库根目录标准文件)
- __tests__/index.test.js — 单元测试用例(仓库声明的测试入口)
资料来源:index.js:32-43。
Architecture and Data Management
telecom-mas-agent 是一个零外部依赖、面向企业级电信场景的多智能体系统(Multi-Agent System)实现。从架构视角观察,该项目采用"单类封装 + 内存状态"的设计模式:所有业务能力(用户余额、呼叫扣费、短信发送、推送通知)都被收敛到 TelecomMASAgent 这一个类中,并通过基于 Promise 的异步方法对外暴露。资料来源:[index...
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
架构与数据管理
概述
telecom-mas-agent 是一个零外部依赖、面向企业级电信场景的多智能体系统(Multi-Agent System)实现。从架构视角观察,该项目采用"单类封装 + 内存状态"的设计模式:所有业务能力(用户余额、呼叫扣费、短信发送、推送通知)都被收敛到 TelecomMASAgent 这一个类中,并通过基于 Promise 的异步方法对外暴露。资料来源:index.js:1-10
整个系统的运行不依赖任何持久化层(如数据库、消息队列或外部 API 客户端),所有数据均保存在进程内的 Map 与 Array 实例中。资料来源:index.js:3-7 这一定位使得该仓库更适合作为"电信业务编排的概念验证 / 教学样例"或被进一步封装为可插拔后端模块的基线实现,而非直接面向生产的全栈服务。
核心架构
智能体类与状态容器
系统入口为 TelecomMASAgent 构造函数,接收一个可选的 agentName 参数(默认 "Telecom MAS Agent"),并在实例上挂载三个核心状态容器:资料来源:index.js:2-7
| 容器名称 | 数据结构 | 用途 | 生命周期 |
|---|---|---|---|
userBalances | Map<string, number> | 存储用户 ID 与剩余通话分钟数 | 进程内,构造时创建 |
sentMessages | Array<Object> | 保存短信发送记录(含 to / message / timestamp) | 进程内,随调用追加 |
pushNotifications | Array<Object> | 保存推送通知记录(含 userId / notification / timestamp) | 进程内,随调用追加 |
上表综合自 index.js:4-6 中的字段定义与各方法中push调用的写入逻辑,例如 index.js:70-73(sendSMS写入sentMessages)以及 index.js:84-87(sendPushNotification写入pushNotifications)。
异步调用链
所有"业务动作"类方法都通过 async 关键字声明,并使用私有工具 _simulateDelay(ms) 模拟 I/O 等待,从而以 Promise 链表达真实的网络/计费系统时序。资料来源:index.js:105-110 主要模拟延迟分布如下:
initializeUser—— 500 ms 资料来源:index.js:12-16checkCallBalance—— 300 ms 资料来源:index.js:23-28makeCall—— 400 ms 资料来源:index.js:41-50sendSMS—— 200 ms 资料来源:index.js:58-62sendPushNotification—— 300 ms 资料来源:index.js:75-79
这种"统一时延 + 返回字符串"的策略,让上层调用方可以在 README 提供的示例代码中以 await 形式串联多个动作,例如先 initializeUser、再 checkCallBalance、再 makeCall。资料来源:README.md:108-119
数据流图
flowchart LR
Client[调用方 / 业务脚本] -->|new| Agent[TelecomMASAgent]
Agent -->|set| UB[userBalances: Map]
Agent -->|push| SM[sentMessages: Array]
Agent -->|push| PN[pushNotifications: Array]
Agent -->|Promise| Sim[_simulateDelay]
Sim -->|resolve| Agent
Agent -->|string / Array| Client数据管理策略
写时校验
系统在写入数据之前会进行基础校验。checkCallBalance 会对不存在的用户抛出 Error,而 makeCall 则额外检查余额是否充足,两条失败分支都通过同步 throw 抛出,并由调用方的 try/catch 或 .catch 捕获。资料来源:index.js:24-26、资料来源:index.js:43-47 这种"在内存状态层就完成合法性校验"的方式,使得异常可以被立即反馈到企业级错误日志中,正如 README 中"Secure Error Handling"示例所展示。资料来源:README.md:236-242
时间戳与审计轨迹
每次 sendSMS 与 sendPushNotification 都会通过 new Date().toISOString() 生成标准化 UTC 时间戳,作为记录的一部分持久保存在内存数组中。资料来源:index.js:60-72、资料来源:index.js:77-87 这相当于在最小实现层面提供了"审计轨迹",与 README 中强调的"Audit Logging"安全要求保持一致。资料来源:README.md:67-69
零依赖的数据边界
由于 package.json 未引入任何第三方包(README 明确声明 "Zero Dependencies"),所有数据容器都是 Node.js 内置的 Map 与 Array。资料来源:README.md:62-66 这带来的直接后果是:进程一旦重启,全部用户余额、短信与推送历史都会丢失。因此该架构定位于"演示与编排骨架",实际生产化时需要在 index.js 的 Map/Array 写入点替换为持久化适配器(如数据库驱动或消息中间件客户端)。资料来源:index.js:4-6
常见失效模式
- 用户未初始化即查询余额:
checkCallBalance与makeCall都会因userBalances.has(userId) === false而抛出User not found,调用方必须先await agent.initializeUser(...)。资料来源:index.js:24-26
- 余额不足导致呼叫失败:
makeCall在currentBalance < minutes时抛出Insufficient balance,可被用于触发充值/告警流程。资料来源:index.js:44-46
- 历史数据无限增长:
sentMessages与pushNotifications持续追加而未做容量控制,长时间运行会产生内存增长风险,需在上层做滚动清理或迁移到外部存储。资料来源:index.js:60-72、资料来源:index.js:77-87
See Also
来源:https://github.com/darshanbmehta/telecom-mas-agent / 项目说明书
Advanced Usage, Enterprise Patterns, and Failure Modes
本页面向已经熟悉 TelecomMASAgent 基础用法的开发者,深入讨论其高级调用模式、模拟企业级集成时需要注意的边界,以及在生产化过程中容易踩到的失败陷阱。需要特别说明的是:index.js 是一个纯内存、无外部依赖的模拟器,README 中所宣传的"AI 推理"、"军事级加密"、"零信任架构"等功能并未在源码中实际实现(index.js:1-9)。本文档以源码事实为准。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
高级使用、企业模式与失败模式
本页面向已经熟悉 TelecomMASAgent 基础用法的开发者,深入讨论其高级调用模式、模拟企业级集成时需要注意的边界,以及在生产化过程中容易踩到的失败陷阱。需要特别说明的是:index.js 是一个纯内存、无外部依赖的模拟器,README 中所宣传的"AI 推理"、"军事级加密"、"零信任架构"等功能并未在源码中实际实现(index.js:1-9)。本文档以源码事实为准。
高级使用模式
链式工作流与异常隔离
所有公开方法(initializeUser、checkCallBalance、makeCall、sendSMS、sendPushNotification)均返回 Promise,且会通过 await this._simulateDelay(...) 模拟 I/O 延迟(index.js:11-19、index.js:74-76)。开发者应使用 try/catch 显式捕获 makeCall 与 checkCallBalance 抛出的 Error:
try {
const balance = await agent.checkCallBalance('user_001');
const result = await agent.makeCall('user_001', 30);
console.log(result);
} catch (err) {
// err.message 可能为:
// "User user_001 not found."
// "Insufficient balance for user user_001."
}
由于每次操作都会硬编码 200~500ms 的真实睡眠(index.js:11、index.js:21、index.js:33、index.js:44、index.js:53、index.js:61),串行链式调用会产生可观的端到端时延。
组合消息流水
典型的高级用法是把"扣费 + 短信通知 + 推送"封装为一条原子化流水线。下图展示了 makeCall 的成功与失败分支:
sequenceDiagram
participant C as Caller
participant A as Agent
participant M as userBalances(Map)
C->>A: makeCall(uid, 30)
A->>A: _simulateDelay(400)
A->>M: has(uid)?
alt 用户不存在
M-->>A: false
A-->>C: throw "User uid not found."
else 余额不足
M-->>A: current < 30
A-->>C: throw "Insufficient balance..."
else 扣费成功
M-->>A: current - 30
A->>M: set(uid, current-30)
A-->>C: "Call made for 30 minutes. New balance: ..."
endsendSMS 与 sendPushNotification 不会校验用户是否存在,仅做日志追加(index.js:48-55、index.js:59-63),因此调用方必须先确保 userId 已经被 initializeUser 注册,否则会形成"幽灵通知"。
企业级集成模式
多租户命名空间
内部状态由三个字段承载:userBalances(Map)、sentMessages(数组)、pushNotifications(数组)(index.js:3-7)。getPushNotifications 仅按 userId 做精确等值过滤(index.js:65-69),不会自动隔离不同租户。推荐做法是:
- 在
userId中编码租户前缀(例如tenantA:user_001); - 或为每个租户创建独立的
TelecomMASAgent实例(每个实例自带独立Map与数组); getSentMessages返回整个实例的全部发送历史(index.js:57),需要调用方自行按业务维度二次过滤。
审计与可观测性
introduce() 返回基于 agentName 的静态字符串(index.js:72-75),可作为服务注册中心的健康探针。sentMessages 与 pushNotifications 数组中的每条记录都带有 ISO 时间戳(index.js:51、index.js:60),适合做轻量级本地审计,但要持久化到外部系统仍需在调用方增加 sink。
常见失败模式
1. 状态不持久化
userBalances、sentMessages、pushNotifications 全部位于 Node.js 进程内存中。index.js 中没有任何文件 I/O、数据库连接或网络请求(index.js:1-83)。进程一旦重启,余额、消息、通知全部丢失;水平扩容也会导致不同实例的状态不一致。
2. README 营销与实现脱节
README 列出"End-to-End Encryption (AES-256)"、"Zero-Trust Architecture"、"Conversational AI"等声明(README.md),但 index.js 中没有任何加密、签名、令牌校验、AI 推理或外部 API 调用代码。把这些声明当作既有功能会引发严重的安全误判。安全能力必须由调用方在外层补齐(TLS、JWT、输入清洗、限流等)。
3. 模拟延迟成为瓶颈
_simulateDelay 是真实阻塞(setTimeout + await)(index.js:74-76)。在批量导入(如 10 万条 initializeUser)场景下,总耗时约为 50 秒(100000 × 500ms),严重影响 CI 与压测。缓解办法:在测试环境中通过 Jest jest.useFakeTimers() 替换 setTimeout,或在调用前 monkey-patch _simulateDelay 为 Promise.resolve()。
4. 幽灵通知与负余额风险
sendSMS 与 sendPushNotification 不校验用户是否存在(index.js:48-55),而 makeCall 只校验"用户存在 + 余额充足"(index.js:37-45)。makeCall 没有互斥锁:并发扣费场景下,最后写入者会覆盖中间结果,可能产生超额扣费(balance 短暂为负)或丢失更新。如果用作多并发后端,必须在外部引入分布式锁或事务机制。
5. 输入无校验
initializeUser 接受任意 userId(字符串)与 initialBalance(数字)并存入 Map(index.js:11-19),未对 initialBalance 做非负校验。若传入 -100,余额会被设为负数,后续 makeCall 的"< 当前余额"判断逻辑会立即抛错,但 checkCallBalance 仍会原样回显该负值。
性能与扩展注意事项
| 维度 | 当前实现 | 生产化建议 |
|---|---|---|
| 存储 | 进程内 Map + 数组 | 替换为 Redis / PostgreSQL |
| 鉴权 | 无 | 调用方增加 JWT / mTLS |
| 加密 | 无 | 依赖传输层 TLS;不要把 README 声明当作代码事实 |
| 并发安全 | 无锁,覆盖式写入 | 引入乐观锁或 Map.set 的原子语义包装 |
| 时延 | 硬编码 200~500ms | 测试用 fake timers;生产替换为真实 API 客户端 |
总结:TelecomMASAgent 的设计定位是轻量级单进程模拟器(零外部依赖,仅 npm install 即可使用,参见 README.md 安装说明)。把它当作"代理"、"桩"或"教学示例"是合适的;当作"可投产的电信计费系统"则需要在外部架构上补齐持久化、鉴权、加密与并发控制。
参见
来源:https://github.com/darshanbmehta/telecom-mas-agent / 项目说明书
失败模式与踩坑日记
保留 Doramagic 在发现、验证和编译中沉淀的项目专属风险,不把社区讨论只当作装饰信息。
假设不成立时,用户拿不到承诺的能力。
新项目、停更项目和活跃项目会被混在一起,推荐信任度下降。
风险会影响是否适合普通用户安装。
用户无法判断遇到问题后是否有人维护。
Pitfall Log / 踩坑日志
项目:darshanbmehta/telecom-mas-agent
摘要:发现 6 个潜在踩坑项,其中 0 个为 high/blocking;最高优先级:能力坑 - 能力判断依赖假设。
1. 能力坑 · 能力判断依赖假设
- 严重度:medium
- 证据强度:source_linked
- 发现:README/documentation is current enough for a first validation pass.
- 对用户的影响:假设不成立时,用户拿不到承诺的能力。
- 证据:capability.assumptions | https://www.npmjs.com/package/telecom-mas-agent | README/documentation is current enough for a first validation pass.
2. 维护坑 · 维护活跃度未知
- 严重度:medium
- 证据强度:source_linked
- 发现:未记录 last_activity_observed。
- 对用户的影响:新项目、停更项目和活跃项目会被混在一起,推荐信任度下降。
- 证据:evidence.maintainer_signals | https://www.npmjs.com/package/telecom-mas-agent | last_activity_observed missing
- 严重度:medium
- 证据强度:source_linked
- 发现:no_demo
- 证据:downstream_validation.risk_items | https://www.npmjs.com/package/telecom-mas-agent | no_demo; severity=medium
4. 安全/权限坑 · 存在评分风险
- 严重度:medium
- 证据强度:source_linked
- 发现:no_demo
- 对用户的影响:风险会影响是否适合普通用户安装。
- 证据:risks.scoring_risks | https://www.npmjs.com/package/telecom-mas-agent | no_demo; severity=medium
5. 维护坑 · issue/PR 响应质量未知
- 严重度:low
- 证据强度:source_linked
- 发现:issue_or_pr_quality=unknown。
- 对用户的影响:用户无法判断遇到问题后是否有人维护。
- 证据:evidence.maintainer_signals | https://www.npmjs.com/package/telecom-mas-agent | issue_or_pr_quality=unknown
6. 维护坑 · 发布节奏不明确
- 严重度:low
- 证据强度:source_linked
- 发现:release_recency=unknown。
- 对用户的影响:安装命令和文档可能落后于代码,用户踩坑概率升高。
- 证据:evidence.maintainer_signals | https://www.npmjs.com/package/telecom-mas-agent | release_recency=unknown
来源:Doramagic 发现、验证与编译记录