‹ BackHN Continuity

Thread

DeepSeek Harness Desktop for macOS and Windows

415 points · 223 comments · Kuyawa

  1. ssivark · · focus · HN ↗
    This page doesn't emphasize the cordis architecture [1], but that's the most exciting thing about this -- not just yet another harness. It has the potential to make this into something like the emacs of harnesses! I think this might be particularly potent for long-running agents.

    [1] <a href="https:&#x2F;&#x2F;arxiv.org&#x2F;abs&#x2F;2608.25512" rel="nofollow">https:&#x2F;&#x2F;arxiv.org&#x2F;abs&#x2F;2608.25512

    1. evanjrowley · · focus · HN ↗
      &gt;emacs of harnesses!

      Would you be interested in a self-modifying harness written in Common Lisp? If so, then please check out Autolith: <a href="https:&#x2F;&#x2F;github.com&#x2F;lambda-symbolics&#x2F;autolith&#x2F;" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;lambda-symbolics&#x2F;autolith&#x2F;

      In my time using it with GLM 5.2, I&#x27;ve observed it modify itself to disassemble binaries in search of answers - without me needing to ask it to do so. Very powerful stuff. Here&#x27;s what it looked like:

        ◇ reasoning summary
          │ The 200MB binary grep with regex backtracking is too slow. Let me write the strings out first (using grep -a with simple fixed patterns is fine; regex with .{0,80} on binary is slow). Better: use SBCL to do
          │ a fast binary search, or use tr to split null-separated strings then grep fixed strings. Let me use a quick approach: grep -ao with fixed patterns only (no regex), which was fast before.
          │
          │ To extract context, I can use SBCL to load the file into memory (206MB is fine) and search for occurrences with bounded context. Let me do it in a Lisp worker.
        
        ▸ lisp.eval
          (lisp.eval :form &quot;(with-open-file (in \&quot;&#x2F;nix&#x2F;store&#x2F;g7b3p8ypxmdycry9wilil8mwl084kplw-antigravity-cli-1.1.19&#x2F;bin&#x2F;agy\&quot; :element-type &#x27;(unsigned-byte 8))
            (let* ((data (make-array (file-length in) :element-type &#x27;(unsigned-byte 8)))
                   (_ (read-sequence data in))
                   (haystack (sb-ext:octets-to-string data :external-format :latin-1)))
              (flet ((find-all (needle)
                       (let ((out &#x27;()) (start 0))
                         (loop for pos = (search needle haystack :start2 start)
                               while pos do (push pos out) (setf start (+ pos (length needle))))
          … +10 more lines
        
          │ (with-open-file (in &quot;&#x2F;nix&#x2F;store&#x2F;g7b3p8ypxmdycry9wilil8mwl084kplw-antigravity-cli-1.1.19&#x2F;bin&#x2F;agy&quot; :element-type &#x27;(unsigned-byte 8))
          │   (let* ((data (make-array (file-length in) :element-type &#x27;(unsigned-byte 8)))
          │          (_ (read-sequence data in))
          │          (haystack (sb-ext:octets-to-string data :external-format :latin-1)))
          │     (flet ((find-all (needle)
          │              (let ((out &#x27;()) (start 0))
          │                (loop for pos = (search needle haystack :start2 start)
          │                      while pos do (push pos out) (setf start (+ pos (length needle))))
          │ … +9 more lines
        
         lisp.eval  cpu 0.205s · real 4.018s
          │ Output:
          │ settings.json positions: (89311959 90892289 90918553 90945997 90985371 91164238
          │                           91164426 91171707 91275241 91297838 91299802 91299923
          │                           91629274 96365298 96370345 96398990 96405347 96406738
          │                           96414968 96419796 96426018 96429189)
          │ --- 89311959
          │ oughDependency: NestedType: OutputType: Deprecated: AllowAlias: Annotation: SourceFile: rsa-sha2-512rsa-sha2-256hmac-sha1-96ssh-userauthkey exchangedirect-tcpipForwardAgentGatewayPortsTCPKeepAlivedefault no…
          │ --- 90892289
          │ ks=%v)conversation file not found in source directory: %sfailed to create cache directory for conv cache: %vBalanced speed and reasoning quality for most tasksPrepared switch to default agent (will %s on ex…
          │ --- 90918553
          │ on-interface type passed to Type.Implementsreflect.Value.Slice: string slice index out of boundsUse &#x2F;feedback to share your experience with the team.Transition failed: ForkConversation returned empty IDpers…
          │ --- 90945997
          … +14 more lines
        
        ◇ reasoning summary
          │ The binary confirms:
          │ - modelProvider in settings.json selects the Gemini API backend with GEMINI_API_KEY.
          │ - There&#x27;s a regex ^(?:gemini-api:|blade:|evergreen:|beyond-api:)(?:.*?&#x2F;models&#x2F;(.+)|(?:.*&#x2F;)?([^&#x2F;]+))$ — model references with provider prefixes.
          │ - &quot;No title command configured in settings.json. Please add a &quot;title&quot; block.&quot; — settings keys.
          │
          │ Now I need to find the settings struct JSON tags for the model field. Let me search for json:&quot;model&quot; again with wider context, and also for the string &quot;title&quot; block and other settings-related keys like
          │ &quot;theme&quot;.
      1. kgwgk · · focus · HN ↗
        Interesting, I see it was announced here some time ago but I missed it: <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=49376197">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=49376197

        (The name sounds a bit like autolytic, evoking self-harm. Which may be appropriate after all.)

      2. ssivark · · focus · HN ↗
        Exciting -- looking forward to trying it out!
Open on Hacker News to reply ↗

Unofficial Hacker News client; not affiliated with Y Combinator.