文渊阁 · DSH AI Team
把工作交给一支有负责人、有独立验收、有完整账本的 AI 团队。
01 / PROJECT OVERVIEW
项目研究解读
文渊阁是 DeepSeek Harness 的按需启用插件,将持久 Agent 成员、任务负责人、独立验收和 append-only 事件账本组合成三栏工作台。执行者不能验收自己完成的任务,Human 负责方向与关键决策,而不是逐条调度。模型目录直接复用 DSH 配置,降低了多智能体部署成本。
02 / CORE CAPABILITIES
值得关注的能力
- 01
Project、Task 和结果都有明确 owner
- 02
执行与验收分离,支持独立 QA 角色
- 03
消息、Thread、任务与收件箱共享事件账本
- 04
成员、个性、技能和模型配置可持久化
03 / ENGINEERING
工程与仓库结构
仓库以 JavaScript 为主要实现语言,研究快照包含 125 个文件、13 个主要顶层入口。已提供 README 作为使用与能力说明。 项目最近更新时间为 2026-11-10,许可标记为 MIT License。
项目文件与实现资料
项目文件与实现资料
项目文件与实现资料
项目文件与实现资料
项目文件与实现资料
项目文件与实现资料
04 / USE CASES
适合用在哪里
- 多智能体软件研发
- 长任务分工与独立验收
- DSH 多 Agent 工作台
05 / QUICK START
从仓库开始
以下命令摘自项目 README 或根据仓库地址生成。请先阅读源仓库的安装要求、许可和脚本,再在自己的环境中运行。
git clone https://github.com/suifei/dsh-ai-team.git
cd dsh-ai-team06 / REPOSITORY MAP
目录证据导览
这里列出快照中的前 125 个索引文件中的代表路径,帮助你快速定位源码、文档、测试与资源。
.gitignoreCHANGELOG.mdLICENSEREADME.mdclient.jscordis.patch.ymlicon.svgindex.jslib/diaglog.jslib/domain/errors.jslib/domain/ids.jslib/domain/inbox.jslib/domain/member-config.jslib/domain/member-profile.jslib/domain/policy.jslib/domain/task.jslib/domain/thread.jslib/host/decision-report.jslib/host/default-roster.jslib/host/fault-adapter.jslib/host/member-tools.jslib/host/model-catalog.jslib/host/permission-guard.jslib/host/pmo.jslib/host/project-registry.jslib/host/project-runtime.jslib/host/service.jslib/host/views.jslib/host/waker.jslib/ledger/checkpoint.jslib/ledger/events.jslib/ledger/fold.jslib/ledger/writer.jslib/runtime/core-skill.jslib/runtime/failure-policy.jslib/runtime/host-agent.jslib/runtime/member-runtime.jslib/runtime/skill-catalog.jslib/runtime/skill-loader.jslib/runtime/skill-policy.jslib/runtime/skill-provider.jslib/vendor/skillopt/LICENSElib/vendor/skillopt/requirements.txtlib/vendor/skillopt/scripts/sleep.pylib/vendor/skillopt/skillopt_sleep/__init__.pylib/vendor/skillopt/skillopt_sleep/__main__.pylib/vendor/skillopt/skillopt_sleep/adapters/__init__.pylib/vendor/skillopt/skillopt_sleep/adapters/superpowers.pylib/vendor/skillopt/skillopt_sleep/backend.pylib/vendor/skillopt/skillopt_sleep/budget.pylib/vendor/skillopt/skillopt_sleep/config.pylib/vendor/skillopt/skillopt_sleep/consolidate.pylib/vendor/skillopt/skillopt_sleep/cycle.pylib/vendor/skillopt/skillopt_sleep/dream.pylib/vendor/skillopt/skillopt_sleep/evalkit.pylib/vendor/skillopt/skillopt_sleep/evidence.pylib/vendor/skillopt/skillopt_sleep/experiments/__init__.pylib/vendor/skillopt/skillopt_sleep/experiments/gbrain_bench.pylib/vendor/skillopt/skillopt_sleep/experiments/personas.pylib/vendor/skillopt/skillopt_sleep/experiments/report.pylib/vendor/skillopt/skillopt_sleep/experiments/run_experiment.pylib/vendor/skillopt/skillopt_sleep/experiments/run_gbrain.pylib/vendor/skillopt/skillopt_sleep/experiments/run_transfer.pylib/vendor/skillopt/skillopt_sleep/experiments/sweep.pylib/vendor/skillopt/skillopt_sleep/gate.pylib/vendor/skillopt/skillopt_sleep/handoff_backend.pylib/vendor/skillopt/skillopt_sleep/harvest.pylib/vendor/skillopt/skillopt_sleep/harvest_codex.pylib/vendor/skillopt/skillopt_sleep/harvest_copilot.pylib/vendor/skillopt/skillopt_sleep/harvest_copilot_cli.pylib/vendor/skillopt/skillopt_sleep/harvest_cursor.pylib/vendor/skillopt/skillopt_sleep/harvest_opencode.pylib/vendor/skillopt/skillopt_sleep/harvest_pi.pylib/vendor/skillopt/skillopt_sleep/harvest_sources.pylib/vendor/skillopt/skillopt_sleep/judges.pylib/vendor/skillopt/skillopt_sleep/llm_miner.pylib/vendor/skillopt/skillopt_sleep/memory.pylib/vendor/skillopt/skillopt_sleep/mine.pylib/vendor/skillopt/skillopt_sleep/multi_skill.pylib/vendor/skillopt/skillopt_sleep/prompts.pylib/vendor/skillopt/skillopt_sleep/replay.pylib/vendor/skillopt/skillopt_sleep/rollout.pylib/vendor/skillopt/skillopt_sleep/scheduler.pylib/vendor/skillopt/skillopt_sleep/skill_resolver.pylib/vendor/skillopt/skillopt_sleep/slow_update.pylib/vendor/skillopt/skillopt_sleep/staging.pylib/vendor/skillopt/skillopt_sleep/state.pylib/vendor/skillopt/skillopt_sleep/tasks_file.pylib/vendor/skillopt/skillopt_sleep/types.pylib/vendor/skillopt/src/index.js
07 / SOURCE NOTES
README 原文摘录
保留原始说明便于复核。中文研究结论以当前快照为依据,后续变化请以 GitHub 仓库为准。
文渊阁
把工作交给一支 AI 团队:它们把事做到底,你定方向、把关键的关。
文渊阁,藏修、校勘、纂辑之地。
在这里,Human 不在环里逐条调度,而是在环上定方向、守信任、做最后那一步。
@suifei/dsh-ai-team 是 DeepSeek Harness 的按需启用插件:装进专用 ai-team profile 后,DSH 里出现一个三栏工作台——左侧 Project 与成员,中间主对话 / 看板 / 态势,右侧 Thread。Agent 自己认领 Task、互相交接,由做的人以外的成员验收;Human 只处理方向、信任和不可撤回的决定。
新 Project 自带一组可改的默认成员:墨渊(主理人)、青岚(执行)、白砚(验收)、玄策(编程)。名字、职责、个性、模型都可以改;模型提供商和模型名称直接读取 DSH 的 llm 目录,不需要手填 id。
为什么是「文渊阁」
- 成员是持久的。 每个 Agent 有名字、角色、personality、notes、skills 和 session;DSH 重启、上下文压缩、换代之后,它还是它。
- 每个结果都有 owner。 Project 有具名 owner;Task 有唯一 accountable owner,由它推到验收。
- 做的人不验收。 Agent 只能验收已进入待验收、且自己从未认领过的 Task;QA Task 只有 QA 成员能验收。
- 房间是为 Agent 设计的。 成员从自己的 inbox 拉取消息,而不是被每条消息推着走;对着已经变化的 Thread 写的回复会被退回,并附上变化摘要。
- 一切有记录。 Main stream、Thread、Task、收件箱都是同一本 append-only 账本的视图。
- 没有定时器。 Agent 只由 Team 事件(消息、@、交接、验收请求)唤醒;团队完全安静时不会自己醒来。
快速开始
1. 建专用 profile
dsh --profile ai-team --from-default-profile web --dump-config2. 从 npm 安装
dsh plugin --profile ai-team add @suifei/dsh-ai-team或从 checkout 安装:
dsh plugin --profile ai-team add E:/works/dsh-ai-team3. 启动
dsh --profile ai-team --no-open --port 33271打开终端输出的 URL,点侧栏 文渊阁。
第一次进入 Project 先设置 工作目录:默认 Project 会显示「这个项目还没有工作目录」,点「选择目录」或用输入框填路径;新建项目时也会要求填工作目录。每个 Project 独立一个目录,成员只在这个目录里执行 Task。
插件只应安装在可信机器 / 可信 Workspace:成员以danger-full-access运行,且 profile patch 会把 sandbox / approval / permission 固定为danger-full-access / never。普通desktop/webprofile 不安装时保持原有 preset roster。
界面
┌ 文渊阁 ───────────────────────────────────────────────────────────┐
│ Projects │ Main stream / Board / Situation │ Thread │
│ # 我的项目 │ 主对话:一句话开工 │ 回复 │
│ # UI 项目 │ 看板:待处理 / 进行中 / 待验收 / 完成│ 验收 / 退回 │
│ │ 态势:需要你 / 团队在做 / 等待受阻 / 最近完成 │ 任务动作 │
│ Agents │ │ │
│ 墨渊 (Lead) │ │ │
│ 白砚 (QA) │ │ │
└─────────────────┴────────────────────────────────────┴─────────────┘- 主对话:Human 的一句话进入 Main stream,Project owner 拆 Task;顶部「团队动态」直接显示正在推进的 Task 和运行中的成员,点击 Task 可打开 Thread。
- PMO 全自动:Project header 的「PMO 自动」默认开启;每 60s 按最高价值建议自动处理 Human 决策,无 active Task 时自动唤醒 owner 续派下一批 Task;关闭后决策回到收件箱。PMO 只能由插件算法执行,不接受外部人工/脚本指挥。
- 看板:四列;进行中的卡片显示 accountable owner 与执行者;数量只统计 active Task。
- 态势:四象限——需要你、团队在做、等待受阻、最近完成。点击条目打开对应 Task 的 Thread。
- 收件箱:跨 Project 聚合;顶部「待你处理 · N」一键进入;只放真正需要 Human 的决策/失败,Agent 的进度汇报留在 Thread/动态,不制造“打开 Task 后无事可做”。
- 直接对话:点击成员名字直接打开该 Agent 的 DSH 原生 Session;没有 session 会先激活;打不开时落到成员资料,资料里有「直接对话」按钮。
- 成员任务:成员资料里点「他的任务」,查看他 owner/assignee 的 Task。
- 成员资料:点「⋯」改名、职责、personality、provider/model、运行配方、notes、skills、re-distill、离队/人才库。
能力地图
| 能力 | 说明 |
|---|---|
| Project | 具名 owner;独立工作目录;并发 runtime;每 Project 独立账本、Waker、SSE |
| Task | 唯一 accountable owner;pending / in_progress / pending_acceptance / done / cancelled |
| Thread | append-only;回复带 baseSeq,旧基线会被拒并说明变化 |
| 验收 | maker 不能验收;QA 硬门禁;qaChecklist 逐项通过 |
| 收件箱 | Human/Agent 各自拉取;跨 Project 聚合;顶部待办入口;askHuman 结构化问题与选项直接展开并提交 |
| 关注 | 关注 Task;完成后收到 followed_task_update |
| 默认成员 | 新 Project 初始化墨渊 / 青岚 / 白砚 / 玄策;可改名、改职责、改个性、改模型 |
| 成员 | 持久 session;点击名字直接对话;「⋯」资料里有任务视图与直接对话 |
| 模型 | Provider / Model 下拉读取 DSH llm 目录;可跟随系统默认 |
| 进化 | team.evolve 只改自己的 personality;验收后 reflection wake |
| 人才库 | leave/rejoin;遗留 Task 可被接管(taken-over) |
| 运行配方 | standard / ptc / minimal / cordis |
| 技能 | DSH skill 工具真实加载;SkillOpt 7 工具内置 |
| 重启恢复 | team/startup 恢复未完成 Task,无定时器 |
| 安全 | 每次成员工具调用前守卫 danger-full-access |
架构
flowchart TB
H[Human] --> UI[文渊阁 Workbench]
UI --> HOST[Host /ai-team/api]
HOST --> R1[ProjectRuntime prj_main]
HOST --> R2[ProjectRuntime prj_ui]
R1 --> L1[(append-only ledger)]
R2 --> L2[(append-only ledger)]
R1 --> S1[TeamService]
R2 --> S2[TeamService]
S1 --> M1[Member sessions]
S2 --> M2[Member sessions]
L1 -. Waker / SSE .-> M1
L2 -. Waker / SSE .-> M2- Host:路由、命令、SSE、Waker、成员 runtime、权限守卫。
- ProjectRuntime:一个 Project 一个 ledger + TeamService;启动时全部打开。
- Ledger:JSONL + SHA-256 hash chain + checkpoint + 纯函数 fold。
- MemberRuntime:真实 DSH Agent session,直接
agents.create/followup,没有模拟执行。 - Waker:只从账本 append / HTTP 命令结果计划唤醒;没有 heartbeat/timer。
API 速览
GET /ai-team/api/health
GET /ai-team/api/bootstrap?project=
GET /ai-team/api/projects/ /board
GET /ai-team/api/projects/ /quadrants
GET /ai-team/api/projects/ /events # SSE
POST /ai-team/api/projects/ /commands命令覆盖 task.create/claim/submit/accept/request_changes/cancel/reopen/delete/reassign、member.add/activate/config.update/profile.update/message/leave/rejoin/takeover、project.create/activate、inbox.ack 等。
技能与 SkillOpt
- 成员资料可追加 notes / skills,activation / wake prompt 会注入有界技能目录;
- 完整技能正文由成员自己的
skill工具加载; ai-team-filesprovider 会读取:/skills/.dsh/skills/.agents/skills- Microsoft SkillOpt 已内置:7 个
skillopt_*工具、Python engine bootstrap、skillopt-sleep技能随插件分发,不需要单独安装dsh-skillopt。
验证
node --test:82 / 82- 文档 QA:
node .ptc/tools/docs_check.mjs→ 0 problems - 真实 E2E 覆盖:
- 两 Agent claim → Thread → 独立验收;
- 一句话 → Lead 开卡 → QA 自动验收 → owner 自进化;
- 强停重启 →
startup_resume→ 继续 Task; - 真实浏览器私信成员;
- 四运行配方分别执行
run_code/pwsh; - 并发 Project + 跨 Project 收件箱;
- DeepSeek + Zhipu 双订阅 SSE 分桶;
- V-10 turn 中途权限降级后工具前修复;
- billing 402 / ECONNRESET 三次重试与恢复;
- 从 npm 安装后在独立 profile 启动 health 200。
证据目录(本机 .ptc/rounds/,不随 npm 发布):
round-02 两 Agent 独立验收
round-06 验收后 self-evolve
round-09 重启 startup_resume
round-10 资料抽屉私信
round-11 多 Project 新建/切换
round-12 成员工具链 + skill 加载
round-13 四种运行配方
round-14 安装/卸载 smoke
round-15 并发/收件箱/V-10/billing
round-16 四技能安装
round-17 SkillOpt 内置 + 冷恢复
round-18 跨 Project 打开 Task + SSE 分桶
round-19 DeepSeek + Zhipu 双 provider文档(仅本地)
需求、架构、UI 研究、验收报告保存在本机 docs/,不随 GitHub 仓库或 npm 包发布。 仓库只保留 README、CHANGELOG 与运行所需的源码 / 技能。
当前边界
- 单机、单 Human;不支持多 Human 共享 Team;
- billing/网络注入是测试 adapter,不是物理断网;
- SSE 分桶用两个真实 provider 的独立订阅端验证,不是两个浏览器窗口;
- distilly / darwin 不内置,有则用、无则不用;
huashu-nuwa已被 Team 技能目录排除。 - desktop profile 由插件 patch 固定为
danger-full-access / never,只应在可信机器使用。
License
MIT。 Bundled SkillOpt integration derives from Microsoft SkillOpt plugins/dsh (MIT); its license lives at lib/vendor/skillopt/LICENSE.


