# dsh-teambition 中文说明 [English](README.md) | 中文 **把钉钉 Teambition 接进 DeepSeek Harness 的侧边栏。** 项目、任务列表、卡片都能在 DSH 里直接看、 直接操作,选中任意一张卡片点「执行」,就会在你指定的 DSH 工作区里开一个会话,带着这张卡片的信息 开始干活——不用再在两个窗口之间来回切换。 - 仓库: - 当前发布:`v0.1`(`0.1.0`),开发主干 `main` 已到 `0.7.1` - 许可证:Apache-2.0 ## 它解决什么问题 平时在 DSH 里写代码、跑 Agent,而任务和缺陷记在 Teambition 上:看一条需求要切窗口,复制卡片 内容还要手工整理。这个插件把 Teambition 做成 DSH 的一个面板: 1. 左侧边栏点「Teambition」,中间整页打开看板,空间不浪费; 2. 选项目、选任务列表,按看板列看卡片; 3. 点某张卡片「执行」,插件在绑定的工作区里创建会话,把卡片标题、所属项目、链接、更新时间 和备注正文作为初始提示词提交,然后自动切到那个会话。 「哪张卡片在哪个项目里执行」这件事是可配置的:卡片单独绑定优先,其次是项目默认工作区,最后是 面板级默认工作区;不给卡片绑定时,就按后两级执行。 ## 界面入口 - **侧边栏行**:挂在官方 `sidebar.panellist` 座位上,位置在「插件 / 自动化任务」之后。 - **中栏页面**:挂在官方 `main` 座位上,顶部是「任务 / 看板 切换、项目 / 任务列表 / 刷新 / 设置」。 - **任务列表(默认视图,可在设置里改成看板)**:贴近 Teambition 任务模块的表格——任务编号、标题、执行者头像与姓名、 截止时间(逾期标红)、看板列、更新时间;工具栏支持搜索、按任务列表 / 看板列 / 执行者分组、 按状态筛选、按更新时间 / 创建时间 / 截止时间 / 优先级排序;点任意一行打开任务详情页: 两列属性(状态、执行者、创建者、参与者、优先级、故事点、开始 / 截止时间、看板列、任务列表、 任务类型、创建 / 更新时间、附件)、备注正文、只读子任务、动态、自定义字段,底部同样能执行卡片、 完成卡片、改绑执行工作区。 - **看板区**:左侧是 Teambition 网页板上的「视图」栏(如「所有任务」「缺陷」「我执行的」 「我创建的」),选中视图决定看板列:工作流视图按工作流状态分列(就是 Teambition 任务模块的 样子),阶段视图按看板阶段分列。每个列头都有「+」,点一下就用该列预填新建表单;卡片上有执行 工作区标记,以及「执行」「完成」「在 Teambition 打开」「绑定执行工作区」。 已完成的卡片标题前有绿色对勾、标题带删除线。卡片可以直接拖到另一列完成移动:拖到工作流状态列 就改状态,拖到阶段列就改看板列。 - **新建卡片**:面板底部表单,可填标题、备注(可选)和看板列。 - **任务详情页**:从看板卡片或任务列表行打开,贴近 Teambition 任务模块——属性、备注、子任务、 动态、自定义字段,底部保留执行 / 完成 / 绑定工作区 / 外链;Esc、右上 ✕ 或点遮罩关闭。 - **设置视图**:Cookie(保存 / 清除)、诊断连接、operator id、接口地址、默认视图(任务列表 / 看板)、默认执行工作区、按项目的工作区绑定表。 ## 功能 - 任务模块:任务表格视图(编号、标题、执行者、截止、看板列、更新时间)+ 搜索 / 分组 / 筛选 / 排序 + 任务详情页;视图与工具栏设置记在 `localStorage`,下次打开自动恢复。 - 任务列表筛选:项目有多个任务列表时,工具栏多一个「任务列表」下拉,可只看某一个列表;切项目时 自动回到「全部任务列表」。 - 默认视图:设置里可选任务列表或看板,打开面板、切换项目都先进入这个视图,看板用户不必每次再点。 - 保存的视图与工作流看板:看板左侧列出项目在 Teambition 里保存的视图,并按项目记住选择; 工作流视图按工作流状态分列(任务模块的样子),阶段视图保持看板阶段列;「我执行的」「我创建的」 视图会按执行者 / 创建者过滤卡片,每一列都能「+」快速新建卡片。 - 卡片拖拽:在看板上把卡片拖到另一列即可移动——工作流状态列改状态,阶段列改看板列;悬停的列会 高亮,执行中 / 提交中的卡片不可拖动。 - 项目与任务列表两级切换;多任务列表的项目按任务列表分组展示,避免几十列同名看板列把卡片摊薄, 选择结果记在 `localStorage`,下次打开自动恢复。 - 保留看板视图:切到「看板」tab 就是原来的分列卡片,新建卡片与拖动列都照旧。 - 卡片操作:在 DSH 中执行、完成卡片或推进到下一个未完成的工作流状态、在 Teambition 打开、 绑定执行工作区。已完成卡片带对勾:看板卡片标题前绿色 ✓ + 删除线,任务列表行内「✓ 已完成」徽标, 任务详情页标题前 ✓ 且属性首行显示「状态」。 - 工作区绑定:卡片 > 项目 > 面板默认,三级优先级,由 Host 解析后下发,浏览器半区不需要 完整绑定表。 - 诊断:对 6 个候选端点逐个探测,把每一步的 HTTP 状态与结论显示在设置视图,便于排查 Cookie 失效或接口变动。 - 模型可见工具 `teambition`:会话里也能列项目、读项目详情、新建卡片、移动卡片、记录工作区绑定。 - 中英双语界面,跟随 DSH 的语言与深浅主题。 ## 快速上手 1. 在浏览器登录 ,按 F12 打开开发者工具 → Network, 刷新页面,随便点一个请求,复制它的 **Cookie 请求头**(整行,不是网址)。 2. DSH 侧边栏 →「Teambition」→「设置」→ 把 Cookie 粘进文本框 →「保存 Cookie」→ 「诊断连接」,结论显示「Cookie 可用」就通了。 3. 回到看板,在顶部选项目;项目有多个任务列表时再选任务列表(默认「全部任务列表」,按组展示)。 4. 在设置里选一个「默认执行工作区」,或者给某个项目 / 某张卡片单独绑定工作区。 5. 点卡片上的「执行」→ 插件在该工作区新建会话并提交卡片信息,随后自动打开会话。 > Cookie 会过期。失效时卡片区与诊断结论会提示 `HTTP 401 AccessTokenMissing`,重新复制一次 > Cookie 保存即可。 ## 安装 `@yeezone/dsh-client-ui-teambition` 是双半区 cordis 插件包:node 半区(`exports "."`)跑在宿主 进程里,提供 `POST /teambition/*`;浏览器半区(`exports "./client"`)由 GUI 以 `/plugins/@yeezone/dsh-client-ui-teambition/client.js` 加载。 ```sh git clone https://github.com/Yeezone/dsh-teambition.git cd dsh-teambition pnpm install --frozen-lockfile pnpm run build dsh plugin --profile add link:$PWD ``` `cordis.patch.yml` 会插入 `ui-teambition` 行,profile 启动时两个半区一起挂载。**必须完整退出并 重新打开应用**:只有组合里出现新行,浏览器半区才会加载;之后改客户端代码只需刷新页面。 如果 profile 由打包应用托管(桌面版的 `desktop` profile),CLI 会拒绝写入:在 GUI 的「插件」页 安装,或手动把依赖和 `dsh.profile.bundles` 行写进该 profile 的 `package.json`,再重启应用。 ## 数据与隐私 - Host 状态保存在 `$DSH_HOME/teambition/config.json`(权限 `0600`),内容包含 Cookie、operator id、接口地址、工作区绑定、最近一次诊断与最近项目列表;写入使用临时文件 + 原子替换。 - 浏览器半区只拿到 `configured` 与四位 `cookieTail`,Cookie 本身不跨越 Host / 浏览器边界, 也不会进入模型可见输出。 - 远端读取走 Teambition 网页自身的 REST 接口 + 候选路径 + `diagnose` 探测,而不是硬编码假设; 响应预览脱敏后才进入设置视图。 - 插件只在用户主动点击「新建 / 换列 / 改状态」时写回 Teambition;执行卡片只创建本地 DSH 会话。 ## 已知限制 - 使用的是 Teambition 网页端的内部 REST 接口(属于浏览器登录态,不是官方开放 API), 官方可能随时调整。 - 工作流状态推送依赖对应端点;没有工作流状态的项目只能「移动到看板列」,不能按状态推进。 - 单个项目最多读取 40 页 × 200 张卡片,超出部分不显示。 - 没有后台轮询或 webhook,进入面板或点「刷新」时才拉取最新数据。 - 跨项目移动卡片尚未实现(接口路径未验证)。 ## 版本与分支 - `main` 是开发主干;`v0.1` 是当前冻结的发布线(`0.1.x`)。 - 新需求从 `main` 切 `feat/`,修复切 `fix/`;每次落 `main` 都要升 `package.json` 的 `version` 并在 `CHANGELOG.md` 补条目,PR 模板里逐条勾选。 - 发布线只接受 cherry-pick 的修复,并以 patch tag 发布;`main` CI 绿之后才打 annotated tag 与 GitHub Release。详见 [CONTRIBUTING.md](CONTRIBUTING.md)。 ## 目录结构 - `src/core/` - 共享词汇、wire 契约(`protocol.ts`)、Teambition 类型 / 端点 / 映射 / 脱敏。 - `src/host/` - 配置存储、Teambition REST 服务、HTTP 路由、agent 工具。 - `src/client/` - 中英文词典、API 客户端、面板、侧边栏注册。 - `shared/` - 从 dsh-web 仓库随包携带的构建预设(tsdown 客户端打包 + 平台种子表)。 - `tests/` - 覆盖两个半区的 vitest 套件。 ## 测试 ```sh pnpm run typecheck pnpm test pnpm run build ``` ## 致谢与许可 Apache-2.0。Teambition 客户端与配置代码改编自 [dsh-web](https://github.com/zhu1090093659/dsh-web) 的 `dsh-task-board` 包(Apache-2.0), 上游归属与复用范围见 [NOTICE](NOTICE)。本插件不由该仓库作者维护。