现代化可灵活嵌入的任务面板,支持 Codex、DeepSeek Harness
71.7/100
综合分
3,409
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/29 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
该插件未发布到 npm,按作者文档从 GitHub 源安装即可(静态检查只覆盖 npm 路径,不代表插件不可用)。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add chuspeeism/dashi-taskboard该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · desktop
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 5 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装仓库 package.json 标记 private,未发布到 npm,需从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包codex-taskboard(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=22.5 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/28 11:38:19
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 108 处,展示前 71 条)
- 发起网络请求cli/taskctl.mjs:360
return api.request("GET", "/api/projects"); - 发起网络请求cli/taskctl.mjs:363
return api.request("POST", "/api/projects", { - 发起网络请求cli/taskctl.mjs:375
return api.request( - 发起网络请求cli/taskctl.mjs:397
return api.request("GET", "/api/local/cloud-session"); - 发起网络请求cli/taskctl.mjs:400
return api.request("DELETE", "/api/local/cloud-session"); - 发起网络请求cli/taskctl.mjs:406
return api.request("GET", taskPath(parsed.operands[0])); - 读取本地文件server/cloud-config.mjs:123
return parseConfig(JSON.parse(await readFile(configPath, "utf8"))); - 写入本地文件server/cloud-config.mjs:131
await mkdir(path.dirname(configPath), { recursive: true }); - 写入本地文件server/cloud-config.mjs:133
await writeFile(temporaryPath, `${JSON.stringify(config, null, 2)}\n`, { mode: 0o600 }); - 写入本地文件server/cloud-config.mjs:134
await rename(temporaryPath, configPath); - 发起网络请求cloud/src/index.mjs:56
async fetch(request) { - 发起网络请求cloud/src/index.mjs:2421
const response = await realtimeHub(env).fetch("https://realtime.internal/broadcast", { - 发起网络请求cloud/src/index.mjs:2483
return realtimeHub(env).fetch("https://realtime.internal/client-storage"); - 发起网络请求cloud/src/index.mjs:2487
const response = await realtimeHub(env).fetch( - 发起网络请求cloud/src/index.mjs:2559
return realtimeHub(env).fetch(new Request("https://realtime.internal/connect", request)); - 发起网络请求cloud/src/index.mjs:2863
async fetch(request, env, ctx) { - 读取本地文件integrations/deepseek-harness/index.js:13
const descriptor = JSON.parse(await readFile(RUNTIME_FILE, "utf8")); - 读取本地文件server/ai-chat-catalog.mjs:61
const source = await readFile(filePath, "utf8"); - 读取本地文件server/ai-chat-catalog.mjs:90
entries = await readdir(currentDirectory, { withFileTypes: true }); - 读取本地文件server/ai-chat-catalog.mjs:115
await stat(path.join(current, ".git")); - 读取本地文件server/ai-chat-catalog.mjs:152
config = parseToml(await readFile(configFile, "utf8")); - 读取本地文件server/ai-chat-catalog.mjs:219
const resolved = await realpath(value.trim()); - 读取本地文件server/ai-chat-catalog.mjs:220
return (await stat(resolved)).isDirectory() ? resolved : null; - 执行外部命令来自配置/变量server/ai-chat-catalog.mjs:386
const child = spawn(command.executable, command.args, { - 发起网络请求server/ai-chat-catalog.mjs:1021
appServer.request("model/list", { cursor: null, limit: 100, includeHidden: false }), - 执行外部命令来自配置/变量server/ai-chat-process.mjs:331
const child = spawn(process.execPath, [TURN_OWNER_PATH, executable, JSON.stringify(args)], { - 删除本地文件递归server/ai-chat.mjs:623
await rm(temporaryDirectory, { recursive: true, force: true }); - 删除本地文件递归server/ai-chat.mjs:1036
await rm(temporaryDirectory, { recursive: true, force: true }); - 删除本地文件递归server/ai-chat.mjs:1128
await rm(active.temporaryDirectory, { recursive: true, force: true }); - 写入本地文件server/ai-chat.mjs:1149
await writeFile(attachmentPath, attachment.data, { flag: "wx", mode: 0o600 }); - 删除本地文件递归server/ai-chat.mjs:1155
await rm(temporaryDirectory, { recursive: true, force: true }); - 删除本地文件递归server/ai-chat.mjs:1225
await rm(active.temporaryDirectory, { recursive: true, force: true }); - 执行外部命令来自配置/变量server/ai-turn-owner.mjs:11
const child = spawn(command.executable, command.args, { - 读取本地文件server/app.mjs:987
if (!(await stat(thread.origin.workspacePath)).isDirectory()) throw new Error("not a directory"); - 读取本地文件server/app.mjs:1169
fileStats = await stat(filename); - 读取本地文件server/app.mjs:1176
fileStats = await stat(filename); - 读取本地文件server/app.mjs:1183
const body = await readFile(filename); - 读取本地文件server/app.mjs:1209
const state = JSON.parse(await readFile(codexStatePath, "utf8")); - 读取本地文件server/app.mjs:1238
const state = JSON.parse(await readFile(codexStatePath, "utf8")); - 写入本地文件server/app.mjs:1408
await mkdir(path.dirname(resolved.clientStoragePath), { recursive: true }); - 写入本地文件server/app.mjs:1410
await writeFile(temporaryPath, `${JSON.stringify(entries)}\n`, { mode: 0o600 }); - 写入本地文件server/app.mjs:1411
await chmod(temporaryPath, 0o600); - 写入本地文件server/app.mjs:1412
await rename(temporaryPath, resolved.clientStoragePath); - 写入本地文件server/app.mjs:1413
await chmod(resolved.clientStoragePath, 0o600); - 写入本地文件server/app.mjs:2373
await mkdir(resolved.attachmentsDirectory, { recursive: true }); - 删除本地文件server/app.mjs:2384
await unlink(storagePath); - 删除本地文件server/app.mjs:2667
await unlink(path.join(resolved.attachmentsDirectory, attachment.id)); - 删除本地文件server/app.mjs:2714
await unlink(storagePath); - 删除本地文件server/app.mjs:2759
await unlink(storagePath); - 删除本地文件server/app.mjs:2825
await unlink(path.join(resolved.attachmentsDirectory, attachment.id)); - 删除本地文件server/app.mjs:2949
await unlink(path.join(resolved.attachmentsDirectory, attachmentId)); - 发起网络请求server/codex-app-server.mjs:39
const result = await this.request("skills/list", { - 发起网络请求server/codex-app-server.mjs:47
return this.request("thread/start", params); - 发起网络请求server/codex-app-server.mjs:51
return this.request("thread/resume", params); - 发起网络请求server/codex-app-server.mjs:55
return this.request("turn/start", params); - 发起网络请求server/codex-app-server.mjs:59
return this.request("turn/interrupt", params); - 发起网络请求server/codex-app-server.mjs:63
return this.request("thread/compact/start", { threadId }); - 执行外部命令来自配置/变量server/codex-app-server.mjs:98
const child = spawn(command.executable, command.args, { - 写入本地文件server/database.mjs:260
mkdirSync(path.dirname(filename), { recursive: true }); - 读取本地文件server/jira-config.mjs:135
return parseConfig(JSON.parse(await readFile(configPath, "utf8"))); - 写入本地文件server/jira-config.mjs:143
await mkdir(path.dirname(configPath), { recursive: true }); - 写入本地文件server/jira-config.mjs:145
await writeFile(temporaryPath, `${JSON.stringify(config, null, 2)}\n`, { mode: 0o600 }); - 写入本地文件server/jira-config.mjs:146
await chmod(temporaryPath, 0o600); - 写入本地文件server/jira-config.mjs:147
await rename(temporaryPath, configPath); - 写入本地文件server/jira-config.mjs:148
await chmod(configPath, 0o600); - 删除本地文件server/jira-config.mjs:168
await unlink(configPath); - 读取本地文件shared/codex-executable.mjs:7
accessSync(candidate, constants.X_OK); - 执行外部命令固定命令shared/process-tree.mjs:5
const result = spawnSync( - 发起网络请求web/src/api.ts:109
response = await fetch(resolveTaskboardUrl(path), { ...init, headers }); - 发起网络请求web/src/storage.ts:15
const response = await fetch(new URL("api/client-storage", document.baseURI)); - 发起网络请求web/src/storage.ts:46
const response = await fetch(new URL("api/client-storage", document.baseURI), {
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
界面预览
1 张 · 点击查看大图功能亮点
- 可嵌入任务面板
- 支持Codex
README
由 DeepSeek 最新模型翻译生成Codex Taskboard
一个本地优先的议题面板,可在浏览器中运行,也可通过独立 CDP 启动器或其注入脚本嵌入 Codex。同一套 HTTP API 为 React UI 和随附 Codex Skill 使用的 taskctl CLI 提供支持。
Codex Taskboard 产品截图
系统要求
- Node.js 22.5 或更高版本
- 构建 macOS App 和 DMG:Xcode Command Line Tools、Rust 1.88 或更高版本,以及 aarch64-apple-darwin 和 x86_64-apple-darwin target。npm install 会安装本项目使用的 Tauri CLI。
- 构建 Windows NSIS:Microsoft Store 版 Codex App、Rust 1.88 或更高版本,以及带 C++ 工作负载和 Windows SDK 的 Visual Studio Build Tools。
本地运行
npm install
npm run build
npm start
打开 <http://127.0.0.1:47823>。SQLite 数据库存储在 .data/taskboard.sqlite。
展开完整文档(README 剩余 1 节)
Codex Taskboard 一个本地优先的议题面板,可在浏览器中运行,也可通过独立 CDP 启动器或其注入脚本嵌入 Codex。同一套 HTTP API 为 React UI 和随附 Codex Skill 使用的 taskctl CLI 提供支持。 Codex Taskboard 产品截图 系统要求 - Node.js 22.5 或更高版本 - 构建 macOS App 和 DMG:Xcode Command Line Tools、Rust 1.88 或更高版本,以及 aarch64-apple-darwin 和 x86_64-apple-darwin target。npm install 会安装本项目使用的 Tauri CLI。 - 构建 Windows NSIS:Microsoft Store 版 Codex App、Rust 1.88 或更高版本,以及带 C++ 工作负载和 Windows SDK 的 Visual Studio Build Tools。 本地运行 npm install npm run build npm start 打开 <http://127.0.0.1:47823>。SQLite 数据库存储在 .data/taskboard.sqlite。 如需在前端实时重载模式下开发: npm run dev Vite UI 运行在 <http://127.0.0.1:5173>,并将 API 请求代理到本地服务。 使用 CLI 在项目中运行: npm run taskctl -- project create \ --id my-project \ --name "My project" \ --workspace-path /absolute/path/to/repository npm run taskctl -- issue create \ --project my-project \ --title "Implement the next slice" \ --status todo \ --priority high \ --labels product,mvp 请运行 npm link,以便在 shell 路径中使用 taskctl。设置 CODEX_TASKBOARD_URL,可让 CLI 指向另一个本地或局域网服务。云端部署通过回环 companion(本机 loopback 配套服务,不是「伴侣」)使用 taskctl cloud login 配置。 安装 Codex Skill 将 skills/manage-taskboard 复制或符号链接到 Codex Skill 目录,然后启动一个新的 Codex 任务: ln -s /absolute/path/to/codex-taskboard/skills/manage-taskboard \ ~/.agents/skills/manage-taskboard 桌面 App 会让该目录与内置 Skill 保持同步。该 Skill 会指导 Codex 检查议题,将其移到 in_progress,使用乐观版本控制,验证工作,然后将其移到 in_review;只有在用户明确确认接受或要求将议题标记为完成后,才会将议题移到 done。 嵌入 Codex 手动:使用专用 CDP 端口 让现有 Codex 窗口保持打开。在 Taskboard 仓库中,使用专用 CDP 端口启动第二个 Codex 实例: open -n -a /Applications/ChatGPT.app --args \ --remote-debugging-port=9231 \ --remote-allow-origins=http://127.0.0.1:9231 新 Codex 窗口出现后,在另一个终端中运行注入器: CODEX_TASKBOARD_HOST=127.0.0.1 \ npm run codex:inject -- --port 9231 --open 使用嵌入式面板时,让注入器终端保持运行。原 Codex 窗口不会变化,新窗口会显示 Taskboard 侧边栏入口。如果端口 9231 已被占用,请在两个命令中使用另一个端口。 推荐:用一个命令启动独立 Taskboard 窗口 让现有 Codex 窗口保持打开,然后运行: CODEX_TASKBOARD_HOST=127.0.0.1 npm run codex 该命令会在需要时启动本地 Taskboard 服务。它会复用已打开且有可用 CDP 渲染器的 Codex;普通 Codex 没有 CDP 时,它会在该实例的原生浏览面板中打开 Taskboard;没有打开 Codex 时,它会使用独立配置文件和仅限回环访问的端口 9231 启动官方 macOS Codex App。有可用 CDP 时,它会在 Plugins 后注入一个原生外观的 Taskboard 入口,并持续监视服务和替换后的渲染器。使用嵌入式面板时,请让该命令保持运行。启动器不会修改 ChatGPT.app 或其 app.asar。 源码启动器会把带身份信息的服务地址写入 .data/launcher-runtime.json。通过 npm link 安装的 taskctl 默认读取此文件。因此,普通 shell 和从面板打开的 Codex 任务无需设置额外环境变量,即可使用同一个 Taskboard 服务。 macOS App:无需终端即可打开和注入 如需进行 Tauri 开发,请运行: npm run app:dev 如需构建本地 App 和 DMG,请先安装两个 Rust target,然后运行构建: rustup target add aarch64-apple-darwin x86_64-apple-darwin npm run app:build 从 Finder 打开 src-tauri/target/universal-apple-darwin/release/bundle/macos/Codex Taskboard.app。DMG 位于 src-tauri/target/universal-apple-darwin/release/bundle/dmg/。如果只需安装稳定版,请从 GitHub Releases 下载当前 DMG。 该 App 包含自己的 Node 运行时、Taskboard 服务、构建后的 Web UI、Skill、CLI 包装器和注入脚本。它会启动服务,复用已打开且有可用 CDP 渲染器的 Codex;普通 Codex 没有 CDP 时,它会在该实例的原生浏览面板中打开 Taskboard;没有打开 Codex 时,它会启动官方 Codex App。有可用 CDP 时,它会等待渲染器并注入侧边栏入口,然后在不显示终端窗口的情况下打开面板。该 App 可以复制到本检出目录之外;目标 Mac 只需安装官方 Codex App,不需要此仓库、系统 Node 安装或单独的 Codex CLI 安装。Taskboard 数据存储在 ~/Library/Application Support/Codex Taskboard,启动器输出写入 ~/Library/Logs/Codex Taskboard/codex-taskboard-launcher.log。 本地构建使用 ad-hoc 代码签名进行直接验证。公开的 macOS 下载仍需要 Developer ID 签名和 Apple 公证。 Linux App:Ubuntu 24.04 x64 软件包 Linux 桌面版第一版仅支持 Ubuntu 24.04 LTS x64。请先安装官方 ChatGPT 桌面版 .deb,并确认运行 chatgpt 可以打开它。然后从 GitHub Releases 下载 Codex Taskboard .deb 或 .AppImage。请将以下命令中的 <file> 替换为下载的文件名。 安装 .deb 软件包: sudo apt install ./<file>.deb 或者运行 AppImage: chmod +x ./<file>.AppImage ./<file>.AppImage 如需在 Ubuntu 24.04 x64 上构建这两种软件包,请运行: npm ci npm run app:build:linux:x64 第一版不支持 ARM64、Fedora、RPM 软件包或其他 Linux 发行版。 Windows App:托盘启动器与内置 Taskboard 先从 Microsoft Store 安装官方 Codex App。在 Windows x64 上运行以下命令构建当前用户级 NSIS 安装包: npm ci npm run app:build:windows 安装包位于 src-tauri/target/x86_64-pc-windows-msvc/release/bundle/nsis/。它包含托盘启动器、内置 Node、本地服务、构建后的 Web UI、Skill、taskctl.cmd 和注入脚本。Taskboard 数据存储在 %APPDATA%\Codex Taskboard,日志存储在 %LOCALAPPDATA%\Codex Taskboard\Logs,Skill 会复制到 %USERPROFILE%\.agents\skills\manage-taskboard。 Windows CI 产物目前有意保持未签名,也不支持自动更新。分发前请阅读代码签名策略。保留数据的行为见 Windows 卸载说明。 Codex 26.715.52143 的渲染器 CSP 会阻止任意 HTTP iframe。因此,启动器会启用 CDP CSP 绕过,重新加载该渲染器一次,安装文档启动脚本,并等待 Taskboard OOPIF 实际加载。同一台机器上的其他进程访问 CDP 时不需要身份验证,因此启动器运行时只能运行受信任的本地代码。 要注入一个已经通过其他方式使用 CDP 启动的 Codex 实例,请运行: npm run codex:inject -- --port 9229 --open 该命令也会保持驻留,因此服务退出后,注入的标签页可以重新启动 Taskboard。使用 Ctrl-C 停止该命令。 Windows 上如果自行启动的 Codex 没有任务面板,通常是该实例没有 CDP 调试端口。仓库在 tools/windows/ 下提供只读面板诊断脚本,以及托管窗口激活与诊断的说明。 该脚本会在 Codex 侧边栏添加 Taskboard 入口,并在 Codex 的整个主工作区渲染 iframe,包括上下文标题栏区域,因此 Taskboard 自己的页眉不会留下空白条。这个完整的矩形页眉位于 Electron 可拖动层之上,并标记为 no-drag;由于 Taskboard 活动时会隐藏原生上下文操作,它自己的操作可以使用正常的边缘内边距,不会产生人为的右侧空隙。原生侧边栏保持挂载,此前页面的选中状态和上下文页眉会暂时隐藏;选择另一个 Codex 页面会恢复它们。 “在对话中打开”会在可用时选择对应的原生 Codex 项目,并打开一个未发送的原生 composer,其中包含 e-taskboard 指令和议题的真实标识符。已安装的 Skill 会根据该指令隐式选中,因此 composer 不会添加 $manage-taskboard 提及。只有在会话实际处理该议题后,才会记录该会话的归属关系:taskctl 读取 Codex 的 CODEX_THREAD_ID,并在议题或评论变更上记录该 ID。记录的 ID 可通过 Codex 的原生路由桥接点击。每个议题可以绑定一个 Git 分支或一个 worktree;选项从所选 Codex 项目的仓库扫描,而不是手动输入。该集成使用 Codex 现有的项目、composer 和路由标记;它不会修改 React、替换 fetch、加载私有 chunk 或编辑 Codex 数据文件。 要使用不同的 UI 来源,请在用户脚本运行前设置 window.__CODEX_TASKBOARD_URL__。 配置 | 变量 | 默认值 | 用途 | | CODEX_TASKBOARD_HOST | 0.0.0.0 | HTTP 绑定地址;使用 127.0.0.1 可禁用局域网访问 | | CODEX_TASKBOARD_PORT | 47823 | 本地 HTTP 端口 | | CODEX_TASKBOARD_DATA_DIR | .data | SQLite 数据目录 | | CODEX_TASKBOARD_URL | http://127.0.0.1:47823 | CLI API 源地址 | npm start 会输出本地 URL 和可用的局域网 URL。同一受信任网络中的协作者可以打开其中一个局域网 URL,并使用同一个 Taskboard 服务。任务、评论和附件变化通过服务器发送事件广播到所有打开的客户端;客户端重连后会执行完整刷新,因此不会遗漏断开连接期间发生的变化。使用 taskctl 的协作者可以通过 CODEX_TASKBOARD_URL=http://<host-ip>:47823 指向共享服务。 局域网模式没有账户身份验证:受信任本地网络中任何能访问该 URL 的人都可以读取和写入 Taskboard。公网和云端部署需要经过身份验证的部署边界。 通过 Cloudflare 共享 对于两名受信任的协作者,Taskboard 可以在 Cloudflare 上运行,使用 Worker Static Assets 和 API 路由,以 D1 作为权威业务数据库,并使用私有 R2 bucket 存储附件。该部署使用带共享密码的 HTTPS Basic 身份验证,并在全局修订号变化后刷新已打开的面板。 每台设备保留自己的项目检出映射,并继续使用本地 companion(本机配套服务 / 环回代理)提供 Codex、Git/worktree、Skill 和 MCP 能力。请勿将 companion 译为「伴侣」,也不要把普通 Taskboard HTTP 接口称为「伴侣 API」。云端模式绝不会回退到本地 SQLite 数据库,也不会同时写入本地数据库。 请参阅云端协作,了解所有者部署、现有 GitHub 安装设置、密码轮换、本地路径映射和一次性本地数据迁移流程。 验证 npm run check 该命令会运行 TypeScript 检查、生产前端构建、组件测试,以及服务器/CLI/注入测试套件。 议题 Markdown 议题描述和评论支持 GFM,包括表格和任务列表。mermaid 围栏代码块会在查看器加载后渲染成只读图;渲染失败时仍可阅读原始图表源码。Markdown HTML 注释(例如 )不会出现在渲染后的正文中,且不会启用原始 HTML。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
chuspeeism/dashi-taskboard
现代化可灵活嵌入的任务面板,支持 Codex、DeepSeek Harness
相关插件 · 桌面端
多智能体自进化开发平台Prism-Shadow/penguin-harness
统一、稳定的 Agent 自进化框架全自动优化:任意模型 · 任意算法 · 任意 Benchmark
★ 3,111已汉化DSH
71.1
桌面宠物PC2005-cloud/dsh-pet
DSH 桌面宠物:一行命令装好即用的透明动画小桌宠,支持多开、大小位置随心配置;还内置 DIY 素材链,能用 AI…
★ 5,341已汉化DSH
71
多端 Agent 工作台GCWing/OpenBitFun
OpenBitFun 是一个高度可定制的开源 Agent 工作台,让任务按你的方式持续推进。
★ 3,449已汉化DSH
70.8
DSH Desktopanywhere-labs/dsh-desktop
为 DeepSeek Harness DSH 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。
★ 34,532已汉化DSH
70.7
桌面宠物伴侣OpenPetsHQ/openpets
桌面伴侣平台,带宠物、插件,还能选配本地智能体集成。
★ 1,353已汉化DSH
70.2
万象桌面客户端Ebony-Vinyl/EAC-Desktop
EAC = Embracing All Creation揽尽万象
★ 2,318已汉化DSH
69.8