dsh-myagent(myagent):五條來路、一道門禁的個人 Agent 系統

前言

在 DSH 裏跑智能體,常見做法是:你在 Web GUI 或某個 Session 裏下指令,等它跑完再自己去找產物。定時任務、聊天消息、本地目錄裏丟下的 .md,往往要分別接進不同腳本或手工觸發。myagent 把這個層次收成一套 bundle:多種來源經同一道確定性門禁變成 Ticket,每個 Ticket 在獨立 DSH Session 和目錄裏無人值守執行,結果按「從哪來、回哪去」送回聊天室或文件。

下面按定位、能力、安裝與典型用法說明 liyabgf/dsh-myagent,事實以倉庫 README 與發佈包爲準。

這是什麼

一句話:把你用一句話說清楚的事,無人值守做完,再把結果送回你說話的地方。

目標用戶是一個人、一臺自己的機器,不是團隊多租戶平臺。它假定「能在本機寫文件、能發 HTTP 請求的進程 = 操作者本人」,安全邊界見倉庫 SECURITY.md。裝之前應先讀 SECURITY.md:worker 無 OS 級沙箱,面板與 API 不在宿主統一認證之後。

核心功能

請求怎麼走

定時排期、本地投遞目錄、主 Session 對話、規則、聊天平臺五條來路,經同一道 gate(trigger, settings) 判定爲 accepted、observed 或 ignored,理由固定八種(如 sender_not_allowed、paused、accepted 等),每次判定寫入 Decision,面板可查「爲什麼沒跑」。

放行後生成 Mandate 與 Ticket;Assignment 表示一輪執行,失敗、中斷、等人後再繼續都會留歷史。worker 通過 myagent_report 彙報狀態(progress / waiting / ready / blocked / failed / dropped);結束時在 Ticket 目錄寫 RESULT.md,並送回來源(聊天消息或文件等)。跨進程副作用走持久化 effect 隊列,崩潰後可重試。

架構裁剪自 dsh-superagent-prototype,保留 Source / Trigger / Policy / Decision / Mandate / Ticket / Assignment / Report / Delivery 等概念;門禁是確定性的,不做模型評審。

五條來路(摘要)

來源 觸發方式 說明
cron 排期到點 every / daily / weekly / cron,含時區;漏跑時刻可摺疊
inbox 向目錄丟 *.md 約每 5 秒輪詢;支持 front matter 的 title、scope、attach
session 主 Session 中 myagent_create_ticket 或面板派活 走同一門禁
rule 事件驅動(如 Ticket 結束) then 裏配置 prompt 與 scope
chat Telegram / 飛書消息經橋寫入頻道目錄 憑據不進 myagent 設置,只在橋進程 env

聊天橋在 bridges/telegram/、bridges/lark/;面板「聊天」頁做接入引導(systemd / launchd 單元、env 路徑、頻道健康),不代管橋進程起停。

面板與日常界面

裝好後第一件事:面板在 <你的 DSH Web GUI 地址>/myagent/(與 GUI 同端口子路徑)。側邊欄設置旁會出現「myagent 面板」入口。日常下任務、收結果以 Telegram 或飛書爲主;面板用於查賬與干預。

默認 acceptMode 爲 observe:門禁與 Decision 照常,但不執行、不寫領域數據。確認記錄合理後,再在面板改爲 auto。

API 要求同源 loopback,並帶請求頭 x-myagent-request: 1(詳見 SECURITY.md)。

刻意不做的邊界

  • 不做真沙箱:worker 爲完全訪問;設 executor.sandbox 爲 vm 不會假裝隔離。
  • 不做多用戶權限體系;發送者過濾依賴映射表與文件系統權限。
  • 產物可跨任務複用、手藝可沉澱,README 稱這些默認自動處理,無需逐項批准。

bundle 註冊 worker 專用 preset myagent-worker(去掉會向人提問、審批等易掛起無人值守的工具);主 Session 仍用 profile 默認 preset,額外掛載 myagent 工具與提示詞。

安裝與啓用

在 DSH 宿主中安裝 bundle(命令以 README 爲準):

plugin_manager install_bundle  target=github:liyabgf/dsh-myagent

裝進當前 profile 後啓用 myagent 插件即可;路徑類配置有默認值,不必先改 profile:

配置項 默認 說明
stateDir <DSH_HOME>/state/myagent 數據庫與鎖;修改會重掛插件
workRoot <stateDir>/work 各 Ticket 工作目錄根
inboxDir <stateDir>/inbox 本地投遞目錄
mainSessionId myagent-main 前臺主 Session
promptMaxChars 100000 提示詞覆蓋上限

package.json 標明許可證 MIT,當前發佈版本 0.14.3;引擎要求 Node ^22.19.0 || >=24.0.0,DSH ^0.2.1-alpha.3 等 peer 依賴以包內 engines / peerDependencies 爲準。

啓用後可在日誌中查看面板完整 URL,或訪問 /myagent/api/state 的 health 排查問題。

典型用法

1. 先觀察門禁,再自動執行

  1. 安裝並啓用插件,保持默認 observe。
  2. 打開 http://<DSH Web GUI>/myagent/,查看 Decision 與來路是否符合預期。
  3. 將 acceptMode 改爲 auto,再發真實任務。

2. 本地 inbox 投遞

向 inboxDir(默認 <stateDir>/inbox)放入 .md,例如:

---
title: 本週競品動態
scope: 只讀 ~/notes,產物寫在本目錄
attach: /abs/last-week.csv
---
整理這三家的更新,產出 digest.md 和 table.csv。

輪詢接手後,文件會移到 accepted/、observed/ 或 rejected/(拒絕原因寫在文件頭)。

3. 聊天接入(Telegram / 飛書)

在面板「聊天」頁按引導配置橋的環境變量與系統服務;消息寫入頻道目錄後作爲 chat 來源進入門禁。未映射發送者的消息會保留,映射補齊後由後續掃描放行。在聊天裏回覆機器人報告並追問時,系統可把追問與已完成任務歸到同一工作上下文(門禁放行後處理)。

4. 主 Session 派活

在主 Session 調用 myagent_create_ticket,或在面板「派活」,與 inbox、cron 一樣過同一門禁。

適用場景與注意

適合:個人單機、希望用聊天室下指令並無人值守收結果;需要 cron + 目錄投遞 + 規則聯動;願意用面板做監督而非日常主界面。

不適合:需要強隔離多租戶、或把憑據寫進面板 JSON 的團隊平臺場景。

安全與權限:插件以當前 DSH 進程權限運行;worker 無沙箱。安裝前請閱讀源碼與 MIT 許可證,並閱讀 SECURITY.md。社區目錄 SkillHub 與 DeepSeek / 幻方無官方從屬關係,屬 DSH 生態「一切皆插件」下的第三方 bundle。

結尾

myagent 把「多條來路 → 一道門禁 → 獨立 Session 執行 → 按路返回」收進一個 DSH bundle,默認先 observe 再 auto,聊天優先、面板查賬。若要試用,用官方 plugin_manager install_bundle 安裝,從 /myagent/ 面板與 SECURITY.md 開始即可。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