授权一次即可跨重启持续推进,只在必要时主动开口
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/5 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add ttmouse/dsh-muse该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · chat
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 29 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件
查看扫描证据(共 53 处,展示前 47 条)
- 读取本地文件artifacts/ideas/build.mjs:7
try { ideas = JSON.parse(readFileSync(src, 'utf8')).ideas ?? [] } catch { ideas = [] } - 写入本地文件artifacts/ideas/build.mjs:18
writeFileSync(new URL('./ideas.html', import.meta.url), html) - 读取本地文件muse/src/intent-store.ts:47
if (!existsSync(file)) return latestAutonomy(events) - 读取本地文件muse/src/intent-store.ts:48
const value = JSON.parse(readFileSync(file, 'utf8')) as Intent - 写入本地文件muse/src/mailbox.ts:10
mkdirSync(dirname(path), { recursive: true, mode: 0o700 }) - 写入本地文件muse/src/mailbox.ts:13
try { writeFileSync(descriptor, JSON.stringify(value, null, 2) + '\n'); fsyncSync(descriptor) } - 写入本地文件muse/src/mailbox.ts:15
renameSync(temporary, path) - 读取本地文件muse/src/mailbox.ts:38
if (existsSync(path)) return { id, queued: false } - 写入本地文件muse/src/mailbox.ts:40
mkdirSync(dirname(path), { recursive: true, mode: 0o700 }) - 删除本地文件muse/src/mailbox.ts:46
finally { unlinkSync(prepared) } - 读取本地文件muse/src/mailbox.ts:53
const value = JSON.parse(readFileSync(path, 'utf8')) as MuseNotice - 读取本地文件muse/src/routines.ts:85
if (!existsSync(path)) return { version: 1, sessionId, options, routines: [] } - 读取本地文件muse/src/routines.ts:86
const file = JSON.parse(readFileSync(path, 'utf8')) as RoutineFile - 读取本地文件muse/src/routines.ts:181
if (!existsSync(this.root)) return - 写入本地文件muse/src/routines.ts:182
appendFileSync(join(this.root, 'activity.log'), `${new Date().toISOString()} ${line}\n`, { mode: 0o600 }) - 读取本地文件muse/src/routines.ts:203
for (const name of existsSync(directory) ? readdirSync(directory).filter(n => n.endsWith('.json')) : []) { - 读取本地文件muse/src/routines.ts:203
for (const name of existsSync(directory) ? readdirSync(directory).filter(n => n.endsWith('.json')) : []) { - 读取本地文件muse/src/routines.ts:205
const seed = JSON.parse(readFileSync(join(directory, name), 'utf8')) as RoutineFile - 写入本地文件muse/src/routines.ts:256
renameSync(path, `${path}.invalid`) - 写入本地文件muse/src/routines.ts:264
renameSync(path, `${path}.expired`) - 读取本地文件tool-memory/src/index.ts:38
const d = JSON.parse(readFileSync(identityFilePath(), 'utf8')) - 读取本地文件tool-memory/src/index.ts:78
if (!existsSync(path)) return '' - 读取本地文件tool-memory/src/index.ts:79
const raw = readFileSync(path, 'utf8') - 读取本地文件tool-memory/src/index.ts:87
if (!existsSync(path)) return 0 - 读取本地文件tool-memory/src/index.ts:89
const lines = readFileSync(path, 'utf8').split('\n') - 写入本地文件tool-memory/src/index.ts:96
mkdirSync(dirname(archivePath), { recursive: true }) - 读取本地文件tool-memory/src/index.ts:97
const prev = existsSync(archivePath) ? readFileSync(archivePath, 'utf8') : '# Archive\n\n' - 写入本地文件tool-memory/src/index.ts:98
writeFileSync(archivePath, prev + moved.join('\n').replace(/ ?$/, '\n') + '\n', { mode: 0o600 }) - 写入本地文件tool-memory/src/index.ts:99
writeFileSync(path, kept.join('\n'), { mode: 0o600 }) - 执行外部命令固定命令tool-memory/src/storage.ts:10
try { return execFileSync('git', ['rev-parse', '--show-toplevel'], { cwd, stdio: ['ignore', 'pipe', 'ignore'] }).toString().trim() } - 写入本地文件tool-memory/src/storage.ts:21
mkdirSync(dirname(path), { recursive: true }) - 读取本地文件tool-memory/src/storage.ts:27
const prior = readFileSync(lock, 'utf8') - 读取本地文件tool-memory/src/storage.ts:33
if (readFileSync(lock, 'utf8') !== prior) throw error - 删除本地文件tool-memory/src/storage.ts:34
unlinkSync(lock) - 写入本地文件tool-memory/src/storage.ts:38
writeFileSync(descriptor, String(process.pid)) - 删除本地文件tool-memory/src/storage.ts:40
finally { closeSync(descriptor); unlinkSync(lock) } - 写入本地文件tool-memory/src/storage.ts:44
mkdirSync(dirname(path), { recursive: true }) - 写入本地文件tool-memory/src/storage.ts:46
writeFileSync(temporary, text, { mode: 0o600, flag: 'wx' }) - 写入本地文件tool-memory/src/storage.ts:47
renameSync(temporary, path) - 写入本地文件tool-memory/src/storage.ts:54
if (!existsSync(path)) writeFileSync(path, MEMORY_HEADER, { mode: 0o600, flag: 'wx' }) - 读取本地文件tool-memory/src/storage.ts:54
if (!existsSync(path)) writeFileSync(path, MEMORY_HEADER, { mode: 0o600, flag: 'wx' }) - 读取本地文件tool-memory/src/storage.ts:55
const text = readFileSync(path, 'utf8') - 读取本地文件tool-memory/src/storage.ts:65
if (!existsSync(path)) return { archived: 0, kept: 0 } - 读取本地文件tool-memory/src/storage.ts:71
for (const line of readFileSync(path, 'utf8').split('\n')) { - 执行外部命令来自配置/变量wechat-deep-triage.mjs:27
JSON.parse(execFileSync(READER, [sub, ...scriptArgs, '--pretty'], { timeout: 60000, encoding: 'utf8' })) - 读取本地文件wechat-deep-triage.mjs:33
keyPeople = JSON.parse(readFileSync(kpPath, 'utf8')).people ?? [] - 写入本地文件wechat-deep-triage.mjs:114
appendFileSync(join(projectDir, 'demo-journal.md'),
扫描于 2026/11/2(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 跨重启持续运行
- 授权一次长期有效
- 静默主动心跳
为 DSH 带来 Muse 式持久化:重启后依然自主运行,外加静默主动心跳
README
由 DeepSeek 最新模型翻译生成dsh-muse(中文说明)
给 DSH 的 agent 加上 Muse 式的持续性:授权一次,跨重启持续推进;外加「只在该说话时才说话」的静默心跳。
这是什么
三个 DSH 插件 + 一组体验配方,复刻 Meta Muse 的产品内核:一个常驻长对话,agent 替你盯事、持续推进、值得说时才开口。
| 组成 | 职责 |
| muse/ — @deepseek-ai/dsh-muse | 把自治授权持久化并绑定原始人类消息;keeper 在会话恢复时重新武装已 disarm 的 active 目标,长期目标因此能跨进程重启延续 |
| tool-muse/ — @deepseek-ai/dsh-tool-muse | muse_autonomy 模型工具:只有人类的直接请求能授予/撤销自治;自动续跑与子代理一律拒绝 |
| tool-memory/ — @deepseek-ai/dsh-tool-memory | memory_save 工具 + 每 turn 记忆注入,存储为人类可编辑的纯文本(~/.dsh/memories/main.md)——「越用越懂你」的那一块 |
| docs/ | 机制分析、主动触发设计、安装踩坑、发布清单 |
安全边界继承自 dsh-goal:activation 永不自动继承。
展开完整文档(README 剩余 1 节)
dsh-muse(中文说明)
给 DSH 的 agent 加上 Muse 式的持续性:授权一次,跨重启持续推进;外加「只在该说话时才说话」的静默心跳。
这是什么
三个 DSH 插件 + 一组体验配方,复刻 Meta Muse 的产品内核:一个常驻长对话,agent 替你盯事、持续推进、值得说时才开口。
| 组成 | 职责 |
| muse/ — @deepseek-ai/dsh-muse | 把自治授权持久化并绑定原始人类消息;keeper 在会话恢复时重新武装已 disarm 的 active 目标,长期目标因此能跨进程重启延续 |
| tool-muse/ — @deepseek-ai/dsh-tool-muse | muse_autonomy 模型工具:只有人类的直接请求能授予/撤销自治;自动续跑与子代理一律拒绝 |
| tool-memory/ — @deepseek-ai/dsh-tool-memory | memory_save 工具 + 每 turn 记忆注入,存储为人类可编辑的纯文本(~/.dsh/memories/main.md)——「越用越懂你」的那一块 |
| docs/ | 机制分析、主动触发设计、安装踩坑、发布清单 |
安全边界继承自 dsh-goal:activation 永不自动继承。手动 disarm 永远优先;paused/blocked 目标不会被擅自恢复。
安装
要求 DSH 运行时的插件树包含 goal 家族(dsh-goal、dsh-goal-round-driver)。
在 profile 目录(如 ~/.dsh/profiles/web)
dsh plugin --profile web add <已发布的包名或 git 地址> # 两个包都装
然后把两个 bundle 加进 profile 的 dsh.profile.bundles(排在 goal 家族之后)。包自带 dsh.bundle.patch 元数据,插件面板会识别为 profile 层插件。若运行时版本与 peer 范围不匹配,按 docs/install-notes.md 在对应 profile 授予兼容性豁免。
体验三步
1. 持续推进:新会话里说「建一个长期目标:<任务>。我要离开了,授予自主推进,不用再问我,做到完为止。」→ 看 create_goal → muse_autonomy{true} → 自主轮次连续推进。
2. 重启不丢:停掉运行时 → 重启 → 回到该会话说「继续」→ keeper 凭持久授权自动恢复,不要求重新授权。
3. 静默心跳:按 docs/heartbeat-recipes.md 配置「检查但未必说」的心跳;或用 examples/gate/ 的对话外闸门做到「没事零痕迹、有事才注入」。
文档
- 持续演进框架 — 长期方向、每轮合同、一手资料、场景验收和证据账本。先运行 pnpm evolution:status 找下一步,pnpm evolution:check 检查闭环。
- docs/goals.md — Muse ↔ DSH 机制对照(含证据)
- docs/experience-guide.md — 三种体感的体验指南
- docs/proactivity-design.md — 主动触发设计(事件驱动 + 唤醒/打扰分离)
- docs/FAQ.md — 常见报错与修复
- docs/capability-checklist.md — 历史能力盘点;当前优先级和证据以演进账本为准
- examples/habits/ — 跨项目习惯挖掘器(主动想法的输入)
- docs/gaps.md — 已实现 vs Muse 尚缺(事件 ingress、记忆 seam、外部通知)
状态
定时推进闭环已通过包测试和 CLI 集成测试,包含真实 AgentLoop + JSONL 冷恢复。当前重点是同一会话内有预算的持续推进、等待/完成状态和静默反思;外部事件和其他会话暂缓。具体行为、验证与限制见 docs/timer-first.md。
许可
MIT
Timer-first progress loop / 定时推进闭环 — same-session routines, waiting/completion state, native cold wake, non-human mailbox delivery and proposal-only reflection.预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
ttmouse/dsh-muse
授权一次即可跨重启持续推进,只在必要时主动开口
相关插件 · 对话 / 记忆
上下文中枢oceanbase/powercontext
上下文跟着工作走 —— 跨会话、跨智能体、跨人。
★ 1,487已汉化DSH
73
智能体记忆库plastic-labs/honcho
Honcho 是记忆基础设施,用来构建有状态的智能体。这些智能体能理解不断变化的人、智能体、群组、项目和想法。
★ 7,894已汉化DSH
71.7
长程智能体控制面loopx-project/loopx
给 Agent 一个目标,让工作持续向前。
★ 6,358已汉化DSH
71.3
智能体上下文数据库volcengine/OpenViking
给 AI 智能体用的上下文数据库
★ 41,379已汉化DSH
71.3
长效机器人团队Fei2411/DS-Bot
DS Bot 是一个基于 DeepSeek Harness简称 dsh的 bot 插件,插件将 dsh 改造为 bot…
★ 5,084已汉化DSH
71.1
可携带记忆层EverMind-AI/EverOS
为什么选择 EverOS
★ 13,778已汉化DSH
71.1
这是你的仓库?认领条目