安装
在 DeepSeek Harness 里通过 dsh-market 安装
dsh plugin --profile web add dshmarket
或使用命令行
dsh plugin --profile web add github:liangl1985/work-personal-secretary#path:/modules/work-personal-secretary
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络。请先审阅源码,并尽量锁定 commit(github:owner/repo#sha)。
README
定位:工作秘书集成体的本体插件。一个集成体、一个设置入口;五个子插件各自独立。 本体的第一大功能是安装器(环境检查 → 依赖补齐 → 子插件安装 → 配置底座), 第二大功能是把 DSH 底层配置(指令层 / 记忆种子 / 技能 / 设置)在安装时分步落地。
这个模块做什么
| 能力 | 状态 |
|---|---|
| 设置左侧独立分区「工作秘书」 | ✅ 本版提供 |
| 安装与检查(环境检查 / 依赖补齐 / 子插件安装 / 配置底座) | ✅ 本版提供 |
| 核心配置(首次配置引导:目录与岗位 → 保存即执行一次生成) | ✅ 本版提供 |
| 配置(把五个子插件的设置集中到本分区读写;原「能力配置」) | ✅ 本版提供 |
| 随包说明网页(安装引导页 / 使用说明页,设置页内可展开) | ✅ 本版提供 |
| 关于与致谢(集成体版本 · 五个子插件 · 第三方来源 · 免责边界) | ✅ 本版提供 |
为什么是独立分区,而不是宿主「插件配置」页
DSH 的设置 → 插件 → 插件配置页只列宿主平面插件(终端 / Agent 循环 / Subagent / 网页搜索)。
用户插件要出现在其中,需自行贡献 settings.plugin.item。本集成体选择注册独立的
settings.section 分区:既不会与宿主插件混淆,也比在插件列表里翻找直观。
安装
dsh plugin --profile <profile> add <本模块目录>
宿主侧改动需重启 DSH 才加载;仅客户端改动刷新页面即可(客户端 bundle 按 revision 缓存,
故每次改动都会升 package.json 的版本号,界面里的 BUILD 常量与它同步维护)。
目录结构
work-personal-secretary/
├── package.json # dsh.bundle.patch 指向 cordis.patch.yml;dsh.client.inject 声明客户端包
├── cordis.patch.yml # 中性部署默认层(不含个人路径/称呼)
├── lib/index.js # 宿主半入口:子插件清单 + 版本读取 + 路由接线(零运行时依赖)
├── lib/probe.js # 七项只读环境探针
├── lib/install.js # 子插件安装引擎(原子替换 + 逐文件 SHA256 校验)
├── lib/basedeck.js # 配置底座引擎:指令层 / 记忆种子 / 技能 / 设置 / 目录 + 两个结构生成器
├── lib/preflight.js # 可用性检查(环境就绪 / 目录合法可写 / 同工作区 / 目标无冲突)
├── lib/identity.js # 「使用者身份」条目写入(区间替换 + 目录锁 + 备份 + 逐字节校验 + 回滚)
├── lib/domain.js # 五个预置岗位正文 + 生成通道(promptEnhancer → llm 降级)
├── lib/md.js # Markdown → HTML(随包说明网页渲染;转义 + 链接白名单)
├── lib/settings.js # 本体设置命名空间
├── lib/settings-api.js # 配置页宿主侧:设置只读枚举 / 白名单写入 / 专家打分预览
├── client/index.js # 客户端半:手写 loader bundle,注册 settings.section 分区
├── defaults/ # 随包单一真相源:install.zh-CN.md(安装引导)· use.zh-CN.md(使用说明)
├── scripts/ # 七套自测脚本(不依赖宿主运行时)
├── CHANGELOG.md
├── NOTICE # 集成体包含的子插件与第三方致谢
├── LICENSE
└── README.md
不引入构建步骤:客户端半是手写的 window.__ModuleLoader__.load({ id, factory }) bundle,
只依赖宿主注入的 react;与集成体现有模块(dsh-work-memory)写法一致。
配置项
cordis.patch.yml 是中性部署默认层,提供以下可选项;个性化可在该 profile 的 cordis.patch.yml
或设置页用户层按 id 覆盖:
| 配置项 | 默认 | 说明 |
|---|---|---|
selfCheckOnStartup |
false |
启动时做一次只读环境探测并在日志里给出结论 |
repoRoot |
'' |
集成体仓库目录(子插件安装的来源)。留空 = 自动探测集成体仓库目录;也可在此显式指定 |
workspace |
'' |
配置底座的目标工作区(AGENTS.md 指令层与 .dsh/skills 的落点)。留空 = 由记忆镜像目录反推;反推结果可能是知识库 vault(会把 AGENTS.md 与技能写进真相源)→ 建议显式指定 |
obsidianDir |
'' |
知识库根目录(Obsidian vault 根)。留空 = knowledgeDeck 显式 none(不猜路径);填了之后镜像建议值改为 <知识库根>/00_全局记忆 |
默认约定
首装即生效的语言与协作两条,唯一载体是记忆种子 defaults/global-memory.seed.md(随包,首装时写入使用者记忆库的全局记忆),可由使用者改写:
- 语言:回答与推理使用简体中文;代码、命令、路径、包名、API/字段名、日志与报错原文等保留英文原样,不刻意翻译。
- 协作:主对话负责拆解、派单、核对与对外沟通,具体工作交专家子代理执行;涉密或敏感内容由主上下文直接处理。
为什么不再写进指令模板(2026-09-30 使用者定):同一套措辞此前同时出现在「指令模板 + 记忆种子」两处,属重复维护;现由记忆层单一承担(每轮注入)。若希望它具备指令层的更强约束(DSH 每轮作为指令注入、优先级高于技能文档),请在使用者自己的工作区 AGENTS.md 块外自行声明——块外内容安装器一律不动。
设计约定
- 中性:发布件不含任何个人身份、称呼、私有路径或记忆数据;
- 零运行时依赖:宿主 peer 缺失时不影响加载;
- 不写死版本:宿主半从自身
package.json读取版本;子插件版本由后续的安装器探测(不在界面里写死); - 设置分层:
cordis.patch.yml是部署默认层,个性化只走设置页用户层; - 安装安全:子插件以原子替换就位(临时目录 → 逐文件 SHA256 校验 → 替换,旧目录保留到最后);
装前备份 profile 的
package.json(写后校验 JSON 与 BOM),备份只保留最近 10 份,失败自动回滚。
分期路线
| 期 | 内容 |
|---|---|
| P0 | 本体骨架 + 设置独立分区 + 关于与致谢(本版) |
| P1 | 环境自检 + 依赖补齐 |
| P2 | 子插件从仓库内置副本安装(离线可用,装后逐文件 SHA256 校验) |
| P3 | 配置底座:AGENTS.md 标记块合并 · 记忆种子 · 技能 · 设置用户层 · 目录 |
| P4 | 能力配置:把子插件设置集中到本分区读写(子插件命名空间保持独立) |
| P5 | 收尾:第三方 vendor 落库、根级 NOTICE、统一 v1.0.0、发布清单与 CI |
| P6 | 设置界面改版:四页签 / 核心配置执行链 / 配置页按 12.1 收窄 / 两个结构生成器 / 随包说明网页(1.1.3) |
许可
MIT。集成体包含的五个子插件与第三方来源见 NOTICE 及各子模块的 NOTICE。
评论
评论存放在 GitHub Discussions。用 GitHub 账号登录后可发表评论或点表情。