8.1 KiB
8.1 KiB
SETUP
给负责与操作者一起部署 dsh-superagent 的 agent 看的说明。如果你是操作者本人,让你的编码 agent 读这个文件并按它执行。
部署流程怎么走
部署遵循 docs/000-理念.md:尽量少的占用操作者的注意力。
- 问第一个问题之前,只读这个文件和
docs/000-理念.md,并把下面的探测跑一遍。在所有答案收齐之前,不要读其它任何东西。 - 一条消息只问一个问题,只问一件事。等回答到了再问下一个。探测已经能回答的问题就跳过。
- 每条消息不超过 300 词,除非操作者要求更多。每个问题给出一个操作者可以一句话同意的推荐答案,并一句话说明它为什么重要。
- 问的时候不要动手。收齐所有答案后,发一条包含完整计划的消息,等操作者确认了才执行。
- 绝不在聊天里索要密钥。需要操作者动手的步骤(建账号、登录 CLI、填应用密钥等),放进一条消息里,附上要在他自己终端里运行的准确命令。
- 在提问中传递理念,一次一句话,不要开讲座。
1. 探测
在本仓库里跑一次,结果自己掌握:
node -v; pnpm -v; git --version; tmux -V; python3 --version; gh --version | head -1; dsh --version
gh api user --jq .login
command -v lark-cli
grep -l -E 'id: dsh-superagent\\b' "${DSH_HOME:-$HOME/.dsh}"/profiles/*/cordis.patch.yml 2>/dev/null
- 前置条件:Node.js 22.19+ 或 24+、pnpm、git 2.32+、tmux、Python 3.8+、GitHub CLI 2.48+,以及 DSH 版本在
package.json的engines.dsh范围内。缺哪个就把它变成计划里的一项,而不是一个问题。DSH 还需要一个模型 provider;如果操作者从没配过模型的 DSH,配置它属于操作者的步骤。 - 操作者登录名:
gh api user的结果是操作者自己的 GitHub 登录名,作为第 5 问的推荐值。 - 已有 profile:某个 profile 里已有
dsh-superagent条目,说明是早前的部署:问是继续它、保留它的配置,并去读docs/006-部署.md的升级一节。
2. 提问
按这个顺序问,一条消息一个,跟着 docs/001-领域模型.md 的工作流走:先问 Trigger 从哪来,再问谁可以在那里提工作,最后问 Executor 拿到工单后要做什么。推荐值放在方括号里。
来源:请求从哪里来。
- Sources。 agent 只从 GitHub 接收请求,还是也从飞书聊天接?[只 GitHub,除非团队在飞书里办公。]
- 仓库。 agent 要操作的 github.com 仓库是哪个,格式
owner/name? - agent 账号。 agent 以哪个 GitHub 用户身份行动?[专用账号,绝不用操作者自己的:agent 写出的所有东西都挂在这个名下。] 账号可以还不存在;建它属于操作者的步骤。
- 用飞书时:哪些聊天,按名字说。agent 在 bot 配置好之后查它们的 id。
策略:谁可以派活。
- GitHub 上。 哪些 GitHub 登录名可以要求 agent 干活?[只
<操作者>:agent 的工作对操作者负责。] - 用飞书时:哪些聊天可以派活?[默认只操作者所在的聊天,名单与成员同步。]
执行:agent 拿到工单做什么。
- 检出。 每个工单从哪个本地 clone 检出仓库?[在
~/src/<name>下新建 clone。] - 提交署名。 agent 的 commit 作者写谁?[agent 账号,让它的工作看得出是它干的。] 另一个身份(比如操作者的)写进 Delivery requirements 提示词一节。
- 自动合并。 agent 自己的 PR 就绪且批准后,要不要开自动合并?[不要:人的合并是对的,就保持人合并,直到 agent 的 PR 长期都对。] agent 账号自己永远不开自动合并,所以选「要」就需要另一个有合并权限账号的 GitHub CLI:让操作者在操作者步骤里登录它,并在 Delivery requirements 里点名。选「不要」就把 Delivery requirements 里的自动合并段落删掉。
不要问有合理默认值的项;把它们列进计划:
- profile 名
superagent:一份从 DSH Web profile 复制出来、与操作者工作用的 profile 分开的副本,所以它重启时不会关掉操作者的会话;端口3082;状态目录<home>/.dsh/state/superagent,用绝对路径; - 每小时一次检查,从操作者自己的 profile 发起,dsh-superagent 没在跑时把它修起来;
- 分支前缀
agent/; - 接受模式
observe:记录主动工作但不执行;默认规则与默认提示词各节; - 用飞书时:bot 只读 @ 提及,私聊开关打开。
3. 计划
发一条消息,不超过 300 词:将安装什么、哪些账号和 CLI、要保存哪些设置、操作者步骤是什么、默认值是什么。要一次确认。
4. 执行
- 操作者步骤先行。 读
docs/006-部署.md的 Accounts 一节,自己写好 CLI wrapper,然后发一条消息列出只有操作者能做的事:建 agent 账号;开了自动合并的话,用有权开它的账号登录一个 CLI;以 agent 账号接受仓库邀请;每个 wrapper 跑auth login;用飞书的话,创建并发布 bot 应用,带着它的密钥跑config init。等操作者说做完了,再用<wrapper> api user --jq .login逐个核对登录。 - 安装并启动。 按
docs/006-部署.md的 Install、Machine configuration、Start and stop 三节做。跳过本仓库的git clone:你就在它的 checkout 里。第 7 问要新 clone 的,去 clone 第 2 问的那个仓库。已有 profile 时,跳过dsh superagent --from-default-profile命令——它会替换 profile 并删掉它的cordis.patch.yml;改为编辑那个文件,不要替换。 - 保存设置。 按
docs/006-部署.md的 Management API 保存,顺序:githubSource、(如用)feishuSource、policy块。然后按 Delivery requirements 存提示词(第 8、9 问的答案)。返回restarting: true的保存会重启 dsh-superagent:等scripts/dsh-superagent status不再以 1 退出再发下一个请求,并从GET settings重新读 revision。 - 失败。 被拒的保存会在响应体里点名 setup 问题。去
docs/006-部署.md的 Troubleshooting 表里找它,修好再继续。只有你自己修不了的才问操作者。
5. 验证与交接
scripts/dsh-superagent status 以 0 退出且没有 setup 问题。如果你运行在操作者自己的 DSH profile 里,用你的日程工具建 docs/006-部署.md Hourly check 一节里的那个每小时检查;否则把那条 prompt 交给操作者,让他在自己的地方排期。然后发一条消息,不超过 300 词:
- 面板 URL,以及侧边栏里 Superagent 条目是看哪里。
- 怎么试:用允许名单里的账号,在仓库的某个 issue 下评论
@<agent 登录名> <请求>。大约一分钟内,overview 上会出现工单。 - 给操作者的三条规则,来自
docs/000-理念.md的 Responsibility 一节:从小开始、往少噪音调、为 agent 说的话负责。 - 想读更多:
docs/里编号的文档,按顺序读。
Gitea Source 配置要点(本 fork)
替代或并存于 GitHub 的自建 Gitea 来源。设计决策见 GITEA-DESIGN.md,逐提交说明见 CHANGES.md。
- 启用与 sourceId:bundle 的
cordis.patch.yml里插件dsh-superagent-gitea加disabled: false,Source 的sourceId用gitea。 - 凭据:Gitea 1.26 起 API 写路由拒绝 Basic,必须用 token;token 同时是 git push 的密码(凭据 store 同一规则),一个变量全链路。
- 轮询:
pollSeconds默认 60,可选observeIssues/observePulls/observeComments三个附加流。 - bots 名单:Gitea 没有
is_bot字段,防自激靠login名单手工维护。 - git 兼容性:MSYS bash 自带 git 2.56 与 Gitea http/2 协议不兼容(clone 卡死),用 Git for Windows 2.39。
- 看板:Gitea 1.28 之前没有 Projects REST API,卡片同步用仓库内的
scripts/gitea-kanban-sync.mjs直写数据库;约定随 Source 提示词注入(DSH_SUPERAGENT_GITEA_KANBAN)。