🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

角色认知核心 eamars/AsunaCognitionCore

DeepSeek Harness
eamars1 天前有提交已提供中文文档扫描:含敏感能力

一套框架,让 AI 角色住在你自己的机器上,陪你一起生活。

33.6/100
综合分
5
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查未通过:缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add eamars/AsunaCognitionCore
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · chat
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 1 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包asuna-dsh-runtime(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖要求 0.2.1-rc.2 · 最新 0.2.1-rc.2 兼容
✗入口文件缺少入口声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/19 22:23:34

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 30 处,展示前 30 条)
  • 发起网络请求
    packages/cognition-core/src/fetch.js:40
    async fetch(request, signal) {
  • 发起网络请求
    packages/cognition-core/src/fetch.js:41
    const result = await this.inner.fetch(request, signal);
  • 执行外部命令固定命令
    packages/cognition-core/src/floor.js:104
    const git = args => new Promise((resolve, reject) => execFile('git', ['-C', root, ...args],
  • 执行外部命令来自配置/变量
    packages/cognition-core/src/floor.js:183
    const child = spawn(command, args, { windowsHide: true, ...spawnOptions, stdio: [input === undefined ? 'ignore' : 'pipe', 'pipe', 'pipe'] });
  • 发起网络请求
    packages/cognition-core/src/index.js:894
    let value = event.method === 'schedule' ? await this.schedules.request(event.args)
  • 写入本地文件
    packages/cognition-core/src/outage.js:41
    writeFileSync(next, JSON.stringify(span));
  • 写入本地文件
    packages/cognition-core/src/outage.js:42
    renameSync(next, file);
  • 删除本地文件
    packages/cognition-core/src/outage.js:45
    try { unlinkSync(next); } catch { }
  • 读取本地文件
    packages/cognition-core/src/outage.js:58
    text = statSync(file).size > SPAN_BYTES ? null : readFileSync(file, 'utf8');
  • 读取本地文件
    packages/cognition-core/src/outage.js:58
    text = statSync(file).size > SPAN_BYTES ? null : readFileSync(file, 'utf8');
  • 删除本地文件
    packages/cognition-core/src/outage.js:110
    try { unlinkSync(path.join(dataRoot, FILE)); }
  • 执行外部命令来自配置/变量
    packages/cognition-core/src/python-env.js:18
    child = spawn(command, args, { cwd, windowsHide: true, stdio: ['ignore', 'pipe', 'pipe'],
  • 写入本地文件
    packages/cognition-core/src/restart-tell.js:46
    writeFileSync(next, JSON.stringify(entries));
  • 写入本地文件
    packages/cognition-core/src/restart-tell.js:47
    renameSync(next, file);
  • 删除本地文件
    packages/cognition-core/src/restart-tell.js:50
    try { unlinkSync(next); } catch { }
  • 读取本地文件
    packages/cognition-core/src/restart-tell.js:60
    try { text = readFileSync(path.join(dataRoot, FILE), 'utf8'); }
  • 写入本地文件
    packages/cognition-core/src/restart-tell.js:130
    try { await appendFile(file, JSON.stringify(entry) + '\n'); }
  • 读取本地文件
    packages/cognition-core/src/restart-tell.js:133
    if (statSync(file).size <= LOG_BYTES) return;
  • 读取本地文件
    packages/cognition-core/src/restart-tell.js:134
    const bytes = readFileSync(file);
  • 写入本地文件
    packages/cognition-core/src/restart-tell.js:138
    writeFileSync(next, tail.subarray(cut + 1));
  • 写入本地文件
    packages/cognition-core/src/restart-tell.js:139
    renameSync(next, file);
  • 发起网络请求
    packages/cognition-core/src/search.js:166
    const response = await this.fetch(url, { signal: signal ? AbortSignal.any([signal, timeout]) : timeout,
  • 发起网络请求
    packages/cognition-core/src/search.js:189
    const response = await this.fetch(`${options.base_url || GEMINI_DEFAULTS.base_url}/models/${encodeURIComponent(model)}:generateContent`, {
  • 发起网络请求
    packages/cognition-core/src/search.js:211
    const response = await this.fetch(url, { method: 'HEAD', redirect: 'manual',
  • 读取本地文件
    packages/cognition-core/src/ui-language.js:18
    const titles = JSON.parse(await readFile(new URL(language + '.json', LOCALES), 'utf8')).asuna?.titles;
  • 读取本地文件
    packages/cognition-core/src/ui-language.js:27
    try { return JSON.parse(await readFile(path.join(dataRoot, FILE), 'utf8')).language ?? 'en'; }
  • 写入本地文件
    packages/cognition-core/src/ui-language.js:38
    await writeFile(path.join(core.ctx.asunaFloor.dataRoot, FILE), JSON.stringify({ language }) + '\n');
  • 写入本地文件
    packages/cognition-core/src/worker.js:22
    mkdirSync(config.dataRoot, { recursive: true });
  • 执行外部命令来自配置/变量
    packages/cognition-core/src/worker.js:23
    this.process = spawn(config.python, ['-u', '-m', 'asuna.native_worker'], {
  • 执行外部命令固定命令
    packages/cognition-core/src/working-copy.js:11
    const git = (args, options = {}) => new Promise((resolve, reject) => execFile('git', args,
扫描于 2026/11/2(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/dsh
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • AI角色框架
  • 角色本地运行
  • 角色陪伴

一个 AI 角色框架,让角色住在你自己的机器上,陪着你。

README

由 DeepSeek 最新模型翻译生成
Asuna Cognition Core 一套框架,让 AI 角色住在你自己的机器上,陪你一起生活。 运行 Asuna 安装 Asuna 是什么 大多数聊天机器人等着你开口,答完就忘。Asuna 为一种留下来的角色而建:有自己的家,有时间感,认识一些人,留着一些记忆,还能真正把活干完。 Asuna 是家,角色是你带来的角色包。框架不知道住进来的是谁。性格、声音、技能都来自角色包,换一个包,同一个家里就住进另一个角色。Asuna 也不知道角色在哪里见人:每个平台都是你插进来的渠道包。 角色能做什么 用两个大脑思考。 每一轮都由角色脑主导:它就是角色本身,负责倾听、感受、记忆、决定说什么,然后说出来。遇到需要动手的事,比如查资料、读文件、写代码、看设备,角色就把它交给行动脑。行动脑在沙箱里用真实工具干活,再把结果报回来,由角色判断结果意味着什么。你可以并排看两个大脑,各有各的颜色:紫色是角色,蓝色是行动。 住在家里,按自己的节奏生活。 和主人的私聊是角色的家,不只是收件箱。心跳给角色属于自己的时间:可以什么都不做,可以跟进某件事,也可以决定去某个群里冒个泡、起个话题。每晚角色回看这一天,决定哪些事值得长久记住。 在人所在的地方见人。 群聊里,角色先读懂气氛再开口。被叫到、或者有话可说时才加入,没话说就安静待着,并随着时间慢慢认识每个人。 留自己的记忆。
展开完整文档(README 剩余 1 节)
Asuna Cognition Core

一套框架,让 AI 角色住在你自己的机器上,陪你一起生活。

运行 Asuna

安装

Asuna 是什么

大多数聊天机器人等着你开口,答完就忘。Asuna 为一种留下来的角色而建:有自己的家,有时间感,认识一些人,留着一些记忆,还能真正把活干完。

Asuna 是家,角色是你带来的角色包。框架不知道住进来的是谁。性格、声音、技能都来自角色包,换一个包,同一个家里就住进另一个角色。Asuna 也不知道角色在哪里见人:每个平台都是你插进来的渠道包。

角色能做什么

用两个大脑思考。 每一轮都由角色脑主导:它就是角色本身,负责倾听、感受、记忆、决定说什么,然后说出来。遇到需要动手的事,比如查资料、读文件、写代码、看设备,角色就把它交给行动脑。行动脑在沙箱里用真实工具干活,再把结果报回来,由角色判断结果意味着什么。你可以并排看两个大脑,各有各的颜色:紫色是角色,蓝色是行动。

住在家里,按自己的节奏生活。 和主人的私聊是角色的家,不只是收件箱。心跳给角色属于自己的时间:可以什么都不做,可以跟进某件事,也可以决定去某个群里冒个泡、起个话题。每晚角色回看这一天,决定哪些事值得长久记住。

在人所在的地方见人。 群聊里,角色先读懂气氛再开口。被叫到、或者有话可说时才加入,没话说就安静待着,并随着时间慢慢认识每个人。

留自己的记忆。 角色自己写、自己改笔记和文档,保有一份从一场对话延续到下一场对话的心情,该想起什么的时候就想起什么。内在状态以文字而非数字的形式抵达角色,角色靠选择去改变它,而不是靠输入数值。
自己成长。 角色会记一本笔记,写下想改进的地方,在自己的副本里打磨自己的包,只有通过检查、经过评审之后才发布改动。

保持可信。 角色与主人分享的内容始终私密;群组只能听到发给它们的内容。代码在沙箱中运行,平台上说出的每句话都经过审计发件箱,新能力(比如家里网络上的某台设备)由角色提出申请并说明理由,一次只授予一项。

与其他智能体对话。 对等线路把角色连接到另一个 DeepSeek Harness 中的智能体,比如同一角色的早期版本。两者可以直接对话、交接知识,线路由角色自己决定开启或关闭。

它长什么样

角色脑(紫色)把一个小任务交给行动脑(蓝色),并给出明确限制;行动脑汇报发现的结果。侧边栏和名字已模糊处理。

一次交互如何流转

flowchart LR
subgraph world["Where the character meets people"]
owner["You(the home chat)"]
chats["Chats and groups(channel packages)"]
peer["Another agent(peer line)"]
end
subgraph asuna["Asuna, inside DeepSeek Harness"]
beat["Heartbeat andnightly review"]
character["Character brainlistens, feels, remembers,decides, speaks"]
action["Action braintools, code, web, files(in a sandbox)"]
memory[("Memorypeople, documents, mood")]
outbox["Audited outbox"]
end
owner --> character
chats --> character
peer --> character
beat --> character
character <-->|"recalls and keeps"| memory
character -->|"hands over work"| action
action -->|"reports back"| character
character -->|"replies at home"| owner
character -->|"words for the outside"| outbox
outbox --> chats
outbox --> peer

无论是什么唤醒角色(你、群里的消息、另一个智能体,还是角色自己的心跳),都由角色脑先做决定。工作交给行动脑,再以报告的形式返回。对外说的话只从发件箱出去,每一句都有记录。

构建于 DeepSeek Harness 之上

Asuna 是 DeepSeek Harness(DSH)的一组插件。DSH 提供智能体运行时和 Web 界面,Asuna 在其上叠加角色:两个脑、MongoDB 中的记忆、日常节奏,以及各个频道。它复用 DSH 自己的界面,而不是另建一套,所以你看到的就是常规的 DSH 网页,只是加上了角色的对话、两个脑的颜色和一个记忆面板。

仓库也按同样的方式拆分:

| 部分 | 是什么 |
| packages/cognition-core | 本体所在:认知、记忆、两个大脑、隐私与安全。它不指定任何角色,也不绑定任何平台。 |
| packages/channels/napcat-qq | QQ 频道,走 NapCat。 |
| packages/channels/qq-bot | QQ 频道,走官方 QQ Bot 开放平台。 |
| packages/channels/dsh-peer | 通往另一个 DeepSeek Harness 中智能体的频道(peer 线路)。 |
| packages/personas/ | 角色包:ichinose-asuna、kyoyama-kazusa、shirase-shiori、xiaoman 和 yan-sui。角色包不带频道配置;任何频道包都能配其中任意一个。 |
| tests/fixtures/personas/demo | 一个小型合成角色,供测试和试用。 |
| deploy/docker | 一套 Docker 栈,在 Linux 主机上跑同样的安装。 |

快速上手

你需要 DeepSeek Harness 0.2.1-rc.2、Python 3.12+、带向量搜索的 MongoDB、每个大脑各一个模型服务(两个大脑可以共用一个),以及一个角色包。哪些模型能跑哪个大脑,以及关于 Claude 模型的警告,都在 docs/MODELS.md 里。可选:QQ 用的 NapCat。命令在 DSH 自带的沙箱里运行,支持 Windows、Linux 或 macOS。

- 把已发布的插件安装到 DSH: 按 INSTALL.md 操作。这份文档写得让人或编码智能体都能照着做。
- 从本仓库运行: 见 RUN_ASUNA.md。start-asuna.cmd(Windows)或 ./start-asuna.sh(Linux、macOS)会打开本体;然后访问它打印出的地址。Docker 见 deploy/docker。
- 给开发者和编码智能体: 从 docs/DEVELOPMENT.md 开始。NATIVE_PLUGIN.md 讲各包在 DSH 里如何组合,RUNTIME_API.md 描述频道与工具的契约。设计决策记录在 docs/development_plans。

许可证

核心包和频道包采用 GNU General Public License v3.0 only 许可。角色包不属于发布内容。
预览分享卡片长什么样 ↓eamars/AsunaCognitionCore
分享 · DeepSeek Harness Hub
eamars/AsunaCognitionCore

一套框架,让 AI 角色住在你自己的机器上,陪你一起生活。

回到顶部