跳到正文

DeepSeekBot — 产品需求文档(PRD)

首个应用:sidebar 名册、委派与 IM 接入

内容
版本 v1.0(PoC)
日期 2026-09-17
状态 Draft
形态 BotHarness 的首个应用:DSH 插件 bundle
平台规格 docs/botharness.md(PersonaBot / 记忆 / 状态 / 工作方式)
上游依赖 DSH(开发者预览,必须 pin);dsh-im(通道基座);blobatar(MVP 形象)
v1.0 变更 重组:平台层(PersonaBot、记忆、状态、工作方式)移入 docs/botharness.md,本 PRD 只描述 DeepSeekBot 应用;路线从 IM-first 调整为 sidebar-first(IM 作为第一个真实渠道,见 M5);仓库更名 BotHarness/BotHarness

0. 历史变更(v0.2–v0.9)

  • v0.9:独立 DSH 插件(不 fork dsh-im);记忆引入 front-matter、PERSONA.md 人属、visibility、附件引用即提升、git 每 turn 一 commit;M1 只验 Lark 国际版。
  • v0.8:GitHub 远端 + GitHub Issues;建立 CONTEXT.md 与 ADR。
  • v0.7:回复位置默认 thread 优先;上游共建延后。
  • v0.6:不引入 front-matter(v0.9 反转);目录树注入上限 1000 路径;工具链初始化。
  • v0.5:工具写、目录树注入、git 版本化方向、入站文件必须可用。
  • v0.4:文件优先记忆;SQLite 降级;凭据进 DSH credentials;「Bot 即人」。
  • v0.3:不用 celld;记忆自研;单 Host 形态。
  • v0.2:长连接出站;插件内配置 UI 为 P0。

1. 是什么

DeepSeekBot 把 BotHarness 的 PersonaBot 带进 DSH 界面:在 sidebar 里创建、观察、@委派,让它们持续工作;并通过适配器接入 IM(飞书 / Lark),把“群里的同事”落到真实场景。

  • 平台能力(实体、记忆、状态、工作方式)见 docs/botharness.md,本 PRD 不重复。
  • 非目标:平台内核、Live2D(独立 effort)、多 IM 渠道(先飞书)、多工作站。

2. 用户故事与验收

US-1 Roster 与创建(P0)

作为用户,我在 DSH 里看到所有 PersonaBot——形象(blobatar)、状态、工作树;能创建/删除/编辑。

  • AC-1.1 main 面板显示名册:头像 + 聚合状态(六态)。
  • AC-1.2 多层可折叠树:PersonaBot > Workspace > Session,显示每个 Session 的进度。
  • AC-1.3 新建向导:名字、persona(写入 PERSONA.md)、模型/preset、首个 workspace、头像种子。
  • AC-1.4 详情页:人格、记忆入口、workspaces、最近汇报。

US-2 委派与持续工作(P0)

作为用户,我 @ 一个 PersonaBot 交付工作,它在后台做完并汇报;可以同时交给它几件事。

  • AC-2.1 composer @PersonaBot 可唤起(/bot 命令兜底)。
  • AC-2.2 委派 = 在目标 Session 起一轮;工位空闲唤醒,忙则开子会话。
  • AC-2.3 状态实时反映到 roster(thinking/working/waiting/blocked/done)。
  • AC-2.4 完成后汇报(会话内 + 名册「最近汇报」)。
  • AC-2.5 并发多 Session 各自进度独立。

US-3 记忆(P0;平台实现,应用负责可见)

作为用户,我能打开、搜索、编辑、回滚每个 PersonaBot 的记忆。

  • AC-3.1 记忆编辑器入口:浏览 / 搜索 / 编辑 / 新建 / 删除 / 导出。
  • AC-3.2 显示来源、可见性与更新时间;git 历史可查。
  • AC-3.3 人类编辑冲突:拒绝保存并展示差异(平台规则 M5)。

US-4 IM 接入(P1,首个渠道)

作为团队,我们把 PersonaBot 接进飞书/Lark,它在群里干活、记住客户。

  • AC-4.1 绑定 dsh-im 的 Bot/凭据(domain=lark 优先验证)。
  • AC-4.2 群/话题路由复用基座;DM 一等;记忆与 sidebar 同一份。
  • AC-4.3 入站文件「引用即提升」为稳定路径。
  • AC-4.4 客户跟进北极星:群里聊客户 → 档案持续更新 → 换群/换 thread 引用同一档案。

US-5 审批与安全(P0)

  • AC-5.1 外部副作用 → waiting,确认后执行。
  • AC-5.2 密钥只在 DSH credentials;仓库与配置零明文。
  • AC-5.3 记忆中疑似密钥告警并脱敏。

3. 功能需求(应用层)

编号 需求 优先级 说明
FR-1 bundle 组装 P0 core + client + 适配器;一条命令安装
FR-2 Roster / 详情 / 新建 P0 DSH client 包(React + blobatar)
FR-3 @委派与命令 P0 composer @ + /bot
FR-4 记忆编辑器入口 P0 复用平台记忆工具与 git
FR-5 审批队列 P0 waiting 展示与确认;approval 需 open turn
FR-6 IM 适配器 P1 dsh-im 绑定、入站文件、Lark 验证
FR-7 诊断 P1 连接状态、记忆目录检查、权限清单

