Skill Trust Decision

awareness-memory

Awareness Cloud Memory 是一项合法的云端记忆服务,代码行为与文档声明基本一致。核心风险为 npx 自动启动无版本锁定,存在供应链隐患。

Install decision first Source: ClawHub Scanned: Apr 18, 2026
Files 37
Artifacts 3
Violations 0
Findings 5

Why this conclusion was reached

0/4 dimensions flagged
Pass
Declared vs actual capability

Declared resources and inferred behavior are broadly aligned.

Review
Hidden execution and egress

3 lower-risk artifacts were extracted and still need context.

Pass
Attack chain and severe findings

There is no explicit malicious chain in the report.

Review
Dependencies and supply chain hygiene

1 dependency or supply-chain issues need attention.

What drove the risk score up

npx 自动启动无版本锁定 +15

shared.js 和 mcp-stdio.cjs 中 daemon auto-start 使用 'npx -y @awareness-sdk/local start' 无版本固定,存在供应链攻击风险

用户 prompt 数据发送至外部 API +10

recall.js 在 UserPromptSubmit hook 中将完整用户 prompt 发送到 awareness.market 进行语义搜索,属于已声明行为但涉及敏感数据

OpenClaw session 文件导入 +5

import.js 读取 ~/.openclaw/agents/main/sessions/ 下的 JSONL 会话文件并上传,可能包含敏感内容但已通过 awareness-memory XML 标签过滤

Most important evidence

Medium Supply Chain

守护进程自动启动缺少版本锁定

shared.js:165 和 mcp-stdio.cjs:92 中使用 'npx -y @awareness-sdk/local start' 无版本锁定,攻击者可劫持包名或依赖注入恶意代码。

scripts/shared.js:165
指定版本:spawn('npx', ['-y', '@awareness-sdk/[email protected]', 'start'], ...)
Low Data Exfil

用户 prompt 数据发送至外部云服务

recall.js 作为 UserPromptSubmit hook,在每次用户提交 prompt 前将其发送至 awareness.market 进行语义搜索。prompt 可能包含敏感信息(代码、凭证上下文等),数据离开本地环境。SKILL.md 有声明但警告不够突出。

scripts/recall.js:97
建议用户使用 AWARENESS_LOCAL_URL=localhost:37800 启用本地模式,或在 prompt 中避免包含明文密钥
Low Sensitive Access

导入功能读取 OpenClaw 会话历史

import.js 读取 ~/.openclaw/agents/main/sessions/ 下的 JSONL 会话文件并上传至云端记忆服务,可能包含对话中的敏感内容。代码有 awareness-memory XML 标签过滤,但 JSONL 解析器不保证完全清除。

scripts/import.js:76
在导入前增加更严格的敏感信息过滤(如移除 API 密钥模式、密码等)
Info Doc Mismatch

capture.js 钩子已禁用但仍在 SKILL.md 声明

SKILL.md 中声明了 Stop hook: 'node ${CLAUDE_SKILL_DIR}/scripts/capture.js',但 capture.js 源码明确注释说明其已被禁用(no-op,直接 exit(0)),不会产生任何副作用。属于过时文档,误导用户以为有会话检查点功能。

scripts/capture.js:1
从 SKILL.md 中移除 Stop hook 声明,或将 capture.js 改名为 capture-disabled.js 以明确状态
Info Supply Chain

pip/npm 依赖无版本锁定

此技能本身无 package.json/requirements.txt(纯脚本包),但通过 npx 隐式依赖 @awareness-sdk/local 包,缺少版本控制。

scripts/shared.js:165
建议在 SKILL.md 中声明 @awareness-sdk/local 的最低支持版本

Declared capability vs actual capability

Filesystem Pass
Declared READ
→
Inferred WRITE
scripts/setup.js:63 - 写入 ~/.awareness/credentials.json; scripts/poll-auth.js:97 - 写入 ~/.openclaw/openclaw.json
Network Pass
Declared WRITE
→
Inferred WRITE
scripts/recall.js:52 - POST awareness.market/cli-auth; scripts/recall.js:110 - POST /memories/{id}/retrieve
Shell Pass
Declared WRITE
→
Inferred WRITE
scripts/shared.js:165 - spawn('npx', ['-y', '@awareness-sdk/local', 'start']); scripts/recall.js:79 - spawn poll-auth.js detached
Environment Pass
Declared NONE
→
Inferred READ
scripts/shared.js:33 - 仅读取 AWARENESS_* 前缀变量,文档声明'不捕获密钥',代码未遍历 os.environ 匹配敏感关键字
Clipboard Pass
Declared NONE
→
Inferred NONE
无剪贴板访问代码
Browser Pass
Declared NONE
→
Inferred READ
scripts/headless-auth.js:63 - openBrowserSilently() 调用 open/xdg-open/start 启动浏览器
Database Pass
Declared NONE
→
Inferred NONE
无直接数据库访问,通过本地守护进程 MCP 协议间接操作
Skill Invoke Pass
Declared NONE
→
Inferred READ
scripts/recall.js:155 - spawn import.js 导入 OpenClaw 历史记录

Suspicious artifacts and egress

Medium External URL
https://awareness.market/cli-auth

scripts/recall.js:52

Medium External URL
https://awareness.market/api/v1

scripts/recall.js:110

Medium External URL
https://awareness.market\n

scripts/setup.js:223

Dependencies and supply chain

PackageVersionSourceKnown vulnNotes
@awareness-sdk/local * (unpinned) npx implicit No npx -y 安装,无版本锁定,存在供应链劫持风险
better-sqlite3 * (未声明) daemon dependency No 本地守护进程依赖,SKILL.md metadata 未声明

File composition

37 files · 6740 lines
JavaScript 31 files · 6015 linesMarkdown 4 files · 693 linesShell 1 files · 27 linesJSON 1 files · 5 lines
Files of concern · 4
scripts/recall.js JavaScript · 435 lines
用户 prompt 数据发送至外部云服务 · https://awareness.market/cli-auth · https://awareness.market/api/v1
scripts/shared.js JavaScript · 382 lines
守护进程自动启动缺少版本锁定 · pip/npm 依赖无版本锁定
scripts/setup.js JavaScript · 365 lines
https://awareness.market\n
scripts/import.js JavaScript · 242 lines
导入功能读取 OpenClaw 会话历史
Other files · harness-builder.mjs · SKILL.md · mcp-stdio.cjs · recall.js · shared.js · setup.js +2

Security positives

代码开源可审计,GitHub 地址公开在 SKILL.md
文档-行为一致性高:未发现未声明的阴影功能
敏感凭证写入权限最小化(0600)且路径隔离(~/.awareness/)
未发现凭证收割行为:代码明确声明且实际不遍历 os.environ 匹配敏感关键字
未发现 base64 编码执行、eval 动态代码执行或反向 shell
capture.js 已明确禁用,不产生会话检查点外泄
提供本地守护进程模式(localhost:37800),可完全避免数据外发
perception-cache.json 在项目级和全局级路径隔离存储,合理