4. 非功能需求

类别 要求
安全 最小权限(附录 A);审批分级;沙箱隔离执行;凭据仅在 credentials 服务;DM 内容按可见性披露
密钥 仓库与配置零明文;日志/卡片脱敏;UI 不回显密文
版本 pin DSH、dsh-im、飞书 SDK、Node;升级过诊断
可观测 结构化日志;DSH session log;记忆写入有来源与时间戳;git 历史可查
性能 @ 到「已受理」< 2s(复用基座反馈,无则 Reaction);首字(不含模型)< 5s;目录树注入 < 2k tokens
兼容 Node 22+;Linux 优先;客户端为 web
可靠性 长连接自动重连;事件去重(message_id);记忆原子写(M2)
易用性 安装 → UI 向导 → 可用;界面中文优先

5. 里程碑

平台里程碑见 docs/botharness.md §7;应用主导的交付:

# 应用侧交付
M3 Roster 与委派(client 包;应用主战场)
M4 文件研究助手演示闭环
M5 IM 适配器(dsh-im 绑定、Lark 验证、客户跟进)

6. 风险

  • 平台风险见 docs/botharness.md §8。
  • 应用侧补充:客户端 bundle 依赖必须内联(shell 只共享 react/react-dom);composer @ 源目前是全局的(跨会话可见,PoC 可接受);Lark 国际版长连接若不稳,webhook 例外条款保留(原 AC-5.6)。

附录 A:飞书权限清单(最小集)

类型 用途
权限 im:message.p2p_msg:readonly 接收私聊消息
权限 im:message.group_at_msg:readonly 接收群里 @Bot 的消息
权限 im:message:send_as_bot 以 Bot 身份发消息
权限 im:resource 上传/读取图片与文件
权限 im:message:readonly 下载消息中的附件(可选)
事件 im.message.receive_v1 接收消息
回调 card.action.trigger 卡片交互(审批 / 按钮)
可选 im:message.group_at_msg.include_bot:readonly 接收其他机器人 @ 当前机器人

附录 B:命令与界面速览(规划)

# 安装(规划)
dsh plugin --profile <profile> add -w deepseekbot

# 配置(规划;主要走 UI,CLI 为无头环境兜底)
dsh --profile <profile>            # 启动;浏览器打开 dsh web 进入「设置 → BotHarness」

附录 C:参考资料

附录 D:暂缓项记录

原因 触发条件
Live2D 渲染 独立插件,消费原始模型/工具/响应信号 后续单独 grill/wayfinder
Docker sbx 沙箱起步 DSH 内建 sandbox 已覆盖文件隔离 需要网络白名单 / microVM 时
DM 独立记忆分区 单脑 + visibility 已给隐私边界 合规要求更严时
多根 workspace 单目录 1:1(ADR-0018) 编码场景真实需要时
跨 PersonaBot 通信 seam 已留(registry + 事件) 单 Bot 闭环成立后
无人值守调度 委派制先行 Bot 需要自己发起工作时

附录 E:工程基础设施(v0.6 初始化,v1.0 增补)

选择 来源
包管理 pnpm 12.4.2(packageManager 锁定) 复用 GEO-SNS
Node engines: >=22.node-version = v24.21.0 复用 GEO-SNS
语言 TypeScript 7(strict + noUncheckedIndexedAccess + exactOptionalPropertyTypes + verbatimModuleSyntax 复用 GEO-SNS
Lint / 格式 oxlint + oxfmt(printWidth 100、单引号、trailingComma all) 复用 GEO-SNS
测试 / 构建 vitest · tsdown 新增
客户端(v1.0 增补) @botharness/client 使用 React(DSH 客户端契约)+ blobatar;依赖必须内联进 bundle DSH client-modules
不使用 Vite / Cloudflare 工具链 无独立前端站点

常用命令:pnpm lint · pnpm format · pnpm format:check · pnpm typecheck · pnpm test · pnpm build

附录 F:Agent 技能包(v0.7 安装)

  • 来源:mattpocock/skills(37 个技能,MIT)——安装于 .agents/skills/.claude/skills/ 为符号链接;skills-lock.json 锁定来源与哈希。
  • 更新:npx skills@latest update勿手动格式化这些第三方文件(oxfmt/oxlint 已忽略 .agents.claudeagent)。
  • 技能初始化(对应 setup-matt-pocock-skills):
    • Issue tracker:GitHub IssuesBotHarness/BotHarnessgh CLI;PR 不作 triage 入口)——见 docs/agents/issue-tracker.md
    • Triage 标签:默认五角色(needs-triage / needs-info / ready-for-agent / ready-for-human / wontfix)——见 docs/agents/triage-labels.md
    • 领域文档:单 context;根 CONTEXT.md + docs/adr/(18 篇)——见 docs/agents/domain.md
    • AGENTS.md 已加入 ## Agent skills 区块
  • 常用技能:/grill-with-docs(对齐 + 领域建模)、/to-spec/to-tickets/tdd/diagnosing-bugs/code-review/research/handoff/wizard
导航

输入以搜索…

↑↓ 导航↵ 选择Esc 关闭